永发信息网

8051单片机的最简单的程序 报警器 用定时器溢出中断做 急~谢谢

答案:2  悬赏:50  手机版
解决时间 2021-02-17 13:28
  • 提问者网友:龅牙恐龙妹
  • 2021-02-17 10:40
用定时器中断做
定时器是16格2进制的
模拟救火车声音,先262HZ,然后350HZ(这个可能不对,就用350HZ做)
急~谢谢
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-02-17 10:48
;350Hz对应溢出时间2857US

TH EQU #0F4H
TL EQU #0D6H
SP BIT P1.0 ;350Hz输出

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP TIME

ORG 0030H

MAIN: MOV SP,#70H
MOV TH0,#TH
MOV TL0,#TL
SETB ET0
SETB TR0
SETB EA
AJMP $

TIME: MOV TH0,#TH
MOV TL0,#TL
JNB SP,T_S1
CLR SP
AJMP T_END
T_S1: SETB SP
T_END: RETI

END
全部回答
  • 1楼网友:轮獄道
  • 2021-02-17 11:24
那为什么要 每隔 5ms 判断一次呢?直接在主函数判断不行吗? void main() { while(flag) { //……继续的内容 } while(1);//这就是不继续的结果,死在这里,不执行任何东西。当然,定时器还是会工作。 } 这还涉及到另一个问题,如果 这个 变量,一会 0,一会 1,一会又 0,一会 又 1,你想咋整啊?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯