找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1828|回复: 0
收起左侧

单片机电子时钟汇编语言程序(可调节时间)附Proteus文件

[复制链接]
ID:997631 发表于 2023-1-20 14:38 | 显示全部楼层 |阅读模式
采用的单片机是89C52,用了两个锁存器74HC573来接入数码管的位选和段码引脚。
部分源码:

Proteus工程图:(下面的4*4按钮、最上面的128*64LCD显示屏和左边的发光二极管非本次内容的必要部分,可以删除)
三个按钮分别对应的功能:按钮1:在”调节时“和”调节分“中间轮换
按钮2:时间数值+1
按钮3:时间数值 -1

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif

单片机汇编语言源程序如下:
  1. ORG  0000H
  2.         LJMP  MAIN
  3.                 ORG  000BH     
  4.                         LJMP  INTT0

  5. MAIN:                        
  6.                                 MOV  R0,#70H                ;70后面的12位地址清零
  7.                 MOV  R7,#0CH
  8. INIT:                          MOV  @R0,#00H
  9.                 INC  R0
  10.                 DJNZ  R7,INIT
  11.                                 
  12.                 MOV  72H,#0AH
  13.                 MOV  75H,#0AH
  14.                                 
  15.                 MOV  TMOD,#01H
  16.                 MOV  TL0,#00H
  17.                 MOV  TH0,#4CH                                
  18.                 SETB  EA
  19.                 SETB  ET0
  20.                 SETB  TR0
  21.                                 
  22. START1:                        LCALL  SCAN
  23.                                 LCALL  KEYSCAN
  24.                 SJMP  START1
  25.                                 
  26. ;延时1MS子程序
  27. DL1MS:                         MOV  R6,#14H                ;20*25*2us
  28. DL1:                        MOV  R7,#19H
  29. DL2:                        DJNZ  R7,DL2
  30.                                 DJNZ  R6,DL1
  31.                                 RET
  32. ;延时20MS子程序
  33. DL20MS:                        MOV A,R2
  34.                                 PUSH Acc
  35.                                 MOV R2,#40
  36.                         DLY:MOV R4,#250
  37.                                 DJNZ R4,$
  38.                                 DJNZ R2,DLY
  39.                                 POP Acc
  40.                                 MOV R2,A
  41.                                 RET
  42. ;数码管显示程序
  43. SCAN:                MOV  A,78H       ;时间存入显示缓冲区相应位置
  44.                 MOV  B,#0AH
  45.                 DIV  AB
  46.                 MOV  71H,A                ;秒
  47.                 MOV  70H,B
  48.                 MOV  A,79H
  49.                 MOV  B,#0AH
  50.                 DIV  AB
  51.                 MOV  74H,A                ;分
  52.                 MOV  73H,B
  53.                                 MOV  A,7AH
  54.                 MOV  B,#0AH
  55.                 DIV  AB
  56.                 MOV  77H,A                ;时
  57.                                 MOV  76H,B
  58.                                 
  59.                                 MOV  R1,#70H                     ;循环扫描显示
  60.                 MOV  R5,#7FH
  61.                 MOV  R3,#08H
  62.                                 
  63.                                 
  64. SCAN1:                         MOV  A,R5
  65.                 MOV  P0,A                ;位选信号
  66.                                 SETB P2.7
  67.                                 CLR  P2.7
  68.                 MOV  A,@R1
  69.                 MOV  DPTR,#TAB
  70.                 MOVC  A,@A+DPTR
  71.                                 
  72.                 MOV  P0,A
  73.                                 SETB P2.6
  74.                                 CLR  P2.6
  75.                                 LCALL  DL1MS

  76.                 INC R1
  77.                 MOV A,R5
  78.                 RR A
  79.                 MOV R5,A
  80.                 DJNZ  R3,SCAN1
  81.                                 
  82.                                 
  83.                 MOV  P0,#00H                ;消影
  84.                                 SETB P2.6
  85.                                 CLR  P2.6
  86.                                 
  87.                                 MOV  P0,#0FFH
  88.                                 SETB P2.7
  89.                                 CLR  P2.7
  90.                 RET
  91. TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H                                 ;“0~9”,“-,_”的共阴极字段码
  92.         

  93. ;定时器/计数器T0中断服务程序
  94. INTT0:               PUSH  Acc
  95.                 PUSH  PSW
  96.                 CLR  ET0
  97.                 CLR  TR0
  98.                 MOV  TL0,#00H
  99.                 MOV  TH0,#4CH
  100.                 SETB  TR0
  101.                 INC  7BH
  102.                 MOV  A,7BH
  103.                 CJNE  A,#14H,OUTT0                ;20*50=1s
  104.                 MOV  7BH,#00H
  105.                 INC  78H
  106.                 MOV  A,78H
  107.                 CJNE  A,#3CH,OUTT0                ;1s*60=1min
  108.                 MOV  78H,#00H                        ;秒计数器清零
  109.                                 INC  79H                                ;分计数器+1
  110.                                 MOV  A,79H
  111.                 CJNE  A,#3CH,OUTT0
  112.                 MOV  79H,#00H
  113.                                 INC  7AH                                ;时计数器+1
  114.                                 MOV  A,7AH
  115.                 CJNE  A,#18H,OUTT0
  116.                 MOV  7AH,#00H                        ;计到24后时计数器清零
  117. OUTT0:               
  118.                                 SETB  ET0               
  119.                                 POP  PSW
  120.                                 POP  Acc
  121.                 RETI
  122.                                 
  123. ;按键处理程序
  124. KEYSCAN:                CLR  EA
  125.                 JNB  P2.0,KEYSCAN0
  126.                 JNB  P2.1,KEYSCAN1
  127.                 JNB  P2.2,KEYSCAN2
  128. KEYOUT:                        SETB  EA
  129.                                 RET
  130. KEYSCAN0:                LCALL  DL20MS
  131.                                 JB  P2.0,KEYOUT
  132. WAIT0:                        JNB  P2.0,WAIT0
  133.                 INC  7CH
  134.                 MOV  A,7CH
  135.                 CLR  ET0
  136.                 CLR  TR0
  137.                 CJNE  A,#03H,KEYOUT
  138.                 MOV  7CH,#00H
  139.                 SETB  ET0
  140.                 SETB  TR0
  141.                 SJMP  KEYOUT
  142. KEYSCAN1:                LCALL  DL20MS
  143.                                 JB  P2.1,KEYOUT
  144. WAIT1:                        JNB  P2.1,WAIT1
  145.                 MOV  A,7CH
  146.                 CJNE  A,#02H,KSCAN11
  147.                 INC  79H
  148.                                 MOV  A,79H
  149.                                 CJNE  A,#3CH,KEYOUT
  150.                 MOV  79H,#00
  151.                                 SJMP  KEYOUT
  152. KSCAN11:                INC  7AH
  153.                                 MOV  A,7AH
  154.                                 CJNE  A,#18H,KEYOUT
  155.                 MOV  7AH,#00
  156.                                 SJMP  KEYOUT
  157. KEYSCAN2:                LCALL  DL20MS
  158.                                 JB  P2.2,KEYOUT
  159. WAIT2:                        JNB  P2.2,WAIT2
  160.                 MOV  A,7CH
  161.                 CJNE  A,#02H,KSCAN21
  162.                 DEC  79H
  163.                                 MOV  A,79H
  164.                                 CJNE  A,#0FFH,KEYOUT
  165.                 MOV  79H,#3BH
  166.                                 SJMP  KEYOUT
  167. KSCAN21:                DEC  7AH
  168.                                 MOV  A,7AH
  169.                                 CJNE  A,#0FFH,KEYOUT
  170.                 MOV  7AH,#17H
  171.                                 SJMP  KEYOUT
  172. END  
复制代码

所有资料51hei附件下载:
Proteus仿真8.13和汇编程序.7z (64.52 KB, 下载次数: 32)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表