欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機定時器中斷 中斷TF1=0,有沒有頻率差三倍 [打印本頁]

作者: DANFISH    時間: 2018-11-14 11:50
標題: 單片機定時器中斷 中斷TF1=0,有沒有頻率差三倍
我寫20ms中斷程序,程序參照STC ,增加TF1 = 0 正常是20ms;程序取消掉TF1 = 0 后頻率差不多66ms樣子,中斷的程序是IO取反 IO=~IO;
參照附件的紫色示波器波形。有沒有大神知道?
void Timer1Init(void)  //20毫秒@12.000MHz

{
AUXR &= 0xBF;  //定時器時鐘12T模式
TMOD &= 0x0F;  //設置定時器模式
TMOD |= 0x10;  //設置定時器模式
TL1 = 0xE0;  //設置定時初值
TH1 = 0xB1;  //設置定時初值
TF1 = 0;  //清除TF1標志
TR1 = 1;  //定時器1開始計時
}


IMG_3692.JPG (124.83 KB, 下載次數: 31)

IMG_3692.JPG

IMG_3695.PNG (4.23 KB, 下載次數: 33)

IMG_3695.PNG

IMG_3698.JPG (1.38 MB, 下載次數: 27)

IMG_3698.JPG

作者: wulin    時間: 2018-11-14 15:16
使用定時器1中斷方式不必操作TF1,TF1在中斷響應后自動清0。使用查詢方式才需要程序操作清0。
作者: Y_G_G    時間: 2018-11-14 20:43
你給的代碼是中斷函數嗎?如果是的話,是不用這樣,在主函數里設定定時器的工作模式就可以了
AUXR不要去動它,本身就是默認的12T了,第一個圖片是產生誤差的那代碼嗎?如果是的話,也沒有你說的那大的誤差的,你要知道,20mS取反一次實際上25HZ,你那是26HZ左右,實際上只差別了2.52mS
問題在哪里?我不知道,不會C,看不明白,但我沒有看到取反的函數,你把取反的代碼直接放在TR1 = 1后面,這樣精度會高一點.
示波器應該是可以量時間的呀,你可以找找看,像20mS這種是可以很精確的測量出來的,注意看增量那一行
作者: wxxl    時間: 2018-11-14 22:20
加EA=1;
   ET0=1:

作者: DANFISH    時間: 2018-11-15 10:03
我也很奇怪,以前用89C52 和 STC100W 都沒有這個問題,是不是STC15 204S 芯片問題,這個芯片比普通的運行快很多,我照辦普中程序的延遲都用不了,跑的飛起
作者: SINANDXKY    時間: 2018-11-15 11:24
TF1標志是定時器1溢出之后硬件自動置1,必須軟件清零,不然就運行不正常,還有你12MHZ晶振16位定時器最大就定時65.535MS所以你是不是沒重賦初值
作者: DANFISH    時間: 2018-11-15 13:32
SINANDXKY 發表于 2018-11-15 11:24
TF1標志是定時器1溢出之后硬件自動置1,必須軟件清零,不然就運行不正常,還有你12MHZ晶振16位定時器最大就 ...

的確是,我沒有吧初值放在interrupt 1里面,只寫到main 函數里面了。估計是這里問題




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1