欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求助!51單片機輸出方波問題 [打印本頁]

作者: 2602482600    時間: 2020-3-15 17:00
標題: 求助!51單片機輸出方波問題
題目:12晶振   輸出周期1s  占空比70%的方波;


我的代碼:
#include "reg51.h"
#define uchar unsigned char        //數(shù)據(jù)類型宏定義
#define uint unsigned int
/*********************引腳定義********************/

#define TICK 10000
#define T100us 256-100
uchar C100us;
sbit out=P1^6;
/*********************主函數(shù)**********************/
void main(void)
{
        TMOD&=0xf0;
        TMOD|=0x02;
        TH0=T100us;
        TL0=T100us;
        TR0=1;
        EA=1;
        ET0=1;
        C100us=TICK;
        while(1);
}
void timer0int(void) interrupt 1
{
        C100us--;
        if(C100us==3000)
        {
                out=~out;       
        }
        if(C100us==0)
        {
                C100us=TICK;
                out=~out;
        }       
}




作者: 2602482600    時間: 2020-3-15 17:00
仿真出來的方波是50%的,為什么會這樣呢
作者: wanghz12    時間: 2020-3-15 18:22
#define TICK 10000 #define T100us 256-100 uchar C100us;
作者: wanghz12    時間: 2020-3-15 18:23
#define TICK 10000  uchar C100us; TICK如何給 C100us賦值;數(shù)據(jù)類型不對
作者: 人中狼    時間: 2020-3-15 19:45
uchar C100us;,變量類型錯了吧,uchar應(yīng)該最大只到255,應(yīng)該要用uint
作者: tyrl800    時間: 2020-3-15 19:54
改成
void timer0int(void) interrupt 1
{
        C100us--;
        if(C100us<=3000)
        {
                out=1;      
        }
       else out=0;

        if(C100us==0)
        {
          C100us=TICK;
               
        }      
}
作者: YYB_123456    時間: 2020-3-15 20:32
uchar C100us; 數(shù)據(jù)類型裝不下10000,也比較不出3000,倒是可以比較0。改成uint吧
作者: odfggf    時間: 2020-3-15 22:17
out=~out;總在取反,占空比當然就是50%了,另外 C100us要定義成uint
作者: odfggf    時間: 2020-3-15 22:26
本帖最后由 odfggf 于 2020-3-16 08:40 編輯

改寫成這樣也行
uchar C100us=0;
void timer0int() interrupt 1
{
      
        if(C100us<3000)
            { out=1;  }   
              else
                { out=0; }
       C100us++;      C100us%=10000;
}

作者: wulin    時間: 2020-3-16 08:14
2602482600 發(fā)表于 2020-3-15 17:00
仿真出來的方波是50%的,為什么會這樣呢
  1. #include "reg51.h"
  2. #define uchar unsigned char        //數(shù)據(jù)類型宏定義
  3. #define uint unsigned int
  4. /*********************引腳定義********************/

  5. #define TICK 10000
  6. #define T100us 256-100

  7. sbit out=P1^6;
  8. uint C100us;

  9. /*********************主函數(shù)**********************/
  10. void main(void)
  11. {
  12.         TMOD&=0xf0;
  13.         TMOD|=0x02;
  14.         TH0=T100us;
  15.         TL0=T100us;
  16.         TR0=1;
  17.         EA=1;
  18.         ET0=1;
  19.         C100us=0;
  20.         while(1);
  21. }
  22. void timer0int(void) interrupt 1
  23. {
  24.         C100us++;
  25.         if(C100us<=7000)
  26.                 out=1;        
  27.         if(C100us>7000)
  28.                 out=0;
  29.         if(C100us==TICK)
  30.                 C100us=0;        
  31. }
復制代碼

作者: 2602482600    時間: 2020-3-19 18:22
謝謝大家,是類型不對




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