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

標題: 關于51單片機PWM波的問題 [打印本頁]

作者: 熱心市民Li    時間: 2020-6-17 21:25
標題: 關于51單片機PWM波的問題
現在想要實現一個串口發送PWM波形數據,單片機在通過串口接收數據后在修改P1.1口的波形,PWM輸出用的是定時器計數器,F在有一個疑問,就是我生成的波形的數據是字節變量的,但是輸出的口需要位變量,這個問題怎么解決?求各位大佬給點指點。
void chuankou() interrupt 4
{
TI=0;
SBUF=PWMboxing;
while(TI==1)
{
  TI=0;
   
}
RI=0;
i=SBUF;
P1^1=i
while(RI==0)
{
  RI=0;
}
}
程序是我自己寫的,現在目前就是這個思路,不知道能不能行的通,有問題的話也歡迎各位指出,謝謝大家啦。!

作者: xuyaqi    時間: 2020-6-18 08:45
字節變量一定要轉換成位變量才能輸出給位變量。
作者: wulin    時間: 2020-6-18 09:27
樓主這個程序錯誤太多根本玩不轉。給你一個經驗證過的參考程序試試。

#include<reg51.h>

sbit PWM=P1^1; //PWM輸出端口

unsigned char i,j;//全局變量

void main()                                                       
{
        SCON=0x50;  //8位UART波特率可變
        TMOD=0x22;  //定時器0、1方式2(8位重載)晶振11.0592MHz
        TH0=0xA4;        //設置定時重載值100us
        TL0=0xA4;        //設置定時初值
        TH1=0xfd;   //波特率9600
        TL1=0xfd;   //波特率9600
        TR0=1;           //開定時器0
        TR1=1;           //開定時器1
        REN=1;           //允許串行接收
        EA=1;              //開總中斷
        ET0=1;           //開T0中斷
        ES=1;              //開串口中斷
        while(1);
}

void T0Interrupt(void) interrupt 1
{
        if(j>i)PWM=1;//周期10ms,占空比0~100
        else PWM=0;
        if(++i>=100)i=0;
}

void serial() interrupt 4
{
        RI=0;
        j=SBUF;//j值范圍0~100
}

作者: 單調的唯一的    時間: 2020-6-18 10:31
輸出口是位變量(就是調節高低電平),生成波形的數據是字節變量,就是通過控制高低電平的時間調節占空比控制波形。具體有一個非常簡單容易理解的例子,看完你就會明白,建議看一下這一篇http://m.raoushi.com/bbs/forum.php?mod=viewthread&tid=75309
作者: 熱心市民Li    時間: 2020-6-18 21:01
xuyaqi 發表于 2020-6-18 08:45
字節變量一定要轉換成位變量才能輸出給位變量。

好的,我在琢磨琢磨
作者: 熱心市民Li    時間: 2020-6-18 21:03
wulin 發表于 2020-6-18 09:27
樓主這個程序錯誤太多根本玩不轉。給你一個經驗證過的參考程序試試。

#include

好的,謝謝啦,我在仔細研究一下
作者: 熱心市民Li    時間: 2020-6-18 21:03
單調的唯一的 發表于 2020-6-18 10:31
輸出口是位變量(就是調節高低電平),生成波形的數據是字節變量,就是通過控制高低電平的時間調節占空比控 ...

謝謝啦




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