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