单片机刚入门小菜鸡问个问题(很快很快地)

2019-07-15 09:16发布

//简易门铃声音演示实例#include<reg51.h>#include<math.h>//寄存器头文件包含//引脚定义,分别定义按键和蜂鸣器的引脚sbit KEY = P1^7;sbit SOUNDER = P3^0;//全局变量定义,定义定时中断溢出次数unsigned char counter;//主函数void main(void){//IE = 0x82;TMOD = 0x01; //定时器0工作在模式0TH0 = 0xFD; //定时器赋初值TL0 = 0x44;EA = 1; //开总中断ET0 = 1; //开定时器0定时溢出中断SOUNDER = 0;while(1){if(KEY == 0)//判断按键按下{TR0 = 1; //开启定时器while(KEY == 0); //等待按键松开SOUNDER=0;}}}//定时器0的定时中断函数void timer0(void) interrupt 1{SOUNDER = ~SOUNDER;//蜂鸣器输出电平取反counter++;//中断发生次数加1//中断发生次数小于400,发出“叮”的模拟音if(counter < 400){TH0 = 0xFD;TL0 =  0x44;}//中断发生次数大于于400,但是小于800,发出“咚”的模拟音else if (counter < 800) //{TH0 =0xFC;TL0 = 0x18;}else//完成一次门铃发音{TR0 = 0;//关闭定时器counter = 0;//中断次数清0}}程序如上图,运行的时候一直响,感觉根本没进入中断函数,求大神抱抱
QQ截图20171125193541.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
wulinwl
1楼-- · 2019-07-15 20:43
 精彩回答 2  元偷偷看……
6华仔
2楼-- · 2019-07-16 00:41
你的counter定义的类型是unsigned char 范围是0-255;而你counter 却用到了400,800了,肯定出错

一周热门 更多>