以下介紹幾種在S3F9454/9444下驅(qū)動(dòng)蜂鳴器的編程示例,供參考
A.第一種,普通IO高低電平驅(qū)動(dòng)法
;運(yùn)行環(huán)境:S3F9454,Fosc=3.2MHz無(wú)分頻
;P2.0為蜂鳴輸出端口
;本例輸出頻率為4KHZ,即每250US一個(gè)周期,高低電平時(shí)間分別為125US
BEEP:
LDBTCON,#10100011B;看門狗禁用
DI
PUSHR5
PUSHR6
;首先配置P2.0為普通推挽輸出端口
ANDP2CONL,#0FEH
ORP2CONL,#02H
LDR6,#0FAH;R6設(shè)置輸出方波個(gè)數(shù),本例為250個(gè)(計(jì)時(shí)62.5MS)
ONE_BEEP:
LDR5,#27H;R5為頻率發(fā)生計(jì)時(shí)器,本例為近似125US(4KHZ)
XORP2,#01H
_LOOP:
DECR5
JRNZ,_LOOP
DECR6
JRNZ,ONE_BEEP
LDBTCON,#02H;恢復(fù)看門狗運(yùn)行
EI
POPR6
POPR5
RET
;-----------------------------------------------------------
B.利用P2.0配置為T0定時(shí)器匹配輸出方式產(chǎn)生
;注:該方式可用于帶多位數(shù)碼顯示掃描的軟件中,可有效避免因蜂鳴器
;輸出而造成的數(shù)碼顯示抖動(dòng)閃爍
;因定時(shí)器T0被分配作為T0匹配輸出定時(shí)器,所以本例中利用看門狗定時(shí)器
;的實(shí)時(shí)計(jì)時(shí)器BTCNT作為數(shù)碼顯示實(shí)時(shí)掃描計(jì)時(shí)器
;R0為蜂鳴時(shí)間長(zhǎng)短計(jì)時(shí)器,由主調(diào)用程序進(jìn)行予設(shè)置
;運(yùn)行環(huán)境:S3F9454,Fosc=3.2MHZ無(wú)分頻
;P2.0為蜂鳴輸出端口
;本例輸出頻率為4KHZ,即每250US一個(gè)周期,高低電平時(shí)間分別為125US
;-----------------------
BEEP:
DI
PUSHR1
PUSHT0CON
PUSHT0DATA
;在蜂鳴輸出前首先掃描一次數(shù)碼顯示
CALLLED_SCAN
ORP2CONL,#03H;setP2.0asT0matchoutput/every125us
LDT0CON,#10001000B;setT0inputcLOCk=Fosc/8
LDT0DATA,#32H
LDBTCON,#10100011B;DISAbleWatch-dogrun,
;butbtcntclkinputfxx/4096=1.280ms
NEXT_BEEP:
LDR1,#0AH
WAIT_CNT:
ORBTCON,#02H
_WAIT_CNT:
CPBTCNT,#02H
JRULT,_WAIT_CNT
ORBTCON,#02H;清看門狗定時(shí)器
CALLLED_SCAN;每計(jì)時(shí)2.56MS,則轉(zhuǎn)去實(shí)時(shí)掃描一次數(shù)碼顯示
DECR1
JRNZ,WAIT_CNT
DECR0
JRNZ,NEXT_BEEP
LDBTCON,#02H
ANDP2CONL,#0FEH;setT0aspush-pulloutput
ANDP2,#0FEH
POPT0DATA
POPT0CON
POPR1
EI
RET
-
蜂鳴器
+關(guān)注
關(guān)注
12文章
891瀏覽量
45921
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論