51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
单片机的6位数码管电子钟程序(汇编)
发布时间:2009/6/2  阅读次数:1599  字体大小: 【】 【】【

来源:C51之家   作者:未知

单片机的6位数码管电子钟程序

;;显示缓冲单元在70H75H70H71H显示秒,72H73H显示分,74H75H显示时
;;时间计数单元在70H71H(秒)、76H77H(分)、78H79H(时),7AH单元放熄灭符(#0AH
;;计数单元采用BCD码计数,定时器T0设置为50MS溢出中断,为秒计数用,
;;定时器T1为调整时闪烁用
;;P3.2为调整按钮,P0口为字符输出口,P2.1-P2.6为位控制口-采用共阳显示管。
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
         ;; 中断入口程序 ;;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;
           ORG 0000H
           LJMP START
           ORG 0003H
           RETI    ;;不用的中断,抗干扰
;---------------------------------
           ORG 000BH    ;;定时器0中断
           LJMP INTT0
;--------------------------------------------
           ORG 0013H
           RETI    ;;不用的中断,抗干扰
;;;===========================================
           ORG 001BH    ;;定时器1中断,调整时闪烁
           LJMP INTT1
;----------------------------------------------
           ORG 0023H
           RETI    ;;不用的中断,抗干扰
           ORG 002BH
           RETI    ;;不用的中断,抗干扰
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;; ;;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START:
           MOV R0, #70H  ;;时间计数单元在70H
           MOV R7, #0BH  ;;
           MOV 20H, #00H  ;;

CLEARDISP:
           MOV @R0, #00H  ;;清地址单元70H--7BH
           INC R0
           DJNZ R7,CLEARDISP
           MOV 7AH,#0AH  ;;地址单元7AH熄灭符=0AH(1010)

           MOV TMOD,#11H  ;;定时器0-1方式1工作
           MOV TL0, #0B0H  ;;
           MOV TH0, #3CH  ;;3CB0H

           MOV TL1, #0B0H  ;;
           MOV TH1, #3CH  ;;3CB0H
           SETB EA    ;;总中断允许
           SETB ET0    ;;定时器0中断允许
           SETB TR0    ;;启动定时器0

           MOV R4,#14H  ;;20D

START1:
           LCALL DISPLAY  ;;调显示
           JNB P3.2,SETMM1  ;查询按键
           SJMP Start1  ;;
SETMM1:
           LJMP SETMM
         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;; 1秒定时程 ;;定时中断0
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTT0:
           PUSH ACC
           PUSH PSW
           CLR ET0
           CLR TR0
           MOV A,#0B7H  ;中断同步修正重新设定定时初值
           ADD A,TL0
           MOV TL0,A
           MOV A,#3CH
           ADD A,TH0
           MOV TH0,A
           SETB TR0    ;;启动定时器0
           DJNZ R4, OUTT0  ;;1秒到
ADDSS:      ;;秒处理70H-71H
           MOV R4,#14H  ;;20D
           MOV R0,#71H  ;;
           ACALL ADD1   ;;1程序秒
           MOV A,R3
           CLR C
           CJNE A,#60H,ADDMM  ;;1分到
ADDMM:       ;;分处理76H-77H
           JC OUTT0
           ACALL CLR0
           MOV R0,#77H
           ACALL ADD1  ;;1程序
           MOV A,R3
           CLR C
           CJNE A,#60H,ADDHH  ;;1小时到
ADDHH:       ;;小时处理78H-79H
           JC OUTT0
           ACALL CLR0
           MOV R0,#79H
           ACALL ADD1  ;;1程序-
           MOV A,R3
           CLR C
           CJNE A,#24H,HOUR  ;;1天到
HOUR:
           JC OUTT0    ;;C=0
           ACALL CLR0
OUTT0:
           MOV 72H,76H  ;;72H-73H
           MOV 73H,77H  ;;
           MOV 74H,78H  ;;74H-75H
           MOV 75H,79H  ;;
           POP PSW
           POP ACC
           SETB ET0
           RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ;; 闪动调时程 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTT1:
           PUSH ACC    ;;
           PUSH PSW
           MOV TL1, #0B0H  ;;
           MOV TH1, #3CH  ;;
           DJNZ R2,INTT1OUT  ;;
           MOV R2,#06H  ;;
           CPL 02H    ;;
           JB 02H,FLASH1  ;;
           MOV 72H,76H  ;;
           MOV 73H,77H  ;;
           MOV 74H,78H  ;;
           MOV 75H,79H  ;;
INTT1OUT:    ;;
           POP PSW
           POP ACC
           RETI
  FLASH1:
           JB 01H,FLASH2  ;;
           MOV 72H,7AH  ;;
           MOV 73H,7AH  ;;
           MOV 74H,78H  ;;
           MOV 75H,79H  ;;
           AJMP INTT1OUT  ;;
  FLASH2:
           MOV 72H,76H  ;;
           MOV 73H,77H  ;;
           MOV 74H,7AH  ;;
           MOV 75H,7AH  ;;
           AJMP INTT1OUT  ;;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;; 1程序 ;;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;
ADD1: MOV A,@R0    ;;--71H
           DEC R0    ;;--70H
           SWAP A    ;;
           ORL A,@R0    ;;
           ADD A,#01H  ;;
           DA A    ;;
           MOV R3,A    ;;
           ANL A,#0FH  ;;
           MOV @R0,A    ;;70H
           MOV A,R3    ;;
           INC R0    ;;71H
           SWAP A    ;;
           ANL A,#0FH  ;;
           MOV @R0,A    ;;71H
           RET
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;; 清零程序 ;;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;
CLR0: CLR A
           MOV @R0,A
           DEC R0
           MOV @R0,A
           RET
         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;; 时钟调整程序 ;;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
           ;
SETMM:
           CLR ET0    ;;禁止定时器0中断
           CLR TR0    ;;停止定时器0
           LCALL DL1S
           JB P3.2,CLOSEDIS
           MOV R2,#06H
           SETB ET1
           SETB TR1
SET2:
           JNB P3.2,SET1
           SETB 00H
SET4:
           JB P3.2,SET3
           LCALL DL05S
           JNB P3.2,SETHH
           MOV R0,#77H ;1分程序
           LCALL ADD1
           MOV A,R3
           CLR C
           CJNE A,#60H,HHH
HHH: JC SET4
           LCALL CLR0
           CLR C
           AJMP SET4
CLOSEDIS:
           SETB ET0
           SETB TR0
CLOSE:
           JB P3.2,CLOSE
           LCALL DISPLAY
           JB P3.2,CLOSE
WAITH:
           JNB P3.2,WAITH
           LJMP START1
SETHH:
           CLR 00H
SETHH1:
           JNB P3.2,SET5
           SETB 01H
SET6: JB P3.2,SET7
           LCALL DL05S
           JNB P3.2,SETOUT
           MOV R0,#79H
           LCALL ADD1
           MOV A,R3
           CLR C
           CJNE A,#24H,HOUU
HOUU: JC SET6
           LCALL CLR0
           AJMP SET6
SETOUT:
           JNB P3.2,SETOUT1
           LCALL DISPLAY
           JNB P3.2,SETOUT
           CLR 01H
           CLR 00H
           CLR 02H
           CLR TR1
           CLR ET1
           SETB TR0
           SETB ET0
           LJMP START1
SET1: LCALL DISPLAY
           AJMP SET2
SET3: LCALL DISPLAY
           AJMP SET4
SET5: LCALL DISPLAY
           AJMP SETHH1
SET7: LCALL DISPLAY
           AJMP SET6
SETOUT1: LCALL DISPLAY
           AJMP SETOUT
           ;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  

           ;; 显示程序 ;;
           ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY:
           MOV R1,#70H  ;;70H—71H显示秒,72H—73H显示分,74H—75H显示时
           MOV R5,#0BFH  ;;1011 1111 开始显示 P2.6
PLAY:
           MOV A,R5    ;;
           MOV P2,A    ;;1011 1111
           MOV A,@R1    ;;
           MOV DPTR,#TAB  ;;
           MOVC A,@A+DPTR  ;;
           MOV P0,A    ;;段
           LCALL DL1MS  ;;延时1MS
           INC R1    ;;
           MOV A,R5    ;;
           JNB ACC.1,ENDOUT  ;;=0跳 显示到P2.1=0
           RR A    ;;1011 1111---1101 1111
           MOV R5,A    ;;
           AJMP PLAY    ;;
ENDOUT:
           SETB P2.1
MOV P0,#0FFH
           RET
  TAB: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; 延时程序 ;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DL1MS: MOV R6,#14H
     DL1: MOV R7,#19H  ;;84*14=1176
     DL2: DJNZ R7,DL2
               DJNZ R6,DL1
           RET
     ;-----------------------
  DS20MS: ACALL DISPLAY
           ACALL DISPLAY
           ACALL DISPLAY
           RET
  DL1S: LCALL DL05S
           LCALL DL05S
           RET
  DL05S: MOV R3,#20H
  DL05S1: LCALL DISPLAY
                 DJNZ R3,DL05S1
           RET
END

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号