文档详情

单片机控制LED灯闪烁原理.doc

发布:2017-08-14约字共5页下载文档
文本预览下载声明
一、电路图 二、原理 对于较长时间的定时,应采用复合定时的方法。这里使T/C0工作在定时器方式1,定时100ms,定时时间到后P1.0反相,即P1.0端输出周期200ms的方波脉冲。另设T/C1共作的计数器方式2,对T1输出的脉冲计数,当计数满5次时,定时1时间到,将P1.7端反相,改变灯的状态! 三、源程序 #include reg51.h /*头文件的定义*/ sbit P1_0=P1^0; /* 定义p1.0端口*/ sbit P1_7=P1^7; timer0() interrupt 1 using 1 { /* 定时器0的中断服务程序 */ P1_0=!P1_0; /* P1.0取反 */ TH0=(65536-50000)/256; /* 赋高八位初值*/ TL0=(65536-50000)%256; /* 赋低八位初值*/ } timer1() interrupt 3 using 2 { /*定时器1中断服务程序 */ P1_7=!P1_7; /*p1.7取反 */ } main() { /*主函数*/ P1_7=0; /* 置灯初始灭 */ P1_0=1; /* 保证第一次反相便开始计数 */ TMOD=0x61; /* 定时器定时和计数 */ TH0=(65536-50000)/256; /* 赋初值*/ TL0=(65536-50000)%256; /* */ TH1=256-5; TL1=256-5; IP=0x08; /* 设置寄存器优先级 */ EA=1; /* CPU开中断 */ ET0=1; /* 开T/C0中断 */ ET1=1; /* 开T/C1中断 */ TR0=1; /* 启动T/C0 */ TR1=1; /* 启动T/C1 */ for(;;)/* */ { } } 四、Keil调试程序过程与结果: 1.新建一个项目 2.将led程序添加进去 3.调试程序
显示全部
相似文档