建站之星导出网站,广州设计公司排名榜,闵行网站建设公司,哪些行业做网站的多1、功能描述
采用定时器T1的方式1的中断计数方式#xff0c;外接开关K4按4次后#xff0c;8只LED闪烁不停 2、实验原理
定时器原理:8051的定时器可以用于计数外部事件或执行内部定时操作。在本程序中#xff0c;定时器1被设置为模式2#xff0c;即8位自动重装载定时器模式…1、功能描述
采用定时器T1的方式1的中断计数方式外接开关K4按4次后8只LED闪烁不停 2、实验原理
定时器原理:8051的定时器可以用于计数外部事件或执行内部定时操作。在本程序中定时器1被设置为模式2即8位自动重装载定时器模式。
中断机制:8051微控制器支持中断可以响应外部或内部事件。定时器溢出可以触发中断中断服务程序可以执行特定的任务。
端口控制:P2端口用于输出信号程序通过改变P2端口的状态来实现LED灯的闪烁。 3、编程思路
初始化设置:首先通过timer1_init()函数初始化定时器1设置定时器模式、重装载值并启动定时器。
主循环:在main()函数的无限循环中P2端口初始设置为高电平(P20xff;)然后检查count变量的值。如果count为1P2端口输出低电平(P20x00;)延时500毫秒再输出高电平再延时500毫秒模拟LED灯的闪烁。
中断触发:定时器1的中断服务程序timer1()会在定时器溢出时被调用将count设置为1触发P2端口状态的改变。
延时实现:delay()函数通过双重循环实现延时延时时间由传入的毫秒数决定。
通过这种方式程序实现了一个简单的LED闪烁效果展示了定时器中断和端口控制的基本应用。 4、代码
#include reg52.h
#define uint unsigned int
#define uchar unsigned charuchar count0;void delay(unsigned int xms)
{unsigned char i,j;while (xms){i 2;j 239;do{while (--j);}while (--i);xms--;}}void timer1_init(void)
{TMOD 0x50; TH1 (65536-4)/256; TL1 (65536-4)%256;ET1 1; EA 1; TR1 1;
}void main()
{timer1_init(); while (1){P20xff;
if(count1)
{P20x00;
delay(500);
P20xff;
delay(500);
}}}void timer1() interrupt 3
{count1;
}