⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsjp6.asm

📁 电子时钟的单片机设计
💻 ASM
📖 第 1 页 / 共 2 页
字号:
       jnz   k170           ;是否减过最低显示位
       mov   41h,#27h       ;减过最低显示位回到最高显示位
       ajmp  k170
k170:  mov   r0,4ah         ;当前显示指针存r0
       mov   a,41h
       xrl   a,#27h         ;减一后的显示指针是否指向最高显示位
       jnz   kw3
       mov   a,5bh
       xrl   a,#00h
       jnz   k171
       ljmp  kw
k171:  mov   42h,#10h       ;减一后的显示指针是指向最高显示位,当前显示"灭"
       mov   @r0,42h
kw3:   mov   a,41h
       inc   a
       xrl   a,5bh          ;是否第一次按k17
       jz     kw12
       mov   a,41h          ;不是第一次按k17
       inc   a
       subb  a,5bh          ;
       jnc   kw
       mov   42h,#10h
kw12:  mov   @r0,42h        ;当前显示位是显示"灭"
       mov   r0,41h
       mov   @r0,#1bh
       mov   42h,@r0
       ljmp  kl0 
kw:   
       mov   @r0,42h
       mov   r0,41h
       mov   42h,@r0
       ljmp  kl0 
;**************************
k18:   lcall xshg
       mov   r0,41h
       mov   @r0,#13h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
;**************************
k21:   lcall xshg
       mov   r0,41h
       mov   @r0,#04h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k22:   lcall xshg
       mov   r0,41h
       mov   @r0,#05h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k23:   lcall xshg
       mov   r0,41h
       mov   @r0,#06h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k24:   lcall xshg
       mov   r0,41h
       mov   @r0,#0fh
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k25:   lcall xshg
       mov   r0,41h
       mov   @r0,#1ah
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k26:   lcall xshg
       mov   r0,41h
       mov   @r0,#12h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k27:   lcall xshg
       mov   r0,41h
       mov   @r0,#1fh
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k28:   lcall xshg
       mov   r0,41h
       mov   @r0,#11h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
;********************
       
k31:   lcall xshg
       mov   r0,41h
       mov   @r0,#01h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k32:   lcall xshg
       mov   r0,41h
       mov   @r0,#02h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k33:   lcall xshg
       mov   r0,41h
       mov   @r0,#03h
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
;****************************
k34:   lcall xshg
       mov   r0,41h
       mov   @r0,#0ah
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k35:   lcall xshg
       mov   r0,41h
       mov   @r0,#0bh
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k36:   lcall xshg
       mov   r0,41h
       mov   @r0,#0ch
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k37:   lcall xshg
       mov   r0,41h
       mov   @r0,#0dh
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
k38:   lcall xshg
       mov   r0,41h
       mov   @r0,#0eh
       lcall xs
       mov   6bh,#00h           ;清除键"-"记忆
       mov   5bh,#00h           ;显示数据末位指针清零
       ljmp  kl0
;********************************************
xshg:
       push  0
       mov   a,41h         ;
       dec   a             ;当前显示位减一位
       xrl   a,50h         ;当前显示位减一位是否等于"-"显示位
       jz    csz0
       mov   r0,41h         ;
       dec   r0             ;当前显示位减一位
       mov   a,@r0
       xrl   a,#10h        ;当前显示位减一位是否等于"灭"
       jnz    csz
       mov   @r0,#1bh      ;"-"值送显示
       ljmp  csz
csz0:  mov   r0, 50h       ;当前显示位减一位是等于"-"显示位
       mov   @r0,#1bh      ;"-"值送显示
       dec   50h           ;"-"值显示位减一
       mov   a,#1fh        ;"-"值显示位是否减过最低显示位20h
       xrl   a,50h
       jnz   csz
       mov   50h,#27h      ;"-"值显示位减过最低显示位20h,指针指向最高显示位27h
csz:   
       pop   0
       ret
xshg1:
       push  0
       mov   r0, 50h
       mov   @r0,#1bh     ;显示"-"
       pop   0
csz1:   ret  

;*********************************************
xs:    dec   41h
       mov   a,41h
       xrl   a,#1fh
       jz    pd
       mov   r0,41h
       mov   42h,@r0
       ret              
pd:    mov   41h,#27h
       mov   r0,41h
       mov   42h,@r0
       ret
;*************************************************************
;                       时钟中断0 程序
;*************************************************************
it00:  push  acc                ;A入栈
       push  0                  ;R0入栈
       push  dph               ;DPTR 入栈
       push  dpl
       JnB   6EH,IT001
       mov   r0,41h
       MOV   @r0,42H            ;显示输入的信号与灭构成一闪一灭
       ajmp  it002
it001: mov   r0,41h
       MOV   42h,@r0
       MOV   @r0,#10H            ;显示灭
IT002: cpl   6eh               ;取反6eh闪动开关(0:开  1:关)
int02: pop   dpl                   ;出栈
       pop   dph
       pop   0
       pop   acc
       reti
;***********************************************************
drr10: mov   23h,#10h
       mov   24h,#10h
       mov   25h,#10h
       mov   26h,#10h
       ret
drr:   mov   20h,#10h
       mov   21h,#10h
       mov   22h,#10h
       lcall drr10
       ret
dirv:  mov   r0,#01h
       mov   r1,#27h
di1:   mov   dptr,#0dfffh            ;8255控制口
       mov   a,#81h                  ;8255控制方式为81h: C口(上)出(下)入,B口出,A口出
       movx  @dptr,a
       mov   a,5bh                   ;C口状态存5bh
       mov   dptr,#0dffeh            ;8255C口地址为0dffeh
       movx  @dptr,a
       mov   dptr,#0dffch            ;8255A口
       mov   a,#00h                  ;
       movx  @dptr,a
dii:   mov   dptr,#0dffdh            ;8255B口
       mov   a,r0
       movx  @dptr,a                 ;位选
       mov   dptr,#table             ;查段选表
       mov   a,@r1
       movc  a,@a+dptr
       mov   dptr,#0dffch
       movx  @dptr,a                 ;段选
       mov   r7,#03h
di2:   mov   r6,#0ffh
di3:   djnz  r6,di3
       djnz  r7,di2
       dec   r1
       mov   a,r0
       jb    acc.7,di4
       rl    a
       mov   r0,a
       ajmp  dii
di4:   ret
table:
       db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
     ;    "0" "1" "2" "3" "4" "5" "6" "7"
       db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
     ;    "8" "9" "a" "b" "c" "d" "e" "f"
       db 00h,0eh,76h,0f0h,38h,80h,46h,40h
     ;    "灭""J" "H" "k" "L" "." "+" "-"
       db 0f3h,6eh,3dh,08h,3eh,37h,5ch,087h
     ;    "p." "y" "G" "-" "U" "n" "o""i"
       db 0bfh,86h, 0dbh,0cfh,0e6h,0edh,0fdh,87h
     ;    "0." "1." "2." "3." "4." "5." "6." "7."
       db 0ffh,0efh,0f7h,0fch,0b9h,0deh,0f9h,0f1h
     ;    "8." "9." "a." "b." "c." "d." "e." "f."
       db 00h,8eh,0f6h,0f0h,0b8h,80h,46h,40h
     ;    "灭""J." "H." "k" "L." "." "+" "-"
       db 0f3h,0eeh,0bdh,88h,0beh,0b7h,0dch,087h
     ;    "p." "y." "G." "-." "U." "n." "o.""i"
       end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -