欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于單片機PWM呼吸燈程序的幾個問題,求解答
[打印本頁]
作者:
ZhouYangLa
時間:
2021-4-9 23:51
標題:
關于單片機PWM呼吸燈程序的幾個問題,求解答
這是我編寫的PWM呼吸燈程序,但是只有在中斷里面加上while(1)循環他才能呼吸。沒有這個while直接就不亮了,但我看別人的呼吸燈函數中斷內沒有while循環也能呼吸,這是為什么?
還有一個問題,加上while循環后的呼吸燈在逐漸變暗的時候“燈亮滅的抖動”明顯,怎么能讓他看起來流暢一點。
單片機源程序如下:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED = P2^0;
u16 timer1, count, value;
bit flag;
void TimeInit()//¶¨ê±1us
{
TMOD |= 0x10;
TH1 = 0xFF;
TL1 = 0xFF;
TR1 = 1;
EA = 1;
ET1 = 1;
}
void main()
{
LED = 1;
timer1 = 0;
count = 0;
value = 0;
flag = 0;
TimeInit();
while(1);
}
void Time() interrupt 2
{
TH1 = 0xFF;
TL1 = 0xFF;
//while(1)
// {
timer1++;
count++;
if(timer1 == 1000)
{
timer1 = 0;
LED = 1;
}
if(count == 100)
{
count = 0;
if(flag == 0)
{
value++;
}
if(flag == 1)
{
value--;
}
}
if(value == 1000)
{
flag = 1;
}
if(value == 0)
{
flag = 0;
}
if(value > timer1)
{
LED = 0;
}
else
{
LED = 1;
}
// }
}
復制代碼
作者:
mengzhixinheng
時間:
2021-4-10 08:41
51是溢出中斷還是匹配中斷?如果是溢出中斷的話,你的初值不合適,雖然邏輯沒錯但是定時器溢出太頻繁了,根本無法正常運行。就模擬占空比控制LED而言,1ms時基絕對沒問題。雖然寫的很復雜,邏輯好像沒錯,修改定時器溢出時間后如果led顯示不平滑可更改你的count。
作者:
mengzhixinheng
時間:
2021-4-10 09:05
溢出時間重設,不然無法正常中斷。減小count
作者:
ANT1987
時間:
2021-4-10 10:32
你在定時中斷里面加while(1)的結果就是程序就在定時中斷里面跑不出來了
將執行LED代碼放到主函數里面,定時中斷函數只負責計算時間 重置標志位
作者:
人人學會單片機
時間:
2021-4-10 11:33
PWM程序 STC89單片機 定時器做
http://m.raoushi.com/bbs/dpj-200820-1.html
作者:
ZhouYangLa
時間:
2021-4-12 17:07
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED = P2^0;
u16 timer1, count, value;
bit flag;
void TimeInit()//¶¨ê±1us
{
TMOD |= 0x01;
TH0 = 0xFF;
TL0 = 0xFF;
//TR0 = 1;
EA = 1;
ET0 = 1;
}
void main()
{
LED = 1;
timer1 = 0;
count = 0;
value = 0;
flag = 0;
TimeInit();
while(1)
{
TR0 = 1;
if(timer1 == 1000)
{
timer1 = 0;
LED = 1;
}
if(count == 100)
{
count = 0;
if(flag == 0)
{
value++;
}
if(flag == 1)
{
value--;
}
}
if(value == 1000)
{
flag = 1;
}
if(value == 0)
{
flag = 0;
}
if(value > timer1)
{
LED = 0;
}
else
{
LED = 1;
}
}
}
void Time() interrupt 1
{
TH0 = 0xFF;
TL0 = 0xFF;
timer1++;
count++;
}
復制代碼
我重新排了一下,這直接不亮了。。。
作者:
ZhouYangLa
時間:
2021-4-12 17:27
時間我不知道怎么設置好了。。。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1