日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用c语言把蜂鸣器封装成函数,C语言蜂鸣器问题

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用c语言把蜂鸣器封装成函数,C语言蜂鸣器问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言蜂鳴器問題

(2012-04-10 04:36:21)

標簽:

蜂鳴器

c語言

雜談

C語言蜂鳴器問題 本帖最后由 mgqw 于 2010-04-13 11:46 編輯

網上查了一些資料,給出了一個很好用的函數控制蜂鳴器,可就是沒有說如何關閉蜂鳴器。

int speaker(unsigned int freq,unsigned int delay)

{ static int flag=0,bit;ipv6 socket編程自己連接可以,兩臺機子連顯示拒絕連接

r /> if(flag==0)

{

flag=1;

iopl(3);

}

outb(0xb6,0x43);

outb((freq & 0xff),0x42);

outb((freq >> 8),0x42);

bit=inb(0x61);

outb(3 | bit,0x61);

usleep(10000*delay);

outb(0xfc | bit,0x61);

}

#include

#include

main()

{

int i;

for(i = 0; i<1; i++)

{

speaker( 2000, 40 );

sleep(2);

}

speaker( 1000, 40 );

}

這個程序如果正常執行完成的話,沒有一點問題。

可是如果在執行過程中按ctl+c中斷程序的話,蜂鳴器就一直打開著,就一直在哪里叫(在哪里中斷退出的就一直保持哪種聲音),能把人煩死。

試著用了speaker( 0, 0 )還是有問題,一直發出 “噠噠噠噠噠噠”的聲音

請問各位大俠如何將蜂鳴器緩存清零,置為初始化安靜狀態阿?

網上找了N久都找不到這方面的資料。 本帖最后由 samlumengjun 于 2010-04-13 11:57 編輯

這個要信號處理, 接收到SIGINT的時候做處理

比如,

void *on_terminate( void )

{

close_speaker();

}

main()

{

signal( SIGINT, terminate );

....

}我是用這個做比喻,不一定是收到SIGINT信號,有可能是程序異常退出的話,那蜂鳴器一直在叫,能把人惡心死,除非重啟機器。

既然可以設置蜂鳴器,就應該有將蜂鳴器復位清零初始化的方法吧。{:3_190:}沒猜錯的話, outb(0xfc |

bit,0x61);

就是關閉用的。

你重新寫個程序執行這個 本帖最后由 mgqw 于 2010-04-13 14:03 編輯

回復 4# smalloc

應該是你猜錯了,我的電腦還是“噠噠噠噠噠噠”想個不停……void Stop( )

{

static int flag=0,bit;

if(flag==0)

{

flag=1;

iopl(3);

}

bit=inb(0x61);

outb(0xfc | bit,0x61);

} 查了下,outb(0xfc ,0x61);

最后2位控制讓不讓發聲。1.臨時解決方案http://www.lnroom.com,重啟后失效

用ROOT執行命令

#rmmod pcspkr

2.永久生效,需要重啟

用ROOT登錄

echo "alias pcspkr off"

>> /etc/modprobe.conf查了下,outb(0xfc

,0x61);

最后2位控制讓不讓發聲。

smalloc 發表于 2010-04-13 14:30

http://bbs2.chinaunix.net/images/common/back.gif

這個可以,試了一下“噠噠噠噠”聲音終于沒有了http://www.4r0y.com/!void Stop( )

{

static int flag=0;

if(flag==0)

{

flag=1;

iopl(3);

}

outb(0xfc ,0x61);

}

分享:

喜歡

0

贈金筆

加載中,請稍候......

評論加載中,請稍候...

發評論

登錄名: 密碼: 找回密碼 注冊記住登錄狀態

昵???稱:

評論并轉載此博文

發評論

以上網友發言只代表其個人觀點,不代表新浪網的觀點或立場。

總結

以上是生活随笔為你收集整理的用c语言把蜂鸣器封装成函数,C语言蜂鸣器问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。