找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于单片机汇编语言的电子时钟程序和仿真

[复制链接]
跳转到指定楼层
楼主

  1. /*************************************************
  2. *文件名:电子时钟
  3. *说  明:通过T0方式1定时时时更新,晶振:6MHZ
  4. *************************************************/
  5.                 ORG                0000H
  6.                 AJMP        MAIN
  7.                 ORG                000BH
  8.                 AJMP        IT0P
  9.                 ORG                0100H
  10. MAIN:        MOV         DPTR,#TAB
  11.                 MOV                TMOD,#01H                        ;设T0为方式一,定时
  12.                 MOV                30H,#0AH                        ;装入中断次数
  13.                 MOV                42H,#55                                ;显示55秒位
  14.                 MOV                41H,#59                                ;显示59分位
  15.                 MOV                40H,#23                                ;显示23时位
  16.                 MOV                TH0,#3CH                        ;给T0装入初值
  17.                 MOV                TL0,#0B0H
  18.                 SETB        ET0                                        ;允许T0申请中断               
  19.                 SETB        TR0                                        ;启动T0
  20.                 SETB        EA                                        ;开总中断

  21. HERE:        MOV                R3,42H                                ;调显示子程序(等待中断)
  22.                 MOV                R2,#00
  23.                 ACALL        DISPLAY
  24.                 MOV                R3,41H
  25.                 MOV                R2,#02
  26.                 ACALL        DISPLAY
  27.                 MOV                R3,40H
  28.                 MOV         R2,#04
  29.                 ACALL        DISPLAY
  30.                 AJMP        HERE                                 

  31. ;******1S定时子程序(并显示)******
  32. IT0P:        PUSH        PSW                                        ;现场保护
  33.                 PUSH        Acc                                                                  
  34.                 MOV                TH0,#3CH                        ;重装初值
  35.                 MOV                TL0,#0B0H
  36.                 DJNZ        30H,RETURN                        ;1秒未到,返回
  37.                 MOV                30H,#0AH                        ;重置中断次数
  38.                 ;******显示秒*********
  39.                 MOV                A,42H                                ;"秒"单元加1
  40.                 INC                A
  41.                 MOV                42H,A                                ;“秒”的BCD码返回“秒”单元
  42.                 CJNE        A,#60,RETURN                ;是否到60秒,未到则返回
  43.                 MOV                42H,#00H                        ;计满60秒,“秒”单元清零
  44.                 ;******显示分*********
  45.                 MOV                A,41H                                ;"分"单元加1
  46.                 INC                A
  47.                 MOV                41H,A                                ;“分”的BCD码返回“分”单元
  48.                 CJNE        A,#60,RETURN                ;是否到60分,未到则返回
  49.                 MOV                41H,#00H                        ;计满60分,“分”单元清零
  50.                 ;******显示时*********
  51.                 MOV                A,40H                                ;"时"单元加1
  52.                 INC                A
  53.                 MOV                40H,A                                ;“时”的BCD码返回“时”单元
  54.                 CJNE        A,#24,RETURN                ;是否到24小时,未到则返回
  55.                 MOV                40H,#00H                        ;计满24小时,“时”单元清零
  56. RETURN:        POP                Acc                                        ;恢复现场
  57.                 POP                PSW
  58.                 RETI         

  59. ;******显示子程序(分两屏显示)******
  60. DISPLAY:MOV                A,R3                        ;R3存要显示的两位数字
  61.         MOV                B,#0AH
  62.                 MOV         P2,R2
  63.                 DIV                AB                                ;A为商,表十位;B为余数,表个位
  64.                 MOV                R3,A
  65.                 MOV         A,B                                ;显示个位
  66.         MOVC         A,@A+DPTR
  67.         MOV         P0,A
  68.                 ACALL         DELY
  69.         INC         R2                                ;显示十位
  70.                 MOV         P2,R2
  71.                 MOV         A,R3
  72.         MOVC         A,@A+DPTR
  73.                 MOV         P0,A
  74.         ACALL         DELY
  75.         RET

  76. ;******延时0.5MS子程序******
  77. DELY:        MOV R7,#10
  78. DEL1:        MOV R6,#100
  79.         DJNZ R6,$
  80.         DJNZ R7,DEL1                ;(100*2+2+1)*10+2+1
  81.         RET
  82. TAB:        DB 3FH,06H,5BH,4FH,66H  ;七段共阴显示码
  83.         DB 6DH,7DH,07H,7FH,6FH,3FH               
  84.               END

复制代码
全部资料51hei下载地址:
电子时钟.zip (182.92 KB, 下载次数: 27)



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

使用道具 举报

沙发
ID:267951 发表于 2017-12-27 19:50 | 只看该作者
于单片机汇编语言的电子时钟程序和仿真
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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