关于51单片机产生500KHZ方波

我写了这个程序。可是不知道错在了哪里。求各位大神指点
2024-10-31 19:10:28
推荐回答(1个)
回答1:

有什么问题呢?是程序不执行,还是什么?
是输出的方波不是500KHZ吧。首先告诉你,是不可能输出500KHZ方波的。
按你的程序计算,定时一个机器周期,就1us,方波周期就是2us,输出方波应该是500KHZ的,可为什么不是呢?
你是这么想的吧?
看来你对单片机的工作,还是不理解的。
单片机工作是靠执行指令,就是程序,来完成。可执行指令也是要需要时间的,执行一般的指令也需要2us的,你又用定时器的方式1,每次中断还要重写时间常数,就你的中断程序是需要7us的。可是,单片机响应中断,中断结束从中断返回需要的时间更长了。都些时间都要加起来才是一个中断的时间,一个周期则是2倍。这周期远远超过了2us。所以,是不可能输出500KHZ方波的。
按理说,应该用定时器的方式2,自动重装时间常数,可以节省时间,再利用查询方式,(不要用中断,因中断太费时了),虽然可以大大节省时间,但也不可能达到500KHZ,只是频率比你现在的程序会高很多的。
真要得到500KHZ的方波,有两种方案,1,用1MHZ的晶振组成振荡器,再分频就行。
2,用STC单片机,晶振频率选更高的,它内部有时钟分频电路,直接输出分频的方波,不需要执行程序,不需要中断。