51单片机采用定时器T1的方式1的中断计数方式,外接开关K4按4次后,8只LED闪烁不停

1、功能描述

采用定时器T1的方式1的中断计数方式,外接开关K4按4次后,8只LED闪烁不停

2、实验原理

定时器原理:8051的定时器可以用于计数外部事件或执行内部定时操作。在本程序中,定时器1被设置为模式2,即8位自动重装载定时器模式。

中断机制:8051微控制器支持中断,可以响应外部或内部事件。定时器溢出可以触发中断,中断服务程序可以执行特定的任务。

端口控制:P2端口用于输出信号,程序通过改变P2端口的状态来实现LED灯的闪烁。

3、编程思路

初始化设置:首先,通过timer1_init()函数初始化定时器1,设置定时器模式、重装载值,并启动定时器。

主循环:在main()函数的无限循环中,P2端口初始设置为高电平(P2=0xff;),然后检查count变量的值。如果count为1,P2端口输出低电平(P2=0x00;),延时500毫秒,再输出高电平,再延时500毫秒,模拟LED灯的闪烁。

中断触发:定时器1的中断服务程序timer1()会在定时器溢出时被调用,将count设置为1,触发P2端口状态的改变。

延时实现:delay()函数通过双重循环实现延时,延时时间由传入的毫秒数决定。

通过这种方式,程序实现了一个简单的LED闪烁效果,展示了定时器中断和端口控制的基本应用。

4、代码

cpp 复制代码
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char

uchar  count=0;

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)
    {
 P2=0xff;
if(count==1)
{
       P2=0x00;
delay(500);
P2=0xff;
delay(500);
}
    }

}

void timer1() interrupt 3
{
    count=1; 
}
相关推荐
LXY_BUAA9 分钟前
《嵌入式操作系统》_GPIOLIB前置知识_20260328
驱动开发·嵌入式硬件
DA022115 分钟前
系统移植-STM32MP1_TF-A概述
单片机·系统移植·stm32mp1
17(无规则自律)26 分钟前
深度剖析Linux Input子系统(2):驱动开发流程与现代 Multi-touch 协议
linux·驱动开发·嵌入式硬件
BackCatK Chen2 小时前
STM32保姆级入门教程|第5章:GPIO内部结构 + 8种模式 + 功能详解
stm32·嵌入式硬件·gpio·推挽输出·开漏输出·gpio内部结构·上拉输入
2301_822782822 小时前
C语言利用EasyX实现图形化界面的小游戏
c语言·单片机·图形化界面·lcd菜单·接口实现
Heartache boy2 小时前
野火STM32_HAL库版课程笔记-TIM触发ADC采集
笔记·stm32·单片机·嵌入式硬件
你疯了抱抱我2 小时前
【Altium Designer】网络线(颜色、旋转、粗细);网络标签 && 端口的差别(重点!)
嵌入式硬件·嵌入式·pcb·电路
蓝凌y2 小时前
51单片机之按键控制RGB灯
单片机·嵌入式硬件
156082072193 小时前
关于XILINX的fir compiler小数倍内插设计
单片机·嵌入式硬件
ivy159868377157 小时前
芯锦科技 HP9116 QC3+多协议USB快充接口芯片
网络·单片机·嵌入式硬件·5g·p2p