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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1823|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

為什么程實(shí)現(xiàn)不了,是哪里有錯(cuò)誤呢

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

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



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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级片在线播放 | 人碰人操| 国产精品二区三区在线观看 | 91国产视频在线观看 | 欧美色欧美亚洲另类七区 | 国产一级电影在线 | 成人亚洲综合 | 久久精品久久久 | 亚洲a视| 国产色视频网站 | 欧产日产国产精品视频 | 国产99久久精品一区二区永久免费 | 天天想天天干 | 欧美日韩国产一区二区 | 一区二区视频在线 | 久久成人一区二区三区 | 国产91久久久久蜜臀青青天草二 | 日日草夜夜草 | 一本色道精品久久一区二区三区 | 一区二区亚洲 | 精品欧美乱码久久久久久1区2区 | 日韩中文字幕在线播放 | 午夜久久久 | 久久久久久国产精品mv | h视频免费在线观看 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 久久久久久久久国产精品 | 3p视频在线观看 | 亚洲精品久久久久久下一站 | 伊人狠狠干 | 日韩国产一区二区三区 | 亚洲视频在线免费观看 | 91免费观看国产 | 亚洲精品久久久久久久不卡四虎 | 国产在线不卡视频 | av一二三四 | 紧缚调教一区二区三区视频 | 国产精品日日做人人爱 | 91高清在线观看 | 免费在线观看av网址 | 欧美成人猛片aaaaaaa |