使用AT89C51微控制器构建八位数字频率计

需积分: 12 2 下载量 145 浏览量 更新于2024-10-03 收藏 38KB DOC 举报
"这篇文章提供了用AT89C51单片机制作八位数字频率计的完整程序代码,包括中断服务子程序和主程序。主要利用了定时器T1进行定时,T0作为计数器,通过二进制转BCD码的方法来显示频率测量结果。" 这篇程序是基于AT89C51单片机实现的八位数字频率计,其核心在于利用定时器T1和T0进行时间基准的设定和频率的计算。程序首先在00H地址处设置跳转到主程序MAIN,然后定义了一个50M的中断服务子程序,该子程序用于处理定时器T1中断。在中断服务子程序中,当定时器T1达到预设的1秒定时后,会关闭闸门,停止T0计数,并将T0的计数值存储起来。 主程序MAIN初始化了堆栈指针SP、定时器TH1和TL1的初值,设置了TMOD寄存器以配置定时器工作模式,启动计数器0和1,并开启中断。接下来,程序使用了一个动态扫描的表格(TABLE)来控制LED数码管的显示,通过读取不同地址的数值(如30H、31H、32H、33H等)并转换为BCD码,逐位显示频率值。 在程序的最后部分,COUNT子程序实现了二进制转BCD码的功能,这在显示频率值时非常关键,因为单片机通常使用BCD码来驱动七段数码管显示。整个程序通过中断和循环扫描的方式,实时更新和显示测量到的频率值。 这个程序涉及到的知识点包括: 1. AT89C51单片机的基本结构和工作原理。 2. 定时器/计数器的使用,特别是T1和T0的配置和中断处理。 3. 中断服务子程序的编写,包括中断入口地址、中断标志的清除和中断返回操作。 4. 二进制转BCD码的算法,用于数码管显示。 5. 内存空间的组织,如ORG指令指定内存地址。 6. 寄存器的使用,如SP、PSW、TMOD、P0、P2、P3等。 7. 单片机的中断系统,包括全局中断EA、定时器中断ET1和ET0。 8. 数码管动态扫描显示技术,通过改变段选和位选来显示不同的数字。 通过这个程序,读者可以学习到如何利用单片机实现一个基本的频率测量设备,这对于电子工程和嵌入式系统设计的学习者来说是非常有价值的实践项目。