找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6125|回复: 5
打印 上一主题 下一主题
收起左侧

基于AT89S52单片机数字钟的仿真设计(汇编语言程序)

  [复制链接]
跳转到指定楼层
楼主
基于AT89S52单片机数字钟的设计
新人不好的话原谅啊
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机汇编语言源程序如下:
  1. ORG 0000H
  2. LJMP MAIN
  3. ORG 000BH
  4. LJMP DINGSHI
  5. ORG 001BH
  6. LJMP TIAOSHI
  7. STYLE BIT  P3.0                       ;模式健
  8. PLUS  BIT  P3.1          ;加键
  9. MINUS BIT  P3.2                       ;减键
  10. SHI   EQU  30H                       ;时针
  11. FEN   EQU  31H          ;分针
  12. MIAO  EQU  32H                       ;钞针
  13. MAIN:
  14.   MOV   SHI  , #00H
  15.   MOV   FEN        , #00H
  16.   MOV   MIAO , #00H
  17.   MOV   33H,#00H                    ;时钟扫描
  18.   MOV   34H,#00H                    ;分钟扫描
  19.   MOV   35H,#00H                    ;秒钟扫描
  20.   MOV   36H,#00H                    ;时钟扫描计数
  21.   MOV   37H,#00H                    ;时钟扫描闪烁
  22.   MOV   38H,#00H                    ;分钟扫描计数
  23.   MOV   39H,#00H                    ;分钟扫描闪烁
  24.   MOV   3AH,#00H                    ;秒钟扫描计数
  25.   MOV   3BH,#00H                    ;秒钟扫描闪烁
  26.   MOV   3CH,#00H                    ;定时
  27.   MOV   3DH,  #00H                  ;模式
  28.   MOV   40H,  #00H        ;消抖
  29.   MOV   SP,   #50H        ;堆栈指针
  30.   MOV   DPTR, #TABLE                ;查找表首地址
  31.   MOV   TH0,  #(65535-20000)/256         ;定时器初值
  32.   MOV   TL0,  #(65535-20000) MOD 256
  33.   MOV   TH1,  #(65535-20000)/256
  34.   MOV   TL1,  #(65535-20000) MOD 256
  35.   MOV   TMOD, #11H                  ;定时器工作方式设置,T0,T0设置为方式一
  36.   SETB  PT0                                  ;设置T0为高优先级
  37.   SETB  ET0                                  ;开定时器中断
  38.   SETB  ET1
  39.   SETB  TR0                                  ;启动定时器
  40.   SETB  TR1
  41.   SETB  EA                                  ;开总中断
  42. DISPLAY:
  43.   MOV   A,  33H                          
  44.   CJNE  A,#00,X1                         ;判断时针是否扫描
  45.   MOV   P2, #7FH                         ;选通数码管时钟的十位
  46.   MOV   A,  SHI
  47.   MOV   B,  #10
  48.   DIV   AB                                  ;把时针的十位个位分离
  49.   MOVC   A, @A+DPTR                  ;把时针的十位放在累加器A中
  50.   MOV   P1,A                                  ;显示时针的十位
  51.   LCALL         DELAY                          ;延时
  52.   MOV  P2,#0BFH                          ;选通时针的个位
  53.   MOV   A,  B
  54.   MOVC  A,@A+DPTR
  55.   MOV  P1,A
  56.   LCALL  DELAY
  57.   MOV  A,  37H
  58.   CJNE A,#01,X3                                    ;判断是否闪烁
  59. X1:
  60.   INC 36H
  61.   MOV  A,   36H
  62.   CJNE A,#10,X2
  63.   MOV  33H, #00
  64. X2:
  65.   CJNE A,#20,X3
  66.   MOV  36H, #00
  67.   MOV  33H, #01
  68. X3:                                    
  69.   MOV  P2, #0DFH                               ;显示分隔符
  70.   MOV  A,  #40H
  71.   MOV  P1, A
  72.   LCALL DELAY
  73.   MOV  A,  34H                                ;分针的显示
  74.   CJNE A,#00,F1
  75.   MOV  P2, #0EFH
  76.   MOV A,  FEN
  77.   MOV B,  #10
  78.   DIV AB
  79.   MOVC  A,  @A+DPTR
  80.   MOV  P1, A
  81.   LCALL DELAY
  82.   MOV  P2,  #0F7H
  83.   MOV  A,  B
  84.   MOVC A,  @A+DPTR
  85.   MOV  P1, A
  86.   LCALL DELAY
  87.   MOV  A,  39H
  88.   CJNE A,#01H ,F3
  89. F1:
  90.   INC 36H
  91.   MOV  A, 36H
  92.   CJNE A,#10, F2
  93.   MOV  34H,  #00H
  94. F2:
  95.   CJNE A,#20H,F3
  96.   MOV  36H, #00H
  97.   MOV  34H, #01H
  98. F3:
  99.   MOV  P2,  #0FBH                               ;显示分隔符
  100.   MOV  A,   #40H
  101.   MOV  P1,  A
  102.   LCALL  DELAY
  103.   MOV  A,35H
  104.   CJNE A,#00H ,M1
  105.   MOV  P2, #0FDH                                ;秒针的显示
  106.   MOV  A,  MIAO
  107.   MOV  B,  #10
  108.   DIV  AB
  109.   MOVC A,  @A+DPTR
  110.   MOV  P1, A
  111.   LCALL DELAY
  112.   MOV  P2, #0FEH
  113.   MOV  A,  B
  114.   MOVC A,  @A+DPTR
  115.   MOV  P1, A
  116.   LCALL DELAY
  117.   MOV  A,  3BH
  118.   CJNE A,#01,M3
  119. M1:
  120.   INC  3AH
  121.   MOV  A,  3AH
  122.   CJNE A,#10,M2
  123.   MOV  35H, #00H
  124. M2:
  125.   CJNE A,#20H,M3
  126.   MOV  3AH,  #00H
  127.   MOV  35H,  #01H
  128. M3:
  129.    LJMP  DISPLAY

  130. DINGSHI:
  131.    PUSH  ACC
  132.    PUSH  PSW
  133.    MOV   TH0, #(65535-20000)/256                   ;定时器赋初值
  134.    MOV   TL0, #(65535-20000) MOD 256
  135.    INC   3CH
  136.    MOV   A, 3CH
  137.    CJNE  A,#50,J1                        ;判断是否为一秒,若为一秒顺序执行,否发生跳转
  138.    MOV   3CH, #00H                                   ;定时次数清零
  139.    INC   MIAO                                 ;秒针加一
  140.    MOV   A,  MIAO
  141.    CJNE  A,#60, J1                                    ;判断是否为一分
  142.    MOV   MIAO, #00                                     ;秒针清零
  143.    INC   FEN                                            ;分针加一
  144.    MOV   A,   FEN
  145.    CJNE  A,#60,J1                                     ;判断是否为一时
  146.    MOV   FEN, #00H                                     ;分针清零
  147.    INC   SHI                                             ;时针加一
  148.    MOV   A,   SHI
  149.    CJNE  A,#24,J1                                     ;判断是否溢出
  150.    MOV   SHI, #00H                                     ;时针清零
  151. J1:
  152.    CLR  ET0
  153.    POP  ACC
  154.    POP  PSW
  155.    SETB ET0
  156.    RETI
  157. TIAOSHI:
  158.    PUSH ACC
  159.    PUSH PSW
  160.    MOV  TH1,  #(65535-20000)/256                       ;定时器赋初值
  161.    MOV  TL1,  #(65535-20000) MOD 256
  162.    JB  STYLE,  G1                                       ;判断模式键是否按下
  163.    INC 40H                                         ;清抖
  164.    MOV A, 40H                                 
  165.    CJNE A,#10,G1
  166.    JB STYLE ,G1                                       ;模式键真的被按下
  167.    MOV 40H,#00
  168.    INC 3DH                                                ;模式键加一
  169.    MOV A,  3DH
  170.    CJNE A,#01,A1                                        ;判断是否为模式一
  171.    MOV  33H,#01                                         ;时针扫描判断
  172.    MOV  37H,#01                                         ;时针扫描闪烁判断
  173. A1:CJNE A,#02,A2                                         ;模式是否为二
  174.    MOV  33H,#00
  175.    MOV  37H,#00
  176.    MOV  34H,#01
  177.    MOV  39H,#01
  178. A2:CJNE A,#03,A3                                    ;模式是否为三
  179.    MOV  34H,#00
  180.    MOV  39H,#00
  181.    MOV  35H,#01
  182.    MOV  3BH,#01
  183. A3:CJNE A,#04,G1                               ;模式是否为四,为四正常走时
  184.    MOV  3DH,#00
  185.    MOV  35H,#00
  186.    MOV  3BH,#00
  187. G1:JB   PLUS,B1                                ;判断加键是否按下
  188.    INC 40H                                        ;消抖
  189.    MOV A, 40H
  190.    CJNE A,#11,B1
  191.    JB PLUS ,B1
  192.    MOV 40H,#00
  193.    MOV  A,3DH
  194.    CJNE A,#01,C1                        ;若为模式一,时针加一
  195.    INC SHI
  196.    MOV A, SHI
  197.    CJNE A,#24,B1
  198.    MOV  SHI,#00
  199. C1: CJNE  A,#02,C2                        ;若为模式二,分针加一
  200.   INC  FEN
  201.   MOV  A,FEN
  202.   CJNE A,#60, B1
  203.   MOV  FEN,  #00
  204. C2:CJNE  A,#03,B1                        ;若为模式三,秒针加一
  205.   INC  MIAO
  206.   MOV  A, MIAO
  207.   CJNE A,#60,B1
  208.   MOV  MIAO,#00
  209. B1:JB  MINUS,E1                           ;判断减键是否按下
  210.   INC 40H                                   ;清抖
  211.   MOV A, 40H
  212.   CJNE A,#12,E1
  213.   JB MINUS ,E1
  214.   MOV 40H,#00
  215.   MOV A,  3DH
  216.   CJNE A,#01,Q1                                ;若为模式一,时针减一
  217.   MOV A,  SHI
  218.   CJNE A,#00,Q2                                ;判断时针是否为0
  219.   MOV  SHI, #23
  220.   LJMP E1
  221. Q2:DEC SHI                                        ;时针减一
  222.   LJMP E1
  223. ……………………

  224. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
基于AT89S52单片机数字钟的设计.zip (90.66 KB, 下载次数: 93)


评分

参与人数 2黑币 +54 收起 理由
qjzyx + 4 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶3 踩
回复

使用道具 举报

沙发
ID:266116 发表于 2018-1-12 21:58 | 只看该作者
看了一下,电路精简,改天下个玩玩!
回复

使用道具 举报

板凳
ID:290363 发表于 2018-3-11 13:01 | 只看该作者
谢谢楼主!很实用!!!
回复

使用道具 举报

地板
ID:291837 发表于 2018-3-15 08:54 | 只看该作者
正需要这个,谢谢分享!
回复

使用道具 举报

5#
ID:347467 发表于 2019-11-13 13:21 | 只看该作者

谢谢楼主!很实用!!!
回复

使用道具 举报

6#
ID:851189 发表于 2020-11-30 14:45 来自手机 | 只看该作者
最上面的蓝屏的led名称是什么啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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