历史上的今天
返回首页

历史上的今天

今天是: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


推荐阅读

史海拾趣

台湾晶豪(ESMT)公司的发展小趣事

随着电子行业的不断发展,晶豪科技也积极应对市场变化。公司扩大代工厂的晶圆开工规模,以满足不断增长的客户需求。这一举措不仅使公司能够更灵活地应对市场波动,还为客户提供了更稳定的产品供应。同时,随着晶圆开工量的增加,公司的销售额也实现了稳步增长。

睿赫(crechip)公司的发展小趣事

作为一家有社会责任感的企业,睿赫公司始终关注环境保护和可持续发展。公司在产品研发和生产过程中,积极采用环保材料和绿色生产工艺,减少对环境的影响。同时,公司还积极参与公益事业,为社会做出了积极的贡献。

在可持续发展方面,睿赫公司致力于推动电子行业的绿色化和智能化发展。公司不断加强技术研发和创新,推出了一系列符合环保要求和高性能要求的产品,为电子行业的可持续发展做出了积极的贡献。

ECLIPTEK公司的发展小趣事

为了进一步扩大市场份额,ECLIPTEK公司决定实施国际扩张战略。公司先后在亚洲、欧洲和北美等地设立了分支机构,并在当地建立了生产基地。为了更好地满足当地客户的需求,ECLIPTEK还实施了本地化战略,根据市场特点调整产品设计和生产流程。这一举措不仅提高了公司的市场覆盖率,还增强了其国际竞争力。

DC Components公司的发展小趣事

DC Components公司在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,通过采用环保材料和节能技术,降低生产过程中的环境影响。此外,公司还积极参与公益活动,回馈社会,为社区的和谐发展做出了积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

ANSHAN [Anshan Suly Electronics]公司的发展小趣事

在快速发展的过程中,ANSHAN公司始终把人才队伍建设放在首位。公司注重引进和培养高素质的技术人才和管理人才,为他们提供广阔的发展空间和良好的工作环境。同时,公司还建立了完善的培训体系和激励机制,鼓励员工不断学习新知识、掌握新技能。这些举措不仅提升了员工的综合素质和能力水平,也为公司的长远发展提供了有力的人才保障。

Defense Supply Center Columbus公司的发展小趣事

随着国防事业的不断发展,军事电子产品的市场需求也在不断增加。Defense Supply Center Columbus公司敏锐地捕捉到了这一市场机遇,积极拓展国内外市场。公司通过与国内外知名企业和机构建立合作关系,共同开发新产品、新技术,不断拓展市场份额。同时,公司还积极参加各类国际展览和论坛,展示公司的技术实力和产品优势,吸引了众多潜在客户的关注。这些市场拓展的努力,为公司的发展注入了新的动力。

问答坊 | AI 解惑

推荐FPGA+单片机开发板。。。

联华众科FPGA开发板 FA130 北京联华众科科技有限公司 http://www.lianhua-zhongke.com.cn Abstract  摘 要:联华众科FPGA开发板FA130核心器件为 Altera Cyclone系列的EP1C3,配置芯片为EPCS1,FA130上可以运行SOPC Bui ...…

查看全部问答>

求高手帮忙看下程序哪里有问题?基于arm3000

此为俄罗斯方块,运行无错误 但是文本输出没有显示,方块在落下后,立即消失,无法呈现俄罗斯方块应有的游戏效果 …

查看全部问答>

电力行业企业高薪招聘嵌入式开发人员!!

    欢迎满足以下条件之一的有识之士与我们联系,公司网址:     www.nerc.com.cn,发送简历邮箱地址:whl668@epri.ac.cn。     1.具有2年以上电力行业嵌入式产品开发经验。         2. ...…

查看全部问答>

请问哪里有MAXPLUS的商业版下载?

请问哪里有MAXPLUS的商业版下载?请提供个连接好吗?…

查看全部问答>

如何通过编程获得通话时长(使用Modem进行通话)

我在做一个PC上的电话通话软件,使用C# + MSCOMM控件 + AT指令,已经实现大部分功能,现在希望能够获得每次通话时长的信息。 问题是: 1. 我发现MSCOMM无法捕获对方开始接听电话的事件,即:我方拨号后,等待对方应答,对方一旦应答,如何捕捉这 ...…

查看全部问答>

关于CommandBar的问题,请高手赐教!!!!

首先说一下的是我用的是MFC 在父窗口中创建一个子对话框,我发现子对话框的默认的CCommandBar会把父窗口的挡住 我现在想在子对话框中使用父窗口的CCommandBar 也就是说不让子对话框产生默认的CCommandBar,使用父窗口的CCommandBar 可以实现吗? …

查看全部问答>

刘掌柜的心声:创易新篇章

创易电子从2008年3月份创店到现在两年半时间。很快就要到皇冠了。创易内部也将会进行一张革命性的变革,一页新的篇章即将揭开。   回首这两年半,创易有了很大的发展,从我一个人,到现在的六个人,营业额也在稳步增长。但是我始终感觉创易 ...…

查看全部问答>

请教关于RTC时钟的问题

                                 万利的EK-STM32F板子,预分频值设置为32763,打开秒中断,在秒中断程序里LED翻转一次,看了一下,LED翻转一次的时 ...…

查看全部问答>

关于c语言指针的疑惑

例子如下: U8 unsigned char U16 unsigned int static U16 data u16MsgArray[MSG_ARRAY_SIZE]; ((U8 *)(&(u16MsgArray[ u8MsgHead])))[0] = MsgType;        问题如下,最后一个语句如何理解,我感觉我的脑子绕不过来了 ...…

查看全部问答>