|
- unsigned char PWM_COUNT; //計數(shù)
- unsigned int HUXI_COUNT; //占空比更新時間
- unsigned char PWM_VLAUE; //占空比比對值
- bit direc_flag; //占空比更新方向
- void timer0_init()
- {
- TMOD = 0x02; //模式設(shè)置,00010000,定時器0,工作于模式2(M1=1,M0=0)
- TH0 = 0x47; //定時器溢出值設(shè)置,每隔200us發(fā)起一次中斷。
- TL0 = 0X47;
- TR0 =1; //定時器0開始計時
- ET0 =1; //開定時器0中斷
- EA = 1; //開總中斷
- PWM_COUNT =0;
- }
- void time0() interrupt 1
- {
- PWM_COUNT++;
- HUXI_COUNT++;
- if(PWM_COUNT == PWM_VLAUE) //判斷是否到了點(diǎn)亮LED的時候 這里pwm_count==pwm_vlaue 里的pwm_count是指的計數(shù) 為什么計數(shù)加到和
- PWM_VLAUE相等時就點(diǎn)亮
- 還有這個計數(shù)又是什么
- LED = 1; //點(diǎn)亮LED
- if(PWM_COUNT == 10) //當(dāng)前周期結(jié)束
- {
- LED = 0; //熄滅LED
- PWM_COUNT = 0; //重新計時
- }
- if((HUXI_COUNT == 600) && (direc_flag == 0))
- {
- //占空比增加10%
- HUXI_COUNT = 0;
- PWM_VLAUE++;
- if(PWM_VLAUE == 9) //占空比更改方向
- direc_flag = 1;
- }
- if((HUXI_COUNT == 600) && (direc_flag == 1))
- {
- //占空比減少10%
- HUXI_COUNT = 0;
- PWM_VLAUE--;
- IF(PWM_VLAUE == 1) //占空比更改方向
- DIREC_FLAG = 0;
- }
- }
- void main()
- {
- HUXI_COUNT = 0;
- PWM_COUNT = 0;
- PWM_VLAUE = 5;
- direc_flag = 0;
- LED = 1; //默認(rèn)LED熄滅
- timer0_init(); //定時器0初始化
- while(1);
- }
復(fù)制代碼
|
|