第四十七课 PWM之二 一级中断调节LED亮度
前面的课程都掌握的可以的话,PWM其实也没什么好讲的,在这里只是想告诉大家PWM的基本原理和实现的方法!
程序讲解
/*--------------------------------------------------------------*/
//按键控制显示LED亮度
//Time: 19:22 2009-4-28
/*--------------------------------------------------------------*/
//包含头文件
#include <AT89X52.H>
//#include "Beep.H"
/*--------------------------------------------------------------*/
//按键接口定义 对应开发板硬件
sbit K1 = P3^4; //亮度增加
sbit K2 = P3^5; //亮度减弱
unsigned char pwm_para;
unsigned char pwm_counter;
/*--------------------------------------------------------------*/
//定时器初始化
void T0_init(void)
{
TMOD |= 0x02;
TH0 = 0xc4; //60us
TL0 = 0xc4;
IE |= 0x82;
TR0 = 1;
}
/*--------------------------------------------------------------*/
//定时器中断服务
void T0_intservice(void) interrupt 1
{
pwm_counter++;
if(pwm_counter < pwm_para) P1 = 0x00;
else P1 = 0xff;
}
/*--------------------------------------------------------------*/
//主函数
void main(void)
{
T0_init();
while(1)
{
if(!K1) {pwm_para++; while(!K1);}
if(!K2) {pwm_para--; while(!K2);}
}
}
相关程序:https://static.assets-stash.eet-china.com/album/old-resources/2009/6/12/fe49effb-ad42-4fef-8e6c-a759de52387d.rar
文章评论(0条评论)
登录后参与讨论