原理:用定时器模拟PWM,改变其占空比,用以控制LED的亮度。
呼吸灯主要是控制好亮度显示的时间。
顺便复习一下中断和定时/计数器的知识。
一、先了解LED的连接情况:
VCC接上1K的排阻,再连接LED,当单片机I/O口为0时,LED点亮,I/O口为1时,LED熄灭。
二、有关中断和定时/计数器:
(1)中断
第一个,是中断的理解图。
如图,从左向右,可以很清楚的看出中断所需的条件。
A、IP寄存器为优先级的选择(一般默认就OK了,不用管它)。
B、IE寄存器为中断允许控制:
EX0(),外部中断0允许位;
ET0(),定时/计数器T0中断允许位;
EX1(),外部中断0允许位;
ET1(),定时/计数器T1中断允许位;
ES(),串行口中断允许位;
EA (), CPU中断允许(总允许)位。(只要涉及中断,EA必须为1,即CPU开总中断)
C、中断请求标志(TCON和SCON)
主要说说TCON的中断标志,TCON寄存器:
IT0(),外部中断0触发方式控制位。
当IT0=0时,为电平触发方式。
当IT0=1时,为边沿触发方式(下降沿有效)。
IE0(),外部中断0中断请求标志位。
IT1(),外部中断1触发方式控制位。
IE1(),外部中断1中断请求标志位。
TF0(),定时/计数器T0溢出中断请求标志位。
TF1(),定时/计数器T1溢出中断请求标志位。
中断响应条件
1、中断源有中断请求;
2、此中断源的中断允许位为1;
3、CPU开中断(即EA=1)。
以上三条同时满足时,CPU才有可能响应中断。
如:EA=1;//开总中断
EX0=1;//开外部中断0
TCON=0x01;//即IT0=0,此为电平触发方式
最后,要写一个中断函数,如下:
void timer0() interrupt n using m
{
此处写中断后要执行的程序
}
其中n 对应中断的编号,以80C51 单片机为例,编号从0~4,
单片机之呼吸灯(LED) 来自淘豆网m.daumloan.com转载请标明出处.