用汇编语言程序实现电子时钟

基本思想:
当需要编写程序实现较复杂的功能时,整个程序就如同一个装配体(总成),而子程序就如同装配体中的零件,子程序与主程序的接口就如同机械中的连接件将不同零件装配起来。
使用子程序能使程序结构更清晰,且逻辑不易发生错误。

实现电子时钟需要的子程序:
1.显示子程序disp
2.显示延时子程序dey1
3.中断服务intt0
4.中断服务退出子程序out
5.加一子程序add1
6.清空子程序clr0

应注意的事项:
1.位选应与段码输送相配合,若使用P2位选,P2.0连接最前端的数码管,则P2=#00000001B,即P2.0=1时,应输送小时的最高位段码
2.若通过P2左移实现显示,可通过左移次数判断一次显示是否完成,也可将P2的值赋给A,通过判断ACC.7是否为1得到一次显示是否完成,后者在实现上更方便
3.进入中断服务时,可将中断允许ET0先断开,在中断服务退出子程序中再将ET0打开,可减少计时误差
4.判断秒钟、分钟是否达到60,时钟是否达到24,用DJNE语句比用减法后判断JC更简单
5.当秒钟、分钟达到60,时钟达到24时,需调用清空子程序clr0将其清0
6.加一子程序add1可通过16进制数加#01h后通过十进制调整指令DA将其转换为10进制数,通过分别屏蔽高、低4位并通过SWAP指令分别赋给对应的显缓区
7.共阳极8位二极管显示0~9的段码分别为:

0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

显示横杠(——)的段码为0bfh
共阴极段码取反即可

程序代码如下:

org  0000h
ljmp    main
org 000bh
ljmp    intt0
org 0100h
main:   mov tmod,#01h
mov tl0,#0b0h
mov th0,#3ch
setb    easetb  et0
setb    tr0
mov r4,#20
mov 73h,#10
mov 76h,#10
mov dptr,#tableloop:    lcall   disp
ljmp    loopdisp:   mov r3,#01h
mov r0,#78hplay:    mov a,r3
mov p2,a
mov a,@r0
movc    a,@a+dptr
mov p0,a
lcall   dey1
mov a,r3
dec r0
jb  acc.7,next
rl  amov    r3,aljmp    play
next:ljmp   dispdey1:   mov r6,#10
dl1:    mov r7,#19h
dl2:    djnz    r7,dl2djnz  r6,dl1
retintt0:   push    acc
push    psw
clr et0
clr tr0
mov tl0,#0b0h
mov th0,#3ch
setb    tr0
djnz    r4,out
adds:   mov r4,#20
mov r0,#71h
lcall   add1
mov a,r2
clr c
cjne    a,#60h,addmin
addmin: jc  out
lcall   clr0
mov r0,#74h
lcall   add1
mov a,r2
clr c
cjne    a,#60h,addh
addh:   jc  out
lcall   clr0
mov r0,#77h
lcall   add1
mov a,r2
clr c
cjne    a,#24h,hourreset
jc  out
hourreset:  lcall   clr0out:    pop psw
pop acc
setb    et0
retiadd1:   inc r0
mov a,@r0
swap    a
dec r0
orl a,@r0
add a,#01h
da  a
mov r2,a
anl a,#0fh
mov @r0,a
mov a,r2
anl a,#0f0h
swap    a
inc r0
mov @r0,a
retclr0:    mov a,#0
mov @r0,a
dec r0
mov @r0,a
rettable:   db  0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0bfh
end

使用proteus7.5仿真的效果如下:

用汇编程序实现电子时钟相关推荐

  1. 从51开始的单片机之旅(一)----流水灯、矩形键盘、电子时钟

    说一下个人的学习经历 我做过的项目: 今天先把当初做的89E51总结出来 先说下89E51 一.流水灯.数码管 二.矩阵键盘,蜂鸣器和电子时钟 结语: 说一下个人的学习经历 我是大二开始进入学校电子设 ...

  2. 用easyx画电子钟_Canvas入门-利用Canvas绘制好玩的电子时钟

    在这之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineTo() fill() stroke() fillRect() clearRect() ...

  3. c语言实验报告世界时钟,基于LCD的电子时钟实验报告.doc

    PAGE \* MERGEFORMAT 3 河海大学物联网工程学院 课程设计报告 题 目 基于LCD的电子时钟实验 专业.学号 电信 . 授课班号 完成时间 2013.07.05 课程设计(报告)任务 ...

  4. Canvas入门-利用Canvas绘制好玩的电子时钟

    在这之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineTo() fill() stroke() fillRect() clearRect() ...

  5. 电子时钟单片机c语言程序,51单片机电子时钟C语言程序

    本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...

  6. JavaBean网页电子时钟

    package com.bean;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date ...

  7. python数码时钟代码_Python+Pyqt实现简单GUI电子时钟

    本文实例为大家分享了Python+Pyqt实现简单GUI电子时钟的具体代码,供大家参考,具体内容如下 突发奇想想用GUI做一个简单的电子时钟界面,利用pyqt模块也很方便,代码如下: from PyQ ...

  8. ntp如何确认与服务器偏差_LED电子时钟显示屏如何实现时间同步统一校时?

    LED电子时钟显示屏采用一体式铝合金边框设计,更坚固美观节能环保,更以其简单的操作和稳定的性能,广泛应用于学校.考场.医院.金融.移动通信.石油.电力.交通.工业以及国防等同步时钟系统的显示终端,LE ...

  9. C语言/C++程序员大神打造纯C的电子时钟(加图形库+源码)

    C语言/C++程序员大神打造纯C的电子时钟,每天看时间再也不麻烦了 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进 ...

最新文章

  1. arcgiss如何在空白点图层加入坐标_连载 | 21 QGIS工程文件属性设置(2)——坐标参照系、变换、默认样式、数据源、关系和变量...
  2. php实现复选框删除功能,php怎么实现复选框批量删除
  3. 微软:本周三个安全更新 暂不会修正Excel漏洞
  4. mesageflow 集成spider 开发思路 手稿
  5. instr 函数从后往前计数 instr(spell,' ',-1)
  6. [Java基础]函数式接口
  7. 清华大学计算机系男女比v,清华男女生比例惊人,但找女朋友却不愁,这是为什么?...
  8. 闭式系统蒸汽管径推荐速度_空调水系统设计、空调风系统设计要点
  9. pdfbox 第一页加内容_Java使用PDFBox操作PDF文件获取页码、文章内容、缩略图
  10. 阿里云RDB-MySQL5.7数据库:Specified key was too long; max key length is 767 bytes;
  11. 魔法方法——Python
  12. 客户端和服务器之间的信息结构,客户端和服务器之间的信息结构
  13. ORB特征提取算法解析
  14. iOS 封装Healthkit
  15. css after伪元素做文字下划线
  16. Missing Parts——Alpha 第 3 季NFT作品集来啦!
  17. 2021年了,微信公众号还有前途吗?
  18. 一辆智能小车,最初(时间为0)的位置为(0,0),我们想知道它最后的位置。小车以每小时10公里的速度向北移动(以北为y轴正向,以东为x轴正向)。小车会受到一系列依照时间戳记排序的命令,1表示“向左转”
  19. java ema算法_K线图指标算法(MA EMA)
  20. 我花8个月从0开始面上大厂自动化测试岗,拿个18k不过分吧?

热门文章

  1. [经济杂谈]经济危机的真相
  2. iphone邮箱看不到已发送_不看不知道 教你如何设置iPhone邮箱
  3. 风靡全球的社交媒体二维码在国内正式上线啦!
  4. 风靡全球的英雄联盟手游,竟然没有国服,只能教你玩国际服了...
  5. Codeforces 924C Riverside Curio(瞎搞)
  6. Arista教你如何讨容器、白盒基础架构数据中心玩家的欢心
  7. 硬盘安装原版雪豹10.6.3与win7不完美教程
  8. 安卓逆向之双剑合璧实现内存扫描
  9. Java开源生鲜电商平台-深刻理解电商的库存架构与解决方案(源码可下载)
  10. 智见深度|京东ToB越过山丘