使用定时器T0产生PWM方波,
用按键调整占空比,20级可调
控制led灯的亮度等级.
#include "my51.h" #include "timer0.h" #define grading 20 //亮度20级变化 sbit keyS3=P3^5; //按键调整占空比,PWM_keyChange++ sbit keyS4=P3^6; // PWM_keyChange-- u8 PWM_keyChange=10; //初值,按键调整在1~20之间变化 //占空比 PWM_keyChange/grading void T0_work() //本函数由T0定时器中断函数调用 { if(timeMultiple1Flag) { led=off(7); //关闭7号灯 timeMultiple1Flag=0; //清定时器复用置位标志 } if(timeMultiple2Flag) { led=on(7); //打开7号灯 timeMultiple2Flag=0; //清定时器复用置位标志 } } void main() //测试 { u8 keyFlag=1; //程序中没有消抖处理,只是简易的按键进出自锁标志 led0=ledon; //先打开0号灯,用于和7号灯对比亮度 initT0(1,10,grading); //1毫秒的基本定时,亮的时间1*10毫秒,暗1*(grading-10)毫秒 while(1) { if(0==keyS3) { if(keyFlag) //防止一次按键中多次执行 { keyFlag&#