这是一个PWM输出占空比一直变化的方波,控制一个发光二极管实现呼吸灯的效果。
我的问题是:为啥定时器判定if(highv>100)不能改成if(highv==100),改后就没有呼吸灯的效果了,原因是什么?
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit PWM=P2^1;
- uchar num;
- uint highv,lowv,duan;
- void init();
- void main()
- {
- init();
- //duan=1;
- //PWM=0;
- while(1)
- {
- if(highv>100)
- {
- highv=0;
- if(num==0)
- {
- duan--;
- }
- if(num==1)
- {
- duan++;
- }
- }
- if(duan==1000)
- {
- num=0;
- }
- if(duan==0)
- {
- num=1;
- }
- if(lowv>1000)
- {
- lowv=0;
- }
- if(duan>=lowv)
- {
- PWM=1;
- }
- else
- {
- PWM=0;
- }
- }
- }
- void init()
- {
- TMOD=0X11;
- TH0=(65536-1)/256;
- TL0=(65536-1)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void time() interrupt 1
- {
- TH0=(65536-1)/256;
- TL0=(65536-1)%256;
- highv++;
- lowv++;
- }
复制代码
一周热门 更多>