单片机秒表程序:汇编语言实现与键盘中断

需积分: 2 3 下载量 74 浏览量 更新于2024-09-08 1 收藏 40KB DOC 举报
"单片机秒表与键盘显示的汇编语言程序,包含T0、INT0中断源的使用,适用于单片机课程学习和汇编语言自学,提供了简单的教学案例。程序涉及到CH451接口芯片的配置,以及秒表功能的实现,通过键盘中断读取键值并控制秒表的启动和停止。" 本文将详细讲解这个单片机秒表与键盘显示的汇编语言程序中的关键知识点。 1. **中断系统**:程序中使用了T0(定时器0)和INT0(外部中断0)作为中断源。中断是单片机处理外部事件的重要机制,当T0或INT0被触发时,CPU会暂停当前任务,执行相应的中断服务子程序,处理完后再回到原来的程序继续执行。 2. **CH451接口芯片**:此程序中与CPU连接的CH451是一种并行接口芯片,用于扩展单片机的I/O口。程序通过特定的指令配置CH451的引脚功能,如PIN4、PIN6、PIN7和PIN3,分别用于负载、数据输入、时钟和数据输出。 3. **系统参数设置**:通过写入特定的字节到CH451,设置其工作模式。例如,设置系统参数04H和80H,分别对应不同的功能配置。 4. **定时器T0**:T0被配置为定时器模式1(TMOD寄存器设置为11H),在每经过预设时间间隔后产生中断,中断服务子程序(T0_INT)负责处理中断事件,例如更新百分之一秒计数单元(CENTI_SEC)。 5. **中断标志位**:K_FLAG位(00H的位0)用于检测是否有按键按下,一旦有按键按下,K_FLAG置1,需要在中断服务子程序中及时清除。 6. **秒表计数器**:程序中定义了MIN(分钟)、SEC(秒)和CENTI_SEC(百分之一秒)变量,用于存储秒表的时间值。每次T0中断都会使CENTI_SEC递增,当达到99时进行进位处理。 7. **键盘处理**:程序通过INT0中断(键盘中断0)来检测按键,K_CD451变量用于存储读取的键码。当检测到0号键被按下,程序进入秒表的初始态并开始显示时间。 8. **中断使能**:通过设置IE和IT0寄存器,开启INT0和T0中断,使得CPU能够响应这两个中断源。 9. **显示子程序**:DISPDATE和STOPWATCH是两个重要的子程序,DISPDATE用于显示采集到的数据,STOPWATCH则用于启动或停止秒表功能。 10. **流程控制**:程序中的跳转指令如JZ、JMP等用于控制程序流程,根据条件决定执行不同的操作,如判断按键码并执行相应动作。 这个汇编语言程序提供了一个基础的单片机秒表系统实例,对于理解中断处理、定时器应用、I/O接口操作以及简单的用户交互具有很好的学习价值。通过阅读和分析这个程序,学生可以深入理解单片机系统的基本运作原理和汇编语言编程技巧。