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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助!51單片機輸出方波問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:708933 發表于 2020-3-15 17:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
題目:12晶振   輸出周期1s  占空比70%的方波;


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

#define TICK 10000
#define T100us 256-100
uchar C100us;
sbit out=P1^6;
/*********************主函數**********************/
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;
        }       
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:708933 發表于 2020-3-15 17:00 | 只看該作者
仿真出來的方波是50%的,為什么會這樣呢
回復

使用道具 舉報

板凳
ID:234355 發表于 2020-3-15 18:22 | 只看該作者
#define TICK 10000 #define T100us 256-100 uchar C100us;
回復

使用道具 舉報

地板
ID:234355 發表于 2020-3-15 18:23 | 只看該作者
#define TICK 10000  uchar C100us; TICK如何給 C100us賦值;數據類型不對
回復

使用道具 舉報

5#
ID:384109 發表于 2020-3-15 19:45 | 只看該作者
uchar C100us;,變量類型錯了吧,uchar應該最大只到255,應該要用uint
回復

使用道具 舉報

6#
ID:275826 發表于 2020-3-15 19:54 | 只看該作者
改成
void timer0int(void) interrupt 1
{
        C100us--;
        if(C100us<=3000)
        {
                out=1;      
        }
       else out=0;

        if(C100us==0)
        {
          C100us=TICK;
               
        }      
}
回復

使用道具 舉報

7#
ID:704545 發表于 2020-3-15 20:32 | 只看該作者
uchar C100us; 數據類型裝不下10000,也比較不出3000,倒是可以比較0。改成uint吧
回復

使用道具 舉報

8#
ID:642838 發表于 2020-3-15 22:17 | 只看該作者
out=~out;總在取反,占空比當然就是50%了,另外 C100us要定義成uint
回復

使用道具 舉報

9#
ID:642838 發表于 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;
}
回復

使用道具 舉報

10#
ID:213173 發表于 2020-3-16 08:14 | 只看該作者
2602482600 發表于 2020-3-15 17:00
仿真出來的方波是50%的,為什么會這樣呢
  1. #include "reg51.h"
  2. #define uchar unsigned char        //數據類型宏定義
  3. #define uint unsigned int
  4. /*********************引腳定義********************/

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

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

  9. /*********************主函數**********************/
  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. }
復制代碼
回復

使用道具 舉報

11#
ID:708933 發表于 2020-3-19 18:22 | 只看該作者
謝謝大家,是類型不對
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表