![]() |
發布時間: 2018-4-14 14:38
正文摘要:這是通過定時器T1定時,查詢TF1電平高低來產生周期為2ms的方波,在keil中仿真沒有錯誤,但是在proteus仿真中,通過示波器可以看出并沒有產生方波,誰知道這是怎么回事嗎? #include<reg51.h> sbit P1_0=P1^0;/ ... |
多謝!改好了! |
1.定時器設置錯誤 2.P1_0大小寫混用 #include<reg51.h> sbit P1_0=P1^0;//通過P1.0口產生方波,定義一個特殊位 void main() { TMOD= 0x10; //設置定時器T1的方式1 TH1 = 0xfc; //設置定時初值 TL1 = 0x18; //設置定時初值 TF1 = 0; //清除TF1標志 TR1 = 1; //定時器1開始計時 // TMOD=0x50;//選用T1的方式1 // TH1=0xfc;//高位設定初值 // TL1=0x17;//低位設定初值 // TR1=1;//啟動定時器T1 // p1_0=1;//P1.0口為高電平 P1_0=1;//P1.0口為高電平 while(1) { if(TF1)//如果計滿,TF1就是1 { TH1=0xfc;//重新裝入 TL1=0x18;//重新裝入 P1_0=~P1_0;//P1.0口電位定時取反 TF1=0;//將中斷標志位清零 } } } |