久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 51單片機定時器延遲按鍵的奇怪問題 [打印本頁]

作者: forest415    時間: 2024-1-19 20:33
標題: 51單片機定時器延遲按鍵的奇怪問題
下面的程序是對的沒有錯誤,有一個疑惑: 在定時器中斷子程序中我把 if(flagkey==0){ 改成 if(flagkey==1) 就不正常,這是什么原因呀,正常不是應該就等于1嗎?在檢定按鍵程序里

if(p01 == 0){
          flagkey=1;
          TR0 = 1;//這里才是要進中斷的地方呀為什么就不正常呢
          }
          else{
                            flagkey=0; //為什么這個正常
                  }

單片機源程序如下:
  1. /*------------定時器----------------*/
  2. void Timer0Init(void)                //10Ms
  3. {
  4.         TMOD = 0x01;
  5.     TH0 = 0x0D8;
  6.     TL0 = 0x0F0;
  7.     EA = 1;
  8.     ET0 = 1;
  9.     //TR0 = 1;
  10. }

  11. /*------------檢察按鍵----------------*/  
  12. void anjian(void)
  13. {
  14.           if(p01 == 0){// 檢測按鍵是否按下
  15.           flagkey=1;
  16.           TR0 = 1;//按鍵按下開始計時,溢出后中斷
  17.           }
  18.           else{
  19.                             flagkey=0;
  20.                   }
  21. }

  22. /*------------主程序----------------*/
  23. void main()
  24. {
  25.   Timer0Init(); //定時器初始化  
  26.         while(1)
  27.         {            
  28.                         anjian();                         //檢察按鍵
  29.         }
  30. }




  31. /*------------定時器中斷子程序----------------*/
  32. void Timer0Interrupt(void) interrupt 1{
  33. if(flagkey==0){      //改成if(flagkey==0){程序就有問題if(flagkey==0){
  34. flagkey=999;        
  35. Timer0Init_count ++;
  36. if(Timer0Init_count>5){
  37. TR0 = 0;//關定時器
  38. TH0 = 0x0D8;//賦初值
  39. TL0 = 0x0F0;

  40. P10 = ~P10;
  41. }}

  42. }
復制代碼


作者: tyrl800    時間: 2024-1-20 08:28
程序不完整
作者: Graves    時間: 2024-1-20 09:16
試下改成if(flagkey==1)時,按按鍵久一點什么效果
作者: cocolala    時間: 2024-1-20 10:14
    1、軟件IO口判斷是否為1取決于硬件電路。
    2、你需要把硬件電路按鍵檢測部分上下圖,脫離硬件的軟件設計是危險的。

作者: 597329015    時間: 2024-1-20 11:02
根據你提供的代碼,在定時器中斷子程序中,你將 if(flagkey==0) 改為了 if(flagkey==1)。這導致程序出現問題的原因是,flagkey 的初始值為0,當按鍵按下時,會將 flagkey 設置為1,然后開啟定時器。而在定時器中斷子程序中,你判斷 flagkey 是否為0,如果不為0,則執行相應的操作。

因此,當你將 if(flagkey==0) 改為了 if(flagkey==1) 時,定時器中斷子程序只有在 flagkey 的值為1時才會執行相應的操作。但是根據你提供的代碼邏輯,在按鍵按下后,會將 flagkey 設置為1,并開啟定時器,所以此時 flagkey 的值應該是1。

因此,將 if(flagkey==0) 改為 if(flagkey==1) 會導致定時器中斷子程序無法執行相應的操作,從而導致程序異常。你可以將 if(flagkey==0) 改回來,以恢復正常運行的狀態。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 性国产xxxx乳高跟 | 日韩精品一区二区三区在线播放 | 亚洲成色777777在线观看影院 | av片在线观看 | 91福利在线观看视频 | 国产精品69毛片高清亚洲 | 夜夜操操操 | 欧美一级三级 | 久久看精品 | 韩日在线视频 | 毛片a区 | 成人国产精品色哟哟 | 亚洲综合视频 | 国产精品特级毛片一区二区三区 | 中文字幕在线网 | 国产探花在线观看视频 | 亚洲午夜在线 | 亚洲精品二区 | 精品一区二区三区在线观看国产 | 精品欧美乱码久久久久久1区2区 | 久久亚洲一区二区三区四区 | 欧美激情 一区 | 亚洲一区播放 | 亚洲欧美日韩国产综合 | 国产精品久久久久久吹潮 | 日本精品一区二区三区在线观看视频 | 国产一级毛片精品完整视频版 | 久久91精品久久久久久9鸭 | 亚洲在线一区二区 | h小视频 | 成人国产精品色哟哟 | 中文字幕一区二区三区在线乱码 | 98成人网 | 97人人澡人人爽91综合色 | 欧美日韩国产一区二区三区 | 欧美极品视频在线观看 | 亚洲欧美日韩精品久久亚洲区 | 国产精品视频一区二区三区四区国 | 欧美多人在线 | 日韩一区二区在线视频 | 国产成人a亚洲精品 |