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

📄 shizhong1.asm

📁 此代码为89c51的汇编语言
💻 ASM
字号:
     org   0000h
     ajmp  main
     org   000bh
     ajmp  ptf0
main:mov   7ch,#00h       ;时十位清零
     mov   7bh,#00h       ;时个位清零
     mov   7ah,#00h       ;分十位清零
     mov   79h,#00h       ;分个位清零
     mov   78h,#00h       ;秒清零
     mov   th0,#03ch       ;t0初始化
     mov   tl0,#0b0h      ;定时50ms
     mov   tmod,#01h
     mov   ip,#02h
     mov   ie,#82h        ;中断初始化
     setb  tr0
     mov   30h,#14h       ;t0溢出中断次数计数单元初始化20(1s)
     mov   32h,#3ch
     mov   33h,#0ah
     mov   34h,#06h
     mov   35h,#0ch
     mov   36h,#0ah

ld:  acall disp
     jb    p2.3,ld1       ;时十位校正
     acall delay
     jnb   p2.3,ld1
     mov   a,7ch
     cjne  a,#02h,w
     mov   7ch,#0ffh
w:   inc   7ch            ;时十位加1
     mov   78h,#00h       ;秒清零
ld1: jb    p2.2,ld2       ;时个位校正
     acall delay
     jnb   p2.2,ld2
     mov   a,7bh
     cjne  a,#09h,w1
     mov   7bh,#0ffh
w1:  inc   7bh            ;时个位加1
     mov   78h,#00h       ;秒清零
ld2: jb    p2.1,ld3       ;分十位校正
     acall delay
     jnb   p2.1,ld3
     mov   a,7ah
     cjne  a,#05h,w2
     mov   7ah,#0ffh
w2:  inc   7ah            ;分十位加1
     mov   78h,#00h       ;秒清零
ld3: jb    p2.0,ld4       ;分个位校正
     acall delay
     jnb   p2.0,ld4
     mov   a,79h
     cjne  a,#09h,w3
     mov   79h,#00h
w3:  inc   79h            ;分个位加1
     mov   78h,#00h       ;秒清零
ld4: mov   a,30h          ;调用报时程序
     cjne  a,#14h,ld5
     setb  p1.2
     mov   a,79h
     jnz   ld5
     mov   a,7ah
     jnz   ld5
     clr   p1.2
ld5: sjmp  ld

ptf0:mov   th0,#03ch      ;中断服务子程序
     mov   tl0,#0b0h
     djnz  30h,ptf0r      ;1秒到否?
     inc   78h            ;秒加1
     mov   30h,#14h       ;恢复中断次数计数单元20
     djnz  32h,ptf0r      ;1分到否?
     mov   78h,#00h
     inc   79h
     mov   32h,#3ch
     djnz  33h,ptf0r      ;分个位到十否?
     mov   79h,#00h
     mov   33h,#0ah
     inc   7ah
     djnz  34h,ptf0r      ;分十位到六否?
     mov   7ah,#00h
     mov   34h,#06h
     inc   7bh
     djnz  35h,pp1        ;12小时到否?
     mov   35h,#0ch
     mov   7ch,#00h
     mov   7bh,#00h
     sjmp  ptf0r
pp1: djnz  36h,ptf0r      ;时个位到十否?
     mov   7bh,#00h
     mov   36h,#0ah
     inc   7ch

ptf0r: reti

disp:mov  r0,#79h        ;设79H-7C为显示缓冲器
     mov  r3,#1
     mov  a,#0efh
gg:  mov  r4,a           ;数码管动态显示
     mov  p0,#00h
     mov  p2,a
     mov  a,30h
     cjne a,#14h,loop    ;1秒到小数点闪烁
     mov  a,r4
     jb   acc.6,loop
     mov  dptr,#tab1
     sjmp san
loop:mov  dptr,#tab
san: mov  a,@r0
     movc a,@a+dptr
ee:  mov  p0,a
     acall delay
     inc  r0
     MOV    A,R3
     JB     ACC.3,ff
     RL     A
     MOV    R3,A
     mov    a,r4
     rl     a
     SJMP   gg
ff:  ret

tab: DB     0EDH,28H,0CBH,0ABH,2EH         ;0,1,2,3,4
     DB     0A7H,0E7H,29H,0EFH,0AFH	    ;5,6,7,8,9

tab1:DB     0FDH,38H,0DBH,0BBH,3EH         ;0.,1.,2.,3.,4.
     DB     0B7H,0F7H,39H,0FFH,0BFH	    ;5.,6.,7.,8.,9.

delay:MOV    R7,#02H	                    ;延时子程序
cc:   MOV    R6,#0ffH
dd:   DJNZ   R6,dd
      DJNZ   R7,cc
      RET
      end

⌨️ 快捷键说明

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