- void khz(uchar aa)
- {
- for(a=aa;a>0;a--) //這個for語句可以得到準確的26.3波特率
- {
- out=0;
- i=7;
- while(i>0) i--; //38kHZ
- out=1;
- }
- }
復制代碼調(diào)用 khz(116);即可產(chǎn)生38.5khz 但如果改成 - void khz()
- {
- for(a=116;a>0;a--)
- {
- out=0;
- i=7;
- while(i>0) i--;
- out=1;
- }
- }
復制代碼
調(diào)用 khz();頻率就會變成50khz 請問兩組代碼為什么會出現(xiàn)這樣的差異?另外下面的一段代碼是像利用定時器生成38khz方波,環(huán)境是stc90c51rc+12mhz時鐘,定時器初始化后,這里是13us的溢出中斷,取反各一次后是26us,主函數(shù)沒有任何其他語句,按道理應該是獲得38KHZ的方波啊,但是示波器顯示是26KHZ,請大神明示~~~
- void Timer0_Routine(void) interrupt 1
- {
- TL0=0xF3;
- TH0=0xFF;
- IR_OUT=~IR_OUT;
- }
復制代碼 |