![]() |
發(fā)布時間: 2022-7-15 10:01
正文摘要:大神們求指教下,下面這段單片機代碼先是我自己慢慢編出來,之后結(jié)合郭老師的視頻講解改了改,就是學習《單片機十天征服我》的那個學習視頻。中讓LED按1秒閃爍,數(shù)碼管用中斷2秒來變化。 ... |
lkc8210 發(fā)表于 2022-7-15 16:30 謝謝,開始不知道還要選這個。現(xiàn)在明白了 |
楓清y 發(fā)表于 2022-7-15 11:51 你選錯了1T,普通8051是12T的 ![]() |
楓清y 發(fā)表于 2022-7-15 11:40
|
void Timer0Init(void) //50毫秒@11.0592MHz { AUXR &= 0x7F; //定時器時鐘12T模式 TMOD &= 0xF0; //設(shè)置定時器模式 TMOD |= 0x01; //設(shè)置定時器模式 16位 TL0 = 0x00; //設(shè)置定時初始值 TH0 = 0x4C; //設(shè)置定時初始值 TF0 = 0; //清除TF0標志 TR0 = 1; //定時器0開始計時 } STC89C52 定時器0中斷50ms |
本帖最后由 楓清y 于 2022-7-15 11:55 編輯 188610329 發(fā)表于 2022-7-15 11:42 void Timer0Init(void) //50微秒@11.0592MHz { AUXR |= 0x80; //定時器時鐘1T模式 TMOD &= 0xF0; //設(shè)置定時器模式 TL0 = 0xD7; //設(shè)置定時初值 TH0 = 0xFD; //設(shè)置定時初值 TF0 = 0; //清除TF0標志 TR0 = 1; //定時器0開始計時 }定時長度為50 找到錯那里了,該用筆來算算。大意了,納悶上面定時為50單位為微秒,我要的是50毫秒。哎呀,真憨啊我。謝謝,果然單片機10天征服我啊,😭 |
楓清y 發(fā)表于 2022-7-15 11:34 你確定? (65536-50000)/256 = 0xfd ???? 你計算器按一下看看? |
lkc8210 發(fā)表于 2022-7-15 11:24 郭天祥老師在視頻中用的TL0=(65536-50000)%256;TH0=(65536-50000)/256;這兩個。中斷那章郭老師的視頻看的云里霧里,之后看了其他up主的視頻,說八位定時器可以用軟件來算,我就一直用的軟件。哪知道這次不行。就咋想都想不明白 ![]() |
lkc8210 發(fā)表于 2022-7-15 11:24 大佬又是你,感謝感謝。忘說了。因為直接來定義1秒都達不到跟何況2秒了,所以我采用了50ms,之后再運行40次。那個if就是判斷是否中斷了40次,也就是2秒。是的話再,t重新計數(shù),同時顯示數(shù)碼管。就這樣循環(huán)下去。 真的很怪.TL0=(65536-50000)%256; TH0=(65536-50000)/256;用這兩個都沒問題, TH0 = 0xFD;TL0 = 0xD7;這兩個就有問題,按照道理,都是代表50ms,沒想到用這個TH0 = 0xFD;TL0 = 0xD7;數(shù)碼管閃的老快了。正常的話應該LED閃爍兩次,數(shù)碼管顯示一次 |
TL0 = 0xD7; TH0 = 0xFD; 0xFDD7 = 64983 計時時間 = 65536 - 64983 = 533 12Mhz晶振為533us 11.0592Mhz晶振為 600us 你是不是在STC-ISP上按錯了? ![]() |
Powered by 單片機教程網(wǎng)