本文给出基于DS1302实时时钟芯片与AT89C2051单片机、以红外遥控器调时的LED电子钟完整汇编源程序。程序按遥控器键码定义各功能键,可适配不同遥控器。
一、资源分配
遥控器按键数据码经EQU定义:静音键(10H)作闹铃开/关、菜单键(0CH)进入/退出设置、左移(46H)、右移(47H)、增加(19H)、减少(1DH)、显示键(16H)控制数码管显示/关闭、日历键(44H)触发DS1302初始化。
I/O分配:K_on(P3.0)为闹铃输出;LED1(P3.3)、LED2(P3.4)为数码管位选;LED3CLK(P3.5)接DS1302时钟;LED4IO(P3.7)接DS1302数据;RST(P3.1)接DS1302复位端。
二、内存与中断安排
计时数据存放于60H~66H(秒、分、时、日、月、星期、年),闹铃分、时存于6AH、6BH。程序采用三个中断源:INT0(0003H)处理红外遥控接收;T0(000BH)产生200μs时基;T1(001BH)驱动LED动态扫描显示。DS1302读写子程序R_BIT、SETONE及BCD/HEX转换子程序均已给出。
三、使用说明
源程序末尾附DS1302的读写时序子程序与显示译码表,移植时仅需按实际遥控器修改键码定义,并调整YS1、YS2延时参数以适配晶振频率。