欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
新手關于單片機呼吸燈PWM程序的調試問題
[打印本頁]
作者:
壓線帽
時間:
2020-12-9 22:59
標題:
新手關于單片機呼吸燈PWM程序的調試問題
新手仿照網上教程寫了個PWM點亮一個LED小燈(sbit led = P1^2)程序。當我把一個LED小燈換成直接換成整個P1(連接8個led小燈)口,結果只有P1.0口的小燈由暗到亮,再從亮到暗,其余7個燈常亮,PWM一次只能驅動一位嗎?還望高手指教。
單片機源程序如下:
/***********************
PWM-呼吸燈
*************************/
#include<reg52.h>
//sbit led = P1^2;
unsigned char t_count ; //累計每個周期中斷次數的個數,滿20清零,20*100us=2ms(pwm的周期)
unsigned int count ; //累計占空比需要修改(增加還是減少)的中斷次數的個數 1200*100us=120ms
unsigned char t ; //累計高電平的個數
bit flag ; //標志位 0增加,1減少
void timer0init(void)
{
EA = 1;
TMOD = 0X02;
TH0 = 0Xa3;
TL0 = 0Xa3;
ET0 = 1;
TR0 = 1;
}
void main(void)
{
t_count = 0;
count = 0;
t =10; //占空比總50%開始
// led = 1;
timer0init();
while(1);
}
/*每100us進入一次中斷*/
void timer0() interrupt 1
{
t_count++;
count++;
if(t_count == t)
{
P1 = 0;
}
if(t_count == 19)
{
t_count = 0;
P1 = 1;
}
if((count == 1200)&&(flag == 0))
{
count = 0;
t++;
if(t == 19) //增加最大占空比 95%
{
flag = 1;
}
}
if((count ==1200)&&(flag == 1))
{
count = 0;
t--;
if(t ==10) //減小到最低占空比 50%
{
flag = 0;
}
}
}
作者:
wulin
時間:
2020-12-10 05:37
錯誤寫法:P1 = 0; P1 = 1;
正確寫法:P1 = 0x00; P1 = 0xff;
作者:
suncat0504
時間:
2020-12-10 10:10
本帖最后由 suncat0504 于 2020-12-10 10:14 編輯
樓上正解。樓主沒搞懂P1口賦值和P1口的位賦值的區別;
led=1,表示對P1口Bit2管腳賦值1。
P1=1,表示對整個P1口賦值,二進制值=00000001B,相當于對P1口的Bit0管腳賦值1,其它位賦值0。
作者:
陳潤源home
時間:
2020-12-10 15:40
1樓正解,P1指的是8位,也就是P1.0-P1.7 正確的賦值是 P1=0x00;P1=0xff;
作者:
壓線帽
時間:
2020-12-10 22:47
對一位賦值和對一個字節賦值確實不一樣,修改后跟預期的效果一樣,感謝樓上幾位的回復。
作者:
人人學會單片機
時間:
2020-12-31 15:23
這是我分享到51hei的 STC89單片機 定時器做PWM程序,
http://m.raoushi.com/bbs/dpj-200820-1.html
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1