1、当P1.2=0时,显示年,月,日。(3)蜂鸣器发声子程序(BUZZL和BUZZH)设置初始值使BUZZL发声频率为500HZ,BUZZH发声频率为1500HZ。(4)键盘修改子程序读入进入中断前的数据,将8563的20H单元内容送入单片机内部12H单元(秒);21H单元内容送入单片机内部13H单元(分);22H单元内容送入单片机内部14H单元(时)便于修改后显示。读入输入的键值为0AH时,为A键修改小时参数。设置小时的十位闪烁命令等待按键操作,读入键值判断是否超过三,超过则报警且要求重新输入。输入正确时回显,设置小时的个位闪烁命令等待按键操作,读入键值判断个位不超过9,然后判断小时整个数是否小
2、于24。分和秒的设置与小时类似,不同的是十位不能超过5个位不能超过9。(5)闪烁子程序设置入口闪烁参数单元值 3 系统电路图4 外围接口模块硬件电路功能描述ZLG7290B驱动8个数码管显示时钟时间,管理按键并读取键值,和/INT1相连,引发中断。PCF8563T设置时钟时间,控制时间的运行,和/INT0相连,每一秒产生一次中断。蜂鸣器整点报时,错误提示KEY1控制显示时间或日期5 主程序中主要变量定义变量名称RAM单元/寄存器功能WSLA_85630A2HPCF8563T写地址RSLA_85630A3HPCF8563T读地址WSLA_729070HZLG7290B写地址RSLA_729071
3、HZLG7290B读地址SS50H为闪烁程序传递参数无10H-1DH准备向时钟芯片写入的值07H写入参数个数00H参数和控制命令缓冲区首地址02H从器件内部地址03H从器件写地址30H写入闪烁控制字使闪烁速度最快6 系统软件中各个子程序的功能描述子程序名称入口参数出口参数功能描述INT_RCT读取时间参数送数码管显示,并在整点时刻报警BUZZL蜂鸣器以500HZ频率发声BUZZH蜂鸣器以1500HZ频率发声ADJUST20H-26H单元将20H-26H中从PCF8563中读出的7个参数无关位屏蔽掉CHAIFEN28H-2FH单元38H-3FH单元将20H-26H单元的参数拆分并在查表后送28H
4、-2FH,38H-3FHCF累加器AR4(H)R3 将A中的数据拆分为两个独立的BCD码并查表结果存于R4 R3INT_7290修改时间、回显、纠错、闪烁FLASH控制闪烁位置RDKEY读键值子程序WR856310H-1DH单元向日历芯片写入时间参数WRNBYT多字节写操作RDADD多字节读操作8 程序清单SDA BIT P1.0SCL BIT P1.1WSLA_8563 EQU 0A2H ;PCF8563T口地址RSLA_8563 EQU 0A3H WSLA_7290 EQU 70H ;ZLG7290B口地址RSLA_7290 EQU 71HORG 8000HLJMP 8040HORG 80
5、03HLJMP INT_RCTORG 8013HLJMP INT_7290ORG 8040HSTART: MOV SP,#60H CLR P1.7 ;ZLG7290复位 LCALL DELAY SETB P1.7;*设定pdf8563tde时间和命令参数(参数和控制命令缓冲区10H-1DH) MOV 10H,#00H ;启动控制字 MOV 11H,#1FH ;设置报警及定时器中断 MOV 12H,#50H ;秒单元 MOV 13H,#59H ;分单元 MOV 14H,#08H ;小时单元 MOV 15H,#01H ;日期单元 MOV 16H,#01H ;星期单元 MOV 17H,#01H ;月
6、单元 MOV 18H,#10H ;年单元 MOV 19H,#00H ;设定分报警 MOV 1AH,#00H ;设定小时报警 MOV 1BH,#00H ;设定日报警 MOV 1CH,#00H ;设定星期报警 MOV 1DH,#83H ;设定CLKOUT的频率,1秒周期方波 MOV R7,#0EH ; MOV R0,#10H ;参数与控制命令缓冲区首地址 MOV R2,#00H ;从器件内部子地址 MOV R3,#WSLA_8563;准备向PCF8563T写入数据串 LCALL WRNBYT ;写入时间,控制命令到PCF8563T SETB EA ;启动总中断 SETB EX0 ;启动INT_RC
7、T(INT_0) SETB IT0 ;定时器0下降沿有效 SETB EX1 ;启动INT_7290(INT_7290) SETB IT1 ;定时器1下降沿有效 SJMP $ ;等待中断中断服务子程序INT_RCTINT_RCT:MOV R7,#07H ;数据块字节数 MOV R0,#20H ;内部数据块首地址 MOV R2,#02H ;内部寄存器首地址向8563写地址 MOV R4,#RSLA_8563;从8563读地址 LCALL RDADD ;调读数据子程序,将读出的数据存放于单片机20H-26H中 MOV A,21H ;判断是否为59分 CJNE A,#59H,NEXT1 MOV A,2
8、0H ;判断是否为55秒 CJNE A,#55H,NEXT2 LCALL BUZZL SJMP NEXTNEXT2: CJNE A,#56H,NEXT3NEXT3: CJNE A,#57H,NEXT4NEXT4: CJNE A,#58H,NEXT5NEXT5: CJNE A,#59H,NEXTNEXT1: CJNE A,#00H,NEXT MOV A,20H CJNE A,#00H,NEXT LCALL BUZZHNEXT: LCALL ADJUST ;调时间调整子程序 LCALL CHAIFEN ;调拆分子程序,将20H-26H中的参数分别存28H-2FH,38H-3FH中 MOV R7,#
9、08H MOV R2,#10H MOV R3,#WSLA_7290 JNB P1.2,YEARS ;使用P1.2控制显示内容 MOV R0,#38H ;显示时分秒 SJMP DISPYEARS: MOV R0,#28H ;显示年月日DISP:调7290显示子程序 JNB P3.2,$ RETIBUZZBUZZL: PUSH 07H MOV TMOD,#01H ;方式1 MOV TL0,#66H ;低频500HZ MOV TH0,#0FCH MOV R7,#50 SETB TR0LOOPL: JNB TF0,$ CLR TF0 MOV TL0,#66H CPL P3.4 ;驱动蜂鸣器 DJNZ R7,LOOPL SETB P3.4 POP 07H RETBUZZH: MOV TMOD,#01H MOV TL0,#0CDH ;高频1500HZ MOV TH0,#0FEH MOV R7,#100LOOPH: MOV TL0,#0CDH DJNZ R7,LOOPH键盘修改中断服务程序INT_7290INT_7290:PUSH 00H PUSH 02H PUSH 03H PUSH 04H PUSH 07H PUSH ACC PUSH PSW MOV R7,#07H ;从器件内部从地址准备向8563写入数据串准备从8563读
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1