AT89S52单片机,程序如下:/*----*/里面那一段,加入之后蜂鸣器就不响了,为什么会这样?
发布网友
发布时间:2022-04-30 00:33
我来回答
共4个回答
热心网友
时间:2023-10-11 03:40
你在主程序中进行了两次初始化
TH0=timer0h;
TL0=timer0l;
这是调整运行主程序到运行中断的那段时间,当你第一次用TH0=timer0h;TL0=timer0l;的时候程序就开始计算,但主程序还在运行,因为中断响应过程需要一定时间,这是程序又运行了第二个TH0=timer0h;TL0=timer0l;又把计算器的值还原了,它又要重新计时,等于没有响应中断程序,当然也不可能输出高低电平的变化使蜂鸣器叫。追问定时器中断的计时是在TR0=1语句开启定时器中断后才开始的,而且每次响应的时间是以微秒为单位,在两次负值之间有一个3s的延时程序,而且有TR0=0语句关闭中断,所以应该不会相互影响
热心网友
时间:2023-10-11 03:40
具体描述一下加之前和加之后的现象。
加了之后是一点都不响了?之前那种频率的声音也没有?追问加之前一直响,声音很大,加之后一点不响,或者声音小到听不见;顺便说一下,在加之前整个程序都在while(1)里面不断循环,但是加之后即使把timer0l=0x77;改为timer0l=0x47;(也就是上下两段完全相同),他也还是不响……本来只是想试一下从do到si的音调,弄了一下午,好郁闷~
热心网友
时间:2023-10-11 03:40
delay3s()
热心网友
时间:2023-10-11 03:41
有可能是哪里烧了