汇编怎么实现按一下蜂鸣器一直响,再按一下停止

如题,急用

上面的未免有些复杂了,程序就不给了,提供你个思路如何?设置一个寄存器,里面就装#00H即可,每次按键按下自加一,利用二进制代码末尾的0,1特性,每次自加一之后把寄存器里的数值和#01H做乘法,直接判断处理数值是否为零即可,是则KEY为开,不是则KEY为关。自行设计一段程序脉冲,频率自行考虑。(由于蜂鸣器功率不大,建议1K即可)主程序就做个开关检测,利用子程序调用,开则调用子程序,然后自检测开关按键,相信就那几个机器周期是不碍事的。楼主可以自行试试。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-05
提供一个程序你参考,想要其他功能自己更改吧,呵呵。P1.0端口输出P3.7开关:T5HZ EQU 30HT7HZ EQU 31HT05SA EQU 32HT05SB EQU 33HFLAG BIT 00HSTOP BIT 01HSP1 BIT P3.7 ORG 00H LJMP START ORG 0BH LJMP INT_T0START: MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H SETB ET0 SETB EANSP: JB SP1,NSP LCALL DELY10MS JB SP1,NSP SETB TR0 MOV T5HZ,#00H MOV T7HZ,#00H MOV T05SA,#00H MOV T05SB,#00H CLR FLAG CLR STOP JNB STOP,$ LJMP NSPDELY10MS: MOV R6,#20D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RETINT_T0: INC T05SA MOV A,T05SA CJNE A,#100,NEXT MOV T05SA,#00H INC T05SB MOV A,T05SB CJNE A,#20,NEXT MOV T05SB,#00H JB FLAG,STP CPL FLAG LJMP NEXTSTP: SETB STOP CLR TR0 LJMP DONENEXT: JB FLAG,S5HZ INC T7HZ MOV A,T7HZ CJNE A,#03H,DONE MOV T7HZ,#00H CPL P1.0 LJMP DONES5HZ: INC T5HZ MOV A,T5HZ CJNE A,#04H,DONE MOV T5HZ,#00H CPL P1.0 LJMP DONEDONE: RETI END
第2个回答  2013-12-05
楼上的太复杂了点,不太适合初学者啊1、你没说明蜂鸣器是有源蜂鸣器还是无源蜂鸣器,这两种蜂鸣器的控制是不同的。2、你没说明晶振频率是多少,这样在编写程序的时候关于时间的参数就没法确定。
第3个回答  2013-12-05
程序错啦我写一条被你啦
相似回答