历史上的今天
今天是:2025年01月22日(星期三)
2018年01月22日 | 8279显示电子钟的设计与程序源代码
2018-01-22 来源:eefocus
可以看看时钟程序是怎么样设计的。


Z8279 EQU 08701H ;8279 状态/命令口地址 D8279 EQU 08700H ;8279 数据口地址 LEDMOD EQU 00H ;左边输入 八位字符显示 ;外部译码键扫描方式,双键互锁 LEDFEQ EQU 2FH ;扫描速率 LEDCLS EQU 0C1H ;清除显示 RAM LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址 ORG 0000H AJMP START ORG 001BH ;INT T1 入口地址 AJMP INT_T1 ORG 0040HSTART: MOV SP,#60H LCALL INIT8279 ;初始化8279 MOV R3,#0H ;时 MOV R2,#0H ;分 MOV R1,#0H ;秒 MOV R6,#0H ;标志 MOV TMOD,#10H MOV TL1,#00H ;50 MS 的时间常数 MOV TH1,#04CH MOV R0,#20 SETB TR1 SETB ET1 SETB EA ;允许中断WAIT: CJNE R6,#0FFH,WAIT LCALL DISPLAY MOV R6,#0 SJMP WAIT INIT8279: ;8279初始化子程序 PUSH DPH ;保存现场 PUSH DPL PUSH ACC LCALL DELAY ;延时 MOV DPTR ,#Z8279 MOV A,#LEDMOD ;置8279工作方式 MOVX @DPTR,A MOV A,#LEDFEQ ;置键盘扫描速率 MOVX @DPTR,A MOV A,#LEDCLS ;清除 LED 显示 MOVX @DPTR,A LCALL DELAY ;延时 POP ACC ;恢复现场 POP DPL POP DPH RET ;显示字符子程序 ;输入R4,位置 R5,值DISLED: PUSH DPH ;保存现场 PUSH DPL PUSH ACC MOV A,#LEDWR0 ;置显示起始地址 ADD A,R4 ;加位置偏移量 MOV DPTR,#Z8279 MOVX @DPTR,A ;设定显示位置 MOV DPTR,#LEDSEG ;置显示常数表起始位置 MOV A,R5 MOVC A,@A+DPTR ;查表 MOV DPTR,#D8279 MOVX @DPTR,A ;显示数据 POP ACC ;恢复现场 POP DPL POP DPH RETDELAY: ;延时子程序 PUSH 0 ;保存现场 PUSH 1 MOV 0,#0HDELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1 POP 1 ;恢复现场 POP 0 RET INT_T1: ;INT_T1中断服务子程序 PUSH DPH ;保护现场 PUSH DPL PUSH ACC PUSH PSW CLR TR1 MOV TL1,#00H ;50MS 定时常数 MOV TH1,#4CH SETB TR1 DJNZ R0,EXIT ;判断毫秒=0 MOV R0,#20 ;DELAY 1 SECOND MOV R6,#0FFH ;置秒标志 CJNE R1,#59H,SECOND;判断秒=59 MOV R1,#99H CJNE R2,#59H,MINUTE;判断分=59 MOV R2,#99H CJNE R3,#23H,HOUR ;判断时=23 MOV R3,#99HHOUR: MOV A,R3 ADD A,#1 ;时加1 DA A MOV R3,AMINUTE: MOV A,R2 ADD A,#1 ;分加1 DA A MOV R2,ASECOND: MOV A,R1 ADD A,#1 ;秒加1 DA A MOV R1,AEXIT: POP PSW ;恢复现场 POP ACC POP DPL POP DPH RETI ;中断返回DISPLAY: MOV A,R3 ANL A,#0FH MOV R5,A MOV R4,#6 LCALL DISLED ;显示小时低位 MOV A,R3 SWAP A ANL A,#0FH MOV R5,A MOV R4,#7 LCALL DISLED ;显示小时高位 MOV A,R2 ANL A,#0FH MOV R5,A MOV R4,#3 LCALL DISLED ;显示分钟低位 MOV A,R2 SWAP A ANL A,#0FH MOV R5,A MOV R4,#4 LCALL DISLED ;显示分钟高位 MOV A,R1 ANL A,#0FH MOV R5,A MOV R4,#0 LCALL DISLED ;显示秒低位 MOV A,R1 SWAP A ANL A,#0FH MOV R5,A MOV R4,#1 LCALL DISLED ;显示秒高位 RET LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F' DB 6DH,02H,08H,00H,59H,0FH,76H;'U,-,_, ,I,O,P, ' END
上一篇:采用AT89C2051的智能时钟
下一篇:I2C总线原理与应用
史海拾趣
|
联华众科FPGA开发板 FA130 北京联华众科科技有限公司 http://www.lianhua-zhongke.com.cn Abstract 摘 要:联华众科FPGA开发板FA130核心器件为 Altera Cyclone系列的EP1C3,配置芯片为EPCS1,FA130上可以运行SOPC Bui ...… 查看全部问答> |
|
欢迎满足以下条件之一的有识之士与我们联系,公司网址: www.nerc.com.cn,发送简历邮箱地址:whl668@epri.ac.cn。 1.具有2年以上电力行业嵌入式产品开发经验。 2. ...… 查看全部问答> |
|
我在做一个PC上的电话通话软件,使用C# + MSCOMM控件 + AT指令,已经实现大部分功能,现在希望能够获得每次通话时长的信息。 问题是: 1. 我发现MSCOMM无法捕获对方开始接听电话的事件,即:我方拨号后,等待对方应答,对方一旦应答,如何捕捉这 ...… 查看全部问答> |
|
首先说一下的是我用的是MFC 在父窗口中创建一个子对话框,我发现子对话框的默认的CCommandBar会把父窗口的挡住 我现在想在子对话框中使用父窗口的CCommandBar 也就是说不让子对话框产生默认的CCommandBar,使用父窗口的CCommandBar 可以实现吗? … 查看全部问答> |
|
创易电子从2008年3月份创店到现在两年半时间。很快就要到皇冠了。创易内部也将会进行一张革命性的变革,一页新的篇章即将揭开。 回首这两年半,创易有了很大的发展,从我一个人,到现在的六个人,营业额也在稳步增长。但是我始终感觉创易 ...… 查看全部问答> |
|
例子如下: U8 unsigned char U16 unsigned int static U16 data u16MsgArray[MSG_ARRAY_SIZE]; ((U8 *)(&(u16MsgArray[ u8MsgHead])))[0] = MsgType; 问题如下,最后一个语句如何理解,我感觉我的脑子绕不过来了 ...… 查看全部问答> |




