51单片机实现利用定时/计数器T0对外部脉冲(用按键进行模拟)进行计数,并将计数值以二进制形式在8个LED上显示出来

本文详细介绍了如何使用51单片机的定时/计数器T0对按键产生的外部脉冲进行计数,并将计数值以二进制形式在8个LED上逐位显示的过程,涉及C语言编程和中断处理。
摘要由CSDN通过智能技术生成

51单片机实现利用定时/计数器T0对外部脉冲(用按键进行模拟)进行计数,并将计数值以二进制形式在8个LED上显示出来.

每次闪烁进一位

连线如下:

代码如下:

#include <reg51.h>
#define LED_PORT P2

                                   // 初始化函数
void init() {
                                   // 设置T0工作在模式1,并设置为外部时钟源
    TMOD = 0x01;                   // 设置 T0 为模式1
    TH0 = 0;                       // 初始计数值高位
    TL0 = 0;                       // 初始计数值低位
    TR0 = 1;                       // 启动 T0 定时器

// 配置外部中断0(用于T0溢出中断)
    ET0 = 1;                       // 允许T0中断
    EA = 1;                        // 允许总中断

// 初始化LED端口
    LED_PORT = 1;                  // 全部LED关闭
}

// 定时器0中断服务程序
void timer0_ISR() interrupt 1 {
    static unsigned int count = 0; // 计数值

// 更新计数值
    count++;

// 输出二进制形式到LED端口
    LED_PORT = ~count;                // 取反以便LED亮起,因为LED共阴
}

// 主函数
void main() {
    init();                           // 初始化

    while(1) {
                                       // 主循环中不需要做任何事情,因为计数和显示工作在中断中完成
    }
}
 

代码截图如下:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值