- void khz(uchar aa)
- {
- for(a=aa;a>0;a--) //这个for语句可以得到准确的26.3波特率
- {
- out=0;
- i=7;
- while(i>0) i--; //38kHZ
- out=1;
- }
- }
复制代码调用 khz(116);即可产生38.5khz 但如果改成 - void khz()
- {
- for(a=116;a>0;a--)
- {
- out=0;
- i=7;
- while(i>0) i--;
- out=1;
- }
- }
复制代码
调用 khz();频率就会变成50khz 请问两组代码为什么会出现这样的差异?另外下面的一段代码是像利用定时器生成38khz方波,环境是stc90c51rc+12mhz时钟,定时器初始化后,这里是13us的溢出中断,取反各一次后是26us,主函数没有任何其他语句,按道理应该是获得38KHZ的方波啊,但是示波器显示是26KHZ,请大神明示~~~
- void Timer0_Routine(void) interrupt 1
- {
- TL0=0xF3;
- TH0=0xFF;
- IR_OUT=~IR_OUT;
- }
复制代码 |