单片机电子时钟汇编语言程序.docx
- 文档编号:8998755
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:25
- 大小:17.22KB
单片机电子时钟汇编语言程序.docx
《单片机电子时钟汇编语言程序.docx》由会员分享,可在线阅读,更多相关《单片机电子时钟汇编语言程序.docx(25页珍藏版)》请在冰点文库上搜索。
单片机电子时钟汇编语言程序
;变量定义;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SECEQU42H
MINEQU41H
HOUREQU40H
C100EQU43H
NZHOUREQU44H
NZMINEQU45H
TEMPEQU46H
TEMP2EQU47H
TEMP3EQU48H
LEDBUFEQU60H
OUTBITEQU8001H
OUTSEGEQU8000H
INEQU8002H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0000H
LJMPSTART
ORG000BH
LJMPINT00
;:
:
;:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
;:
:
:
:
:
:
;主程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0070H
START:
MOVSP,#70H
MOVDPTR,#8003H
MOVA,#89H
MOVNZHOUR,#12
MOVNZMIN,#1FH;闹钟初始值8.30
MOVX@DPTR,A
MOVTMOD,#01H
MOVTH0,#0ECH
MOVTL0,#78H
MOVIE,#10000010B
MOVTEMP,#00000001B
MOVTEMP2,#1
MOVTEMP3,#200
CLRP1.0
MAIN_LP:
MOVDPTR,#OUTBIT
MOVA,#00000001B
MOVX@DPTR,A
MOVDPTR,#OUTSEG;段
MOVA,#0F9H
MOVX@DPTR,A
MOVR6,#1
LCALLDELAY
MOVDPTR,#OUTBIT
MOVA,#00000010B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0F9H
MOVX@DPTR,A
MOVR6,#1
LCALLDELAY
MOVDPTR,#OUTBIT
MOVA,#00000100B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0F9H
MOVX@DPTR,A
MOVR6,#1
LCALLDELAY
MOVDPTR,#OUTBIT
MOVA,#00001000B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0F9H
MOVX@DPTR,A
MOVR6,#1
LCALLDELAY
MOVDPTR,#OUTBIT
MOVA,#00010000B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0F9H
MOVX@DPTR,A
MOVR6,#1
LCALLDELAY
MOVDPTR,#OUTBIT
MOVA,#00100001B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0F9H
MOVX@DPTR,A
MOVR6,#1
LCALLDELAY
LCALLTESTKEY
JBAcc.0,MAIN_LP
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JBAcc.0,MAIN_LP
LCALLMAIN_KEY
SJMPMAIN_LP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;判断按键程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TESTKEY:
MOVDPTR,#OUTBIT
MOVA,#00H
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;1ms延时;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY:
MOVR7,#0
DELAY1:
DJNZR7,DELAY1
DJNZR6,DELAY1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;获取按键并跳转程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN_KEY:
MOVDPTR,#OUTBIT
MOVA,#11111110B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MAIN_K1
MOVDPTR,#OUTBIT
MOVA,#11111101B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MAIN_K2
MOVDPTR,#OUTBIT
MOVA,#11111011B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MAIN_K3
SJMPWAIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN_K1:
MOVDPTR,#OUTBIT
MOVA,#00000001B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0F9H
MOVX@DPTR,A
MOVR4,#5
MOVR6,#100
DEL1:
LCALLDELAY
DJNZR4,DEL1
LCALLSZ
SJMPWAIT
MAIN_K2:
MOVDPTR,#OUTBIT
MOVA,#00000010B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0A4H
MOVX@DPTR,A
MOVR4,#5
MOVR6,#100
DEL2:
LCALLDELAY
DJNZR4,DEL2
LCALLNZ
SJMPWAIT
MAIN_K3:
MOVDPTR,#OUTBIT
MOVA,#00000100B
MOVX@DPTR,A
MOVDPTR,#OUTSEG
MOVA,#0B0H
MOVX@DPTR,A
MOVR4,#5
MOVR6,#100
DEL3:
LCALLDELAY
DJNZR4,DEL3
LCALLMB
SJMPWAIT
WAIT:
LCALLTESTKEY
JNBAcc.0,WAIT
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JNBAcc.0,WAIT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SZ处理程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0200H
SZ:
MOVSEC,#00H
MOVMIN,#00h
MOVHOUR,#00h
MOVC100,#100
SETBTR0
MOVTEMP2,#1
MOVR5,#04H
SZ_LP:
MOVA,HOUR
MOVB,#10
DIVAB
ACALLTOLED
MOVLEDBUF,A
MOVA,B
ACALLTOLED
ANLA,#7FH
MOVLEDBUF+1,A
MOVA,MIN
MOVB,#10
DIVAB
ACALLTOLED
MOVLEDBUF+2,A
MOVA,B
ACALLTOLED
ANLA,#7FH
MOVLEDBUF+3,A
MOVA,SEC
MOVB,#10
DIVAB
ACALLTOLED
MOVLEDBUF+4,A
MOVA,B
ACALLTOLED
MOVLEDBUF+5,A
ACALLDISPLAY
LCALLTESTKEY
JBAcc.0,SZ_LP
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JBAcc.0,SZ_LP
LCALLSZ_KEY
MOVA,TEMP2
CJNEA,#1,SZ_EXIT
LJMPSZ_LP
SZ_EXIT:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;获取按键并跳转程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SZ_KEY:
MOVDPTR,#OUTBIT
MOVA,#11111110B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,SZ_K1
MOVDPTR,#OUTBIT
MOVA,#11111101B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,SZ_K2
MOVDPTR,#OUTBIT
MOVA,#11111011B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,SZ_K3
MOVDPTR,#OUTBIT
MOVA,#11110111B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,SZ_K4
MOVDPTR,#OUTBIT
MOVA,#11101111B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,SZ_K5
MOVDPTR,#OUTBIT
MOVA,#11011111B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,SZ_K6
SJMPSZ_WAIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SZ_K1:
LCALLSZ_J1
SJMPSZ_WAIT
SZ_K2:
LCALLSZ_J2
SJMPSZ_WAIT
SZ_K3:
LCALLSZ_J3
SJMPSZ_WAIT
SZ_K4:
LCALLSZ_J4
SJMPSZ_WAIT
SZ_K5:
LCALLSZ_J5
SJMPSZ_WAIT
SZ_K6:
LCALLSZ_J6
SZ_WAIT:
LCALLTESTKEY
JNBAcc.0,SZ_WAIT
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JNBAcc.0,SZ_WAIT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SZ按键处理程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SZ_J1:
CLRTR0
DJNZR5,SZ_EXK1
SETBTR0
MOVR5,#04H
SZ_EXK1:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SZ_J2:
CJNER5,#03H,FENJIA
INCHOUR
MOVA,HOUR
CJNEA,#24,SZ_EXK2
MOVHOUR,#00H
SJMPSZ_EXK2
FENJIA:
CJNER5,#02H,MIAOJIA
INCMIN
MOVA,MIN
CJNEA,#60,SZ_EXK2
MOVMIN,#00H
SJMPSZ_EXK2
MIAOJIA:
CJNER5,#01H,SZ_EXK2
INCSEC
MOVA,SEC
CJNEA,#60,SZ_EXK2
MOVSEC,#00H
SZ_EXK2:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SZ_J3:
CJNER5,#03H,FENJIAN
DECHOUR
MOVA,HOUR
CJNEA,#0FFH,SZ_EXK3
MOVHOUR,#23
SJMPSZ_EXK3
FENJIAN:
CJNER5,#02H,MIAOJIAN
DECMIN
MOVA,MIN
CJNEA,#0FFH,SZ_EXK3
MOVMIN,#59
SJMPSZ_EXK3
MIAOJIAN:
CJNER5,#01H,SZ_EXK3
DECSEC
MOVA,SEC
CJNEA,#0FFH,SZ_EXK3
MOVSEC,#59
SJMPSZ_EXK3
SZ_EXK3:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;消显示
SZ_J4:
MOVTEMP,#00H
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显显示
SZ_J5:
MOVTEMP,#01H
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;关计时,回功能选择
SZ_J6:
CLRTR0
MOVTEMP2,#0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY:
MOVR0,#LEDBUF
MOVR1,#6
MOVR2,TEMP
LOOP:
MOVDPTR,#OUTBIT
MOVA,#0
MOVX@DPTR,A
MOVA,@R0
MOVDPTR,#OUTSEG
MOVX@DPTR,A
MOVDPTR,#OUTBIT
MOVA,R2
MOVX@DPTR,A
MOVR6,#1
ACALLDELAY
MOVA,R2
RLA
MOVR2,A
INCR0
DJNZR1,LOOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TOLED:
MOVDPTR,#LEDTAB
MOVCA,@A+DPTR
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;MB处理程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0500H
MB:
MOVSEC,#00H
MOVMIN,#00H
MOVC100,#0
MOVTEMP2,#1
MB_LP:
MOVA,MIN
MOVB,#10
DIVAB
ACALLTOLED
MOVLEDBUF,A
MOVA,B
ACALLTOLED
ANLA,#7FH
MOVLEDBUF+1,A
MOVA,SEC
MOVB,#10
DIVAB
ACALLTOLED
MOVLEDBUF+2,A
MOVA,B
ACALLTOLED
ANLA,#7FH
MOVLEDBUF+3,A
MOVA,C100
MOVB,#10
DIVAB
ACALLTOLED
MOVLEDBUF+4,A
MOVA,B
ACALLTOLED
MOVLEDBUF+5,A
ACALLDISPLAY
LCALLTESTKEY
JBAcc.0,MB_LP
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JBAcc.0,MB_LP
LCALLMB_KEY
MOVA,TEMP2
CJNEA,#1,MB_EXIT
LJMPMB_LP
MB_EXIT:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;获取按键并跳转程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MB_KEY:
MOVDPTR,#OUTBIT
MOVA,#11111110B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MB_K1
MOVDPTR,#OUTBIT
MOVA,#11111101B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MB_K2
MOVDPTR,#OUTBIT
MOVA,#11111011B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MB_K3
MOVDPTR,#OUTBIT
MOVA,#11110111B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MB_K4
MOVDPTR,#OUTBIT
MOVA,#11101111B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MB_K5
MOVDPTR,#OUTBIT
MOVA,#11011111B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,MB_K6
SJMPMB_WAIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MB_K1:
SETBTR0
SJMPMB_WAIT
MB_K2:
CLRTR0
SJMPMB_WAIT
MB_K3:
CLRTR0
MOVSEC,#0
MOVMIN,#0
MOVC100,#0
SJMPMB_WAIT
MB_K4:
MOVTEMP,#00H
SJMPMB_WAIT
MB_K5:
MOVTEMP,#01H
SJMPMB_WAIT
MB_K6:
CLRTR0
MOVTEMP2,#0
MB_WAIT:
LCALLTESTKEY
JNBAcc.0,MB_WAIT
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JNBAcc.0,MB_WAIT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;NZ处理程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0800H
NZ:
CLRTR0
MOVTEMP2,#1
MOVNZHOUR,#8
MOVNZMIN,#1EH
MOVR5,#02H
NZ_LP:
MOVA,NZHOUR
MOVB,#10
DIVAB
LCALLTOLED
MOVLEDBUF,A
MOVA,B
LCALLTOLED
ANLA,#7FH
MOVLEDBUF+1,A
MOVA,NZMIN
MOVB,#10
DIVAB
LCALLTOLED
MOVLEDBUF+2,A
MOVA,B
LCALLTOLED
MOVLEDBUF+3,A
MOVA,SEC
MOVB,#10
DIVAB
LCALLTOLED
MOVLEDBUF+4,#0FFH
MOVLEDBUF+5,#0FFH
LCALLDISPLAY
LCALLTESTKEY
JBAcc.0,NZ_LP
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JBAcc.0,NZ_LP
LCALLNZ_KEY
MOVA,TEMP2
CJNEA,#1,NZ_EXIT
LJMPNZ_LP
NZ_EXIT:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;获取按键并跳转程序;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NZ_KEY:
MOVDPTR,#OUTBIT
MOVA,#11111110B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,NZ_K1
MOVDPTR,#OUTBIT
MOVA,#11111101B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,NZ_K2
MOVDPTR,#OUTBIT
MOVA,#11111011B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,NZ_K3
MOVDPTR,#OUTBIT
MOVA,#11011111B
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR
JNBAcc.0,NZ_K6
SJMPNZ_WAIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NZ_K1:
LCALLNZ_J1
SJMPNZ_WAIT
NZ_K2:
LCALLNZ_J2
SJMPNZ_WAIT
NZ_K3:
LCALLNZ_J3
SJMPNZ_WAIT
NZ_K6:
CLRTR0
MOVTEMP2,#0
NZ_WAIT:
LCALLTESTKEY
JNBAcc.0,NZ_WAIT
MOVR6,#10
LCALLDELAY
LCALLTESTKEY
JNBAcc.0,NZ_WAIT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 时钟 汇编语言 程序