亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 程序這樣寫是單片機定時器不工作還是寫得有問題? [打印本頁]

作者: 木示    時間: 2024-4-24 22:02
標題: 程序這樣寫是單片機定時器不工作還是寫得有問題?
用STC8G1K08A單片機的定時器0 寫了定時亮燈的程序,但發覺不產生定時作用。以下是定時器0的程序。請各位大佬指導一下。
  1. bit FLAG = 0;       //計數完成標志位
  2. sbit led=P5^4;
  3. uint count;     //計數變量1
  4. uint count2;    //計數變量2
  5. uint count3;    //計數變量3


  6. /*****************定時器0函數*******************/
  7. void Timer0_Init(void)                //50毫秒@12.000MHz
  8. {
  9.         AUXR &= 0x7F;                        //定時器時鐘12T模式
  10.         TMOD &= 0xF0;                        //設置定時器模式
  11.         TL0 = 0xB0;                                //設置定時初始值  
  12.         TH0 = 0x3C;                                //設置定時初始值
  13.         TF0 = 0;                                //清除TF0標志
  14.         ET0 = 1;
  15.         TR0 = 1;                                //定時器0開始計時
  16.         
  17. }


  18. void led0()
  19. {
  20.         led=0;        //燈亮
  21.          count  = 0;
  22.    count2 = 1;
  23.    count3 = 11;      //定時1分鐘
  24.    TR0 = 1;  //啟動定時器0
  25.         
  26. }


  27. void led1()
  28. {
  29.         led=0;//燈亮
  30.          count  = 0;
  31.    count2 = 30;        //
  32.    count3 = 11;      //定時0.5小時
  33.     TR0 = 1;  //啟動定時器0
  34.         
  35. }


  36. void led2()
  37. {
  38.         led=0;//燈亮
  39.          count  = 0;
  40.    count2 = 0;        //
  41.    count3 = 11;      //定時1小時
  42.     TR0 = 1;  //啟動定時器0
  43.         
  44.                
  45. }


  46. void led3()
  47. {
  48.           led=0;//燈亮
  49.                 EA=0;//關閉外部中斷,
  50.          count  = 0;
  51.    count2 = 0;        //
  52.    count3 = 8;      //定時4小時
  53.     TR0 = 1;  //啟動定時器
  54.         
  55. }




  56. /********************** Timer0中斷函數************************/
  57. void Timer0_Isr()interrupt 1 using 1
  58. {
  59.         TL0   =        0xB0;
  60.         TH0  =        0x3C;            //50MS
  61.         count++;
  62.         if(count==1200)            //60S 1200
  63.         {
  64.                 count=0;
  65.                 count2++;
  66.                 if(count2==60)        //60分鐘  60
  67.                 {
  68.                         count2=0;
  69.                         count3++;
  70.                         if(count3==12)// 12小時
  71.                         {
  72.                             count3=0;
  73.                                                                                                           led=1;
  74.                                                                                                            EA=1;
  75.                              FLAG = 1;          //計數時間到標志  可重新檢測外圍的是否有中斷
  76.                         }
  77.                 }
  78.         }               
  79. }
復制代碼




作者: cy009    時間: 2024-4-25 00:25
"EA=1"放進中斷函數里不對呵
作者: xiaobendan001    時間: 2024-4-25 07:23
EA要先打開,否則任何中斷都進不去吧
作者: heyanrog    時間: 2024-4-25 09:20
單片機一開機上電要打開中斷,后面的中斷才能響應,
void Timer0_Isr()interrupt 1 using 1
{EA=0;
.....
.....
EA=1;

}
.....
EA=1;
void main()
{
while(1){};
}
或者
void main()
{EA=1;
while(1){};
}

作者: lkc8210    時間: 2024-4-25 10:21
main()函數呢?被吞了?
作者: 十夢九你    時間: 2024-7-2 14:17
EA ET0沒開怎么進中斷

作者: xiaobendan001    時間: 2024-7-2 14:37
heyanrog 發表于 2024-4-25 09:20
單片機一開機上電要打開中斷,后面的中斷才能響應,
void Timer0_Isr()interrupt 1 using 1
{EA=0;

EA=1;
void main()
{
while(1){};
}
這樣也行?
作者: zh_junwei    時間: 2024-7-2 15:16
在主程序里面打開中斷總開關,不然是不會產生中斷的
作者: xiangran    時間: 2024-7-2 15:36
EA要先打開,否則任何中斷都進不去吧
作者: yaosongjin    時間: 2024-7-2 16:07
主函數都不寫?編譯能通過嗎?




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