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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3894|回復: 6
收起左側

單片機定時器中斷 中斷TF1=0,有沒有頻率差三倍

[復制鏈接]
ID:374869 發表于 2018-11-14 11:50 | 顯示全部樓層 |閱讀模式
我寫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
IMG_3695.PNG
IMG_3698.JPG
回復

使用道具 舉報

ID:213173 發表于 2018-11-14 15:16 | 顯示全部樓層
使用定時器1中斷方式不必操作TF1,TF1在中斷響應后自動清0。使用查詢方式才需要程序操作清0。
回復

使用道具 舉報

ID:401564 發表于 2018-11-14 20:43 | 顯示全部樓層
DSC_0004.JPG 你給的代碼是中斷函數嗎?如果是的話,是不用這樣,在主函數里設定定時器的工作模式就可以了
AUXR不要去動它,本身就是默認的12T了,第一個圖片是產生誤差的那代碼嗎?如果是的話,也沒有你說的那大的誤差的,你要知道,20mS取反一次實際上25HZ,你那是26HZ左右,實際上只差別了2.52mS
問題在哪里?我不知道,不會C,看不明白,但我沒有看到取反的函數,你把取反的代碼直接放在TR1 = 1后面,這樣精度會高一點.
示波器應該是可以量時間的呀,你可以找找看,像20mS這種是可以很精確的測量出來的,注意看增量那一行
回復

使用道具 舉報

ID:46065 發表于 2018-11-14 22:20 | 顯示全部樓層
加EA=1;
   ET0=1:
回復

使用道具 舉報

ID:374869 發表于 2018-11-15 10:03 | 顯示全部樓層
我也很奇怪,以前用89C52 和 STC100W 都沒有這個問題,是不是STC15 204S 芯片問題,這個芯片比普通的運行快很多,我照辦普中程序的延遲都用不了,跑的飛起
回復

使用道具 舉報

ID:425222 發表于 2018-11-15 11:24 | 顯示全部樓層
TF1標志是定時器1溢出之后硬件自動置1,必須軟件清零,不然就運行不正常,還有你12MHZ晶振16位定時器最大就定時65.535MS所以你是不是沒重賦初值
回復

使用道具 舉報

ID:374869 發表于 2018-11-15 13:32 | 顯示全部樓層
SINANDXKY 發表于 2018-11-15 11:24
TF1標志是定時器1溢出之后硬件自動置1,必須軟件清零,不然就運行不正常,還有你12MHZ晶振16位定時器最大就 ...

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表