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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1850|回復: 2
打印 上一主題 下一主題
收起左側

為什么程實現不了,是哪里有錯誤呢

[復制鏈接]
跳轉到指定樓層
樓主
剛學51單片機,寫了一個通過按鍵減小輸出方波的占空比的程序,按下K1在原有方波基礎上減小10%占空比,按下K2在原有方波基礎上減小20%的占空比,在未按任何按鍵之前有輸出周期為10ms的方波,晶振頻率為12Mhz。但是在按下按鍵之后占空比變化超出設計,為什么會這樣呢?
  1. #include<reg52.h>
  2. unsigned char P10ms=0;                          //定義10ms計數器,并清零賦值
  3. typedef unsigned char u16;
  4. sbit K1=P3^1;                                          //獨立按鍵K1的端口定義
  5. sbit K2=P3^2;                                          //獨立按鍵K2的端口定義
  6. sbit P10=P2^0;                                          //定義P1為P2^0從21引腳輸出
  7. void delay(u16 t)                                 //延時函數
  8. {
  9.     while(t--);
  10. }
  11. void keypress1()                                         //定義按鍵1函數
  12. {
  13.    if(K1==0)                                          //判斷K1是否按下
  14.    {
  15.       delay(1000);                                //消抖
  16.           if(K1==0)
  17.           {
  18.              TH1=0x06;                                  //重置T1定時初值為25us
  19.                  TL1=0x06;                     //重置T1定時初值為25us
  20.                  if(P10==1) P10=0;            //若P1.0為高電平,則P1.0轉為低電平
  21.                  else
  22.                      {
  23.                            P10ms++;                         //若1.0位低電平,則1ms計數
  24.                            if(P10ms==36)        //判斷9ms是否滿足,及實現減小10%的占空比
  25.                            {
  26.                              P10=1;                 //滿足9ms,P1.0轉為高電平
  27.                                  P10ms=0;          //10ms計數器清零
  28.                                  }
  29.                          }
  30.            }
  31.         }
  32. }

  33. void keypress2()                                   //定義按建2函數
  34. {
  35.    if(K2==0)                                           //判斷K2是否按下
  36.    {
  37.       delay(1000);                 //消抖
  38.           if(K2==0)
  39.           {
  40.              TH1=0x06;                      //重置T0定時初值為25us
  41.                  TL1=0x06;                      //重置T0定時初值為25us
  42.                  if(P10==1) P10=0;              //若P1.0為高電平,則P1.0轉為低電平
  43.                  else
  44.                      {
  45.                            P10ms++;                          //若1.0位低電平,則1ms計數
  46.                            if(P10ms==32)         //判斷是否達到8ms,即實現減小20%的占空比
  47.                            {
  48.                              P10=1;                         //滿足8ms,P1.0轉為高電平
  49.                                  P10ms=0;                 //10ms計數清零
  50.                            }
  51.                          }
  52.            }
  53.         }
  54. }
  55. void main()
  56. {
  57.   TMOD=0x20;                     //TMOD=00100000B,置T1定時器方式2
  58.   TH1=0x06;                     //置T1定時初值250us
  59.   TL1=0x06;                                                //置T1定時初值250us
  60.   IP=0x08;                           //IP=00001000B,置T1為高優先級
  61.   IE=0xff;                          //IE=11111111B,全部開中
  62.   TR1=1;                         //T1運行
  63.   P10=0;                        //脈沖方波初始輸出為低電平
  64.   while(1);                       //無限循環,等待T1中斷
  65. }
  66. void t1() interrupt 3
  67. {
  68.    if(K1==1&&K2==1)                   //判斷K1和K2是否按下,
  69.    {
  70.     P10ms++;                           //開始計數
  71.     if(P10ms==20)        //若10ms計數器到位,則
  72.     {
  73.       P10=!P10;                //P1.0引腳端輸出電平取反(輸出周期10ms脈沖方波,占空比為50%)
  74.           P10ms=0;                //10ms計數器清0
  75.         }                
  76.     }
  77.    else
  78.    {
  79.         keypress1();
  80.         keypress2();
  81.         }
  82. }
復制代碼



極速截圖201903092330.png (61.81 KB, 下載次數: 73)

極速截圖201903092330.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:234075 發表于 2019-3-10 00:13 | 只看該作者
按鍵松開的動作沒有檢測
在30行和53行前插入  while(!k1);和 while(!k2);
回復

使用道具 舉報

板凳
ID:137676 發表于 2019-3-10 00:24 | 只看該作者
中斷函數運行delay()函數時間太長了吧!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久久 | 麻豆亚洲| 国产精品国产精品国产专区不蜜 | 日韩精品在线网站 | 成人妇女免费播放久久久 | 日韩精品一区二区三区在线观看 | 国产激情免费视频 | 粉嫩av久久一区二区三区 | 久久免费资源 | 99这里只有精品 | 亚洲精品久久久久久久久久吃药 | 亚洲精品二区 | 谁有毛片| 成人免费看片又大又黄 | 国产精品福利视频 | 欧美在线高清 | 欧美涩 | 激情国产在线 | 精品久久久久久亚洲国产800 | 亚洲vs天堂 | 国产精品海角社区在线观看 | 99re在线| 欧美 日韩精品 | 国产高清在线视频 | 国产在线不卡视频 | 久久精品手机视频 | 亚洲精品视频在线看 | 午夜网| 亚洲一区二区三区高清 | 中文字幕 亚洲一区 | 国产一区二区电影 | 精品一区二区三区四区外站 | www97影院 | 国产精品久久久久免费 | 国产高清视频在线 | 日韩欧美中文在线 | 久久一区视频 | 亚洲综合区 | 一区二区福利视频 | 男女羞羞视频在线 | 久久亚洲一区二区 |