当管脚P1为低电平时,LED灯亮
#include "reg52.h"
void main(){
P1 = 0xFE;//只有最低位亮
TMOD = 0x01;//高四位为定时器中断1(为0表示没用),低四位为定时器中断0(1:方式1)
TH0 = (65536-5000)/256;//5000以us为单位,此处为5ms;60536依次加一,直到65535时再加一则溢出,执行中断
TL0 = (65536-5000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1);//c51语言中不可用true,只可用1
}
//中断函数无需在前面声明,也不用在主函数中调用它
unsigned char i = 0;//变量定义一般写在外面
void LED_Light() interrupt 1{//1:定时器中断1;0:外部中断1;2:外部中断2;3:定时器中断2;4:串行口中断
i++;
TH0 = (65536-5000)/256;//重新赋初值
TL0 = (65536-5000)%256;
if(i==100){//5ms中断一次,当中断100次时,使流水灯发生变化
P1 = ~P1;
P1 = P1<<1;//左移一位
P1 = ~P1;
i = 0;//LED灯每变化一次,使i重新从0开始计数,每中断100次改变一次
}
}
注释:51单片机
2个8位计数器(16位)方式1(最常用);方式3:常用来产生波形(波特率),用于蓝牙配对
方式1:
16位:高八位TH,低八位TL,由于晶振11.0592MHz,大约为12MHz。
由于12个时钟震荡周期=1个机器周期,故一个机器周期1us