单片机实现脉冲计数及显示程序设计

需积分: 43 4 下载量 154 浏览量 更新于2024-09-16 收藏 32KB DOC 举报
"单片机脉冲计数器程序是一个用于计算和显示脉冲数量的系统,使用单片机作为核心处理器。该系统具备硬件最小系统、LED显示以及控制按钮,能够对脉冲进行0到2000的计数,并且脉冲输入经过光电隔离和整形处理。此外,系统还配备了一个清零按钮,允许用户重置计数值。程序主要包括主程序、中断0服务程序(处理脉冲计数)和中断1服务程序(可能用于其他功能),以及数制转换和显示子程序,确保计数值以适当的格式显示。" 在单片机脉冲计数器程序中,以下几个关键知识点值得深入探讨: 1. **中断服务程序**:中断0服务程序负责增加计数值。当接收到中断请求时,它会读取当前计数值R7,加1后更新到R7,同时检查是否溢出(计数范围0~2000)。如果未溢出,则继续计数,否则清零并重新开始。中断1服务程序可能是用于其他功能,如系统复位或状态监测。 2. **数制转换子程序**:HEXTOBCDD子程序将十六进制的计数值转换为十进制,以便于显示。它通过一系列的移位和加法操作,将每个十六进制位转换为对应的十进制值,存储在R3-R5寄存器中,最后返回十进制形式的计数值。 3. **显示子程序**:DISPLAY子程序负责将十进制计数值转化为适合LED显示的格式。它首先对计数值进行取模10的操作,然后将结果按位存入内存地址30H开始的位置,以便LED依次显示每一位数字。 4. **初始化**:在程序开始,寄存器A、R6、R7以及30H-33H地址的内存被清零,用于初始化计数器和缓存区。同时,设置相关I/O口的状态,如使能外部中断EX0和EX1,以及设置P0口的数据方向。 5. **中断处理**:通过SETBEA和SETBEX0指令开启中断允许,SETBEX1和SETBIT0设置中断触发方式,而SETBPX1可能用于设置某个特定的端口中断。 6. **循环计数**:主程序(NEXT1)中调用HEXTOBCDD和DISPLAY子程序,不断更新和显示计数值。程序进入一个无限循环,直到系统被中断或手动停止。 7. **光电隔离和整形**:在硬件部分,脉冲输入通过光电隔离器可以防止干扰传播到单片机,同时整形电路确保输入的脉冲信号是稳定可靠的,适合单片机处理。 8. **清零按钮**:系统中包含一个清零按钮,其功能是在需要时将计数值重置为0,通常通过中断处理实现。 这个单片机脉冲计数器程序展示了单片机如何处理输入信号、执行计数、显示结果以及与外部硬件交互的基本流程,是学习和理解单片机控制系统设计的重要实例。