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

📄 yj2000.asm

📁 我的基于C51的时钟+运算器2合一汇编程序 P1口接4X4键盘阵列
💻 ASM
字号:
cseg at 0000h
        jmp format
cseg at 0bh
        jmp flash 
cseg at 01bh
        jmp addtime
format: clr 09h
        mov 08h,#0
        mov 09h,#0
        mov 0ah,#0
	mov 0bh,#0

        mov 81h,#30h
	clr psw.4
        clr psw.3
	clr 8h
        
	mov r7,#00111000b
	acall WSB

        mov r7,#00001100b
	acall WSB
      
	mov r7,#00000110b
	acall WSB

	mov r7,#1
	acall WSB
	 
	mov r7,#0dch
	acall WSB

        acall YJ2005
	acall refresh
        acall jsformat

	mov ie,#10001010b
	mov 0b8h,#00001000b
        mov tmod,#00010001b
	mov th1,#0dch
	mov tl1,#0
        mov th0,#0cch
	mov tl0,#000h
        setb tr1
        setb tr0

gon:    
        acall scankey         

	cjne r5,#3,noTT
	cjne r6,#1,noTT
        cpl 09h
        clr 8h
        mov r7,#1
	acall WSB
	jb 09h,js
        setb tr0	 
        acall flashver
  	clr 8h
	mov r7,#00111000b
	acall WSB
	mov r7,#00001100b
	acall WSB 
	jmp gon
js:     clr tr0
        clr 8h
        mov r7,#80h
	acall WSB
	mov r7,#00001111b
	acall WSB
        acall jsformat
	jmp gon

				
noTT:   jnb 09h,noTT1
        cjne r5,#3,noCE
	cjne r6,#0,noCE
	clr 8h
	mov r7,#1
	acall WSB
        acall jsformat
	jmp gon
noCE:  
        jmp noCom

noTT1:	cjne r5,#0,noTTh
	cjne r6,#2,noTTh
        inc 0bh
        mov r0,#0bh
        cjne @r0,#24,tt1
        mov 0bh,#0
tt1:    jmp reft

noTTh:  cjne r5,#1,noTTm
	cjne r6,#2,noTTm
	inc 0ah
        mov r0,#0ah
        cjne @r0,#60,tt2
        mov 0ah,#0
tt2:    jmp reft
	
noTTm:  cjne r5,#2,noTTcom
	cjne r6,#2,noTTcom
        mov 09h,#0
        mov 08h,#0
        
reft:   acall refresh
noTTcom:jmp gon


noCom:  cjne r5,#3,nodoit
	cjne r6,#3,nodoit
        clr 8h
        mov r7,#0c0h
        call WSB
        setb 8h
        mov r7,#3dh
        call WSB
	call doit
	jmp gon
nodoit:	jnb 0dh,makN1 
        acall makno2 

        jmp gon
makN1:  acall makno1 
 
        jmp gon

doit:   mov a,19h
        cjne a,1ch,yihao
        mov a,18h
	cjne a,#0,single
        mov a,1bh
	cjne a,#0,single
integer:mov 4fh,#0
        clr c
        acall intadd
        
        acall disjg




single:


yihao:  

         ret

disjg:   mov a,#50h
         add a,4fh
 ago:    cjne a,#50h,dis
	 ret
  dis:   mov r0,a
         mov a,@r0
	 add a,#30h
         setb 8h
         mov r7,a
         acall WSB   
         dec 4fh
         jmp disjg

intadd:  push psw
begin:   inc 4fh
         mov 4dh,#0 
         mov 4eh,#0
         mov a,1ah
         orl a,1dh 
	 cjne a,#0,doadd
         pop psw
	 jnc over
	 mov a,#50h
 	 add a,4fh
         mov r0,a
	 mov @r0,#1
	 inc 4fh
over:    dec 4fh
         ret	
doadd:   mov r0,#1ah 
         cjne @r0,#0,no1t0 
no2t1:   mov r0,#1dh 
         cjne @r0,#0,no2t0
         jmp todo
no2t0:   mov a,#60h
         add a,@r0
	 mov r0,a
	 mov 4eh,@r0
         dec 1dh
todo:    pop psw
         mov a,4dh
         addc a,4eh
         mov r1,a
	 subb a,#10
         jc xy10
         setb c
         push psw
         mov r1,a
         jmp doad
 xy10:   clr c
         push psw 
 doad:   mov a,#50h
 	 add a,4fh
         mov r0,a
	 mov a,r1
	 mov @r0,a
	 jmp begin
no1t0:	 mov a,#70h
         add a,@r0
	 mov r0,a
	 mov 4dh,@r0
         dec 1ah
	 jmp no2t1
	 
makno2: mov a,1dh
        cjne a,#0,no2head
        cjne r5,#3,no2subb
	cjne r6,#2,no2subb
	clr 8h
        mov r7,1eh
	call WSB
	mov 1ch,#0ffh
	setb 8h
        mov r7,#2dh
        call WSB
        ret
no2subb:cjne r5,#2,no2add
	cjne r6,#3,no2add
	clr 8h
        mov r7,1eh
	call WSB
	mov 1ch,#0
	setb 8h
        mov r7,#2bh
        call WSB
	ret
no2add: 
no2head:cjne a,#7,no2engh
        ret
no2engh:cjne r5,#1,nopoin2
	cjne r6,#3,nopoin2
        mov a,1bh
	cjne a,#0,no2FP
        inc 1dh
	acall print
        mov 1bh,1dh         
no2FP:  ret
nopoin2:cjne r5,#2,no2a
	cjne r6,#3,no2a
	ret
no2a:   cjne r5,#3,no2s
	cjne r6,#2,no2s
	ret
no2s:   inc 1dh
        mov a,#60h
        add a,1dh
        mov r1,a
	acall print
	subb a,#2fh
        mov @r1,a
        ret

makno1: mov a,1ah
        cjne a,#0,nothead
        cjne r5,#3,notsubb
	cjne r6,#2,notsubb
	mov 1eh,#1
        clr 8h
        mov r7,#80h
        call WSB
	mov a,0ffh
	xrl 19h,a
	mov a,19h
	setb 8h
	cjne a,#0ffh,notF
        mov r7,#2dh
        call WSB
        ret
notF:   mov r7,#00100000b
        call WSB 
	ret
notsubb:cjne r5,#2,nothead
	cjne r6,#3,nothead
        ret 
nothead:cjne a,#7,notengh
        acall set2FH
        ret
notengh:cjne r5,#1,nopoint
	cjne r6,#3,nopoint
        mov a,18h
	cjne a,#0,noFP
        inc 1ah
	acall print
        mov 18h,1ah         
noFP:   ret
nopoint:acall set2FH
        jnb 0dh,nosub
	ret
 nosub: inc 1ah
        mov a,#70h
        add a,1ah
        mov r1,a
	acall print
	subb a,#2fh
        mov @r1,a
        ret

set2FH: cjne r5,#2,noadd
	cjne r6,#3,noadd
	acall set1eh
        acall print
        setb 0dh
	mov 1ch,#0
	ret
 noadd: cjne r5,#3,noooo
	cjne r6,#2,noooo
	acall set1eh
        acall print
	setb 0dh
	mov 1ch,#0ffh
 noooo:	ret

set1eh: mov a,1ah
        add a,1eh
        add a,#80h
	mov 1eh,a
        ret
			
print:  acall findchar
        setb 8h
        mov r7,a
        acall WSB
        ret

jsformat:clr 0dh
         mov 18h,#0
         mov 19h,#0 
	 mov 1ah,#0
	 mov 1bh,#0
	 mov 1ch,#0
	 mov 1dh,#0
	 mov 1eh,#0
         ret

findchar:mov a,#4
         mov b,r5
	 mul ab
	 add a,r6
	 mov dptr,#0f00h
         movc a,@a+dptr
         ret

YJ2005: clr 8h
        mov r7,#80h
	acall WSB
        setb 8h
        mov r7,#01011001b
	acall WSB
        mov r7,#01001010b
	acall WSB
        mov r7,#32h
	acall WSB
        mov r7,#30h
	acall WSB
	mov r7,#30h
	acall WSB
	mov r7,#35h
	acall WSB
	clr 8h
        mov r7,#0c2h
	acall WSB
        ret

scankey:mov p1,#0feh
        mov r1,#3
scan:	mov a,p1
        anl a,#11110000b
        cjne a,#11110000b,quit
        mov a,p1
        rl a
	mov p1,a
        dec r1
        cjne r1,#0ffh,scan
	acall Ltime
        mov r3,#0ffh
        mov r4,#0ffh
	jmp scankey
quit:   mov r5,#0ffh
makr5:  rlc a
        inc r5 
        jc makr5 
        mov a,r1
        mov r6,a
	mov p1,#0
        mov a,r5
	subb a,r3
	mov r2,a
	mov a,r6
	subb a,r4
        add a,r2
        cjne a,#0,ok
        jmp scankey
ok:     mov a,r5
        mov r3,a
        mov a,r6
        mov r4,a
        ret         

WSB:    push 7
WSB1:   acall RZT
        anl 7h,#10000000b
	cjne r7,#0,WSB1
	pop 7
        clr p2.2
        mov c,8h
        mov p2.0,c
        clr p2.1
        nop
        nop
	mov p0,r7
	nop
	nop
	nop
	nop
        setb p2.2
	nop
	nop
	nop
	nop
	clr p2.2	
        ret

RZT:    mov p2,#00000110b
        nop
        nop
	nop
	nop
        mov r7,p0  
        clr p2.2
	ret

Ltime:  mov r2,#0afh
goo:    mov r3,#0ffh
go:	dec r3
        nop
	cjne r3,#0,go
	dec r2
        cjne r2,#0,goo
	ret

addtime:mov th1,#0dch	
	mov tl1,#0
        mov 0bh,c
        push psw
        mov 1fh,a
	mov 16h,b 
	push dph
	push dpl
	mov 2bh,r0
	mov 2ch,r1
	mov 2dh,r7		
	inc 8h
        jb 9h,makt11
	acall refresh
makt11: mov r0,#8h
        cjne @r0,#100,makt
        mov 8h,#0
	acall maktim	
makt:   mov r7,2dh
        mov r1,2ch
        mov r0,2bh
        pop dpl
        pop dph
	mov b,16h
	mov a,1fh
        pop psw
	mov c,0bh
	reti 	

maktim:	inc 9h
        mov r0,#9h
        cjne @r0,#60,nodis
        mov 9h,#0
        inc 0ah
        mov r0,#0ah
        cjne @r0,#60,nodis
        mov 0ah,#0
        inc 0bh
        mov r0,#0bh
        cjne @r0,#24,nodis
        mov 0bh,#0
nodis:  ret

refresh:setb 9h
        inc 17h
	mov r0,#17h
        cjne @r0,#0,nohor
hor:    clr 8h
     	mov r7,#0c3h
	acall WSB
        setb 8h
        mov b,#10
        mov a,0bh
	div ab
        add a,#30h
        mov r7,a
        acall WSB 
        mov a,b
        add a,#30h
        mov r7,a
        acall WSB        
        mov a,#00111010b
        mov r7,a
        acall WSB
        clr 8h
     	mov r7,#0c3h
	acall WSB 
	clr 9h
	ret
nohor:  cjne @r0,#1,nomin
min:	clr 8h
     	mov r7,#0c6h
	acall WSB
        setb 8h
        mov b,#10
        mov a,0ah
	div ab
        add a,#30h
        mov r7,a
        acall WSB
        mov a,b
        add a,#30h
        mov r7,a
        acall WSB
        mov a,#00111010b
        mov r7,a
        acall WSB
	clr 8h
     	mov r7,#0c6h
	acall WSB
	clr 9h
	ret
nomin:  cjne @r0,#2,nomm
        clr 8h
     	mov r7,#0c9h
	acall WSB
        setb 8h
        mov b,#10
        mov a,09h
	div ab
        add a,#30h
        mov r7,a
        acall WSB
        mov a,b
        add a,#30h
        mov r7,a
        acall WSB
        mov a,#2eh
        mov r7,a
        acall WSB
	clr 8h
     	mov r7,#0c6h
	acall WSB
	clr 9h
	ret
nomm:   mov 17h,#0ffh
mm:     clr 8h
     	mov r7,#0cch
	acall WSB
        setb 8h
        mov b,#10
        mov a,08h
	div ab
        add a,#30h
        mov r7,a
        acall WSB 
        mov a,b
        add a,#30h
        mov r7,a
        acall WSB              
        clr 8h
     	mov r7,#0cch
	acall WSB
	clr 9h
	ret

flash:  push psw
        mov 14h,a
	mov 15h,b
	push dph
	push dpl
	mov 2fh,r0
	mov 2eh,r1
        mov 2ah,r7
     	mov th0,#0cch
        mov tl0,#00
	inc 0ch
	mov r0,#0ch
        cjne @r0,#250,makt1
        cpl 0ah
	mov 0ch,0
	jb 9h,makt1
        acall flashver        
makt1:  mov r1,2eh
        mov r0,2fh
        mov r7,2ah
        pop dpl
        pop dph
        mov b,15h
	mov a,14h
        pop psw
	reti 

flashver: setb 9h
          clr 8h
     	  mov r7,#1
          acall WSB           
	  jnb 0ah,ver
          acall yj2005
	  clr 9h
	  ret
ver:      clr 8h
     	  mov r7,#80h
          acall WSB
          setb 8h
          mov r7,#01010100b 
          acall WSB
          mov r7,#01100101b 
          acall WSB
	  mov r7,#01101100b 
          acall WSB
	  mov r7,#00111010b 
          acall WSB
	  mov r7,#31h 
          acall WSB
          mov r7,#33h 
          acall WSB
          mov r7,#39h 
          acall WSB
          mov r7,#38h 
          acall WSB
	  mov r7,#31h 
          acall WSB
	  mov r7,#32h 
          acall WSB
	  mov r7,#35h 
          acall WSB
	  mov r7,#38h 
          acall WSB
          mov r7,#38h 
          acall WSB
	  mov r7,#36h 
          acall WSB
	  mov r7,#37h 
          acall WSB
          clr 8h
     	  mov r7,#80h
          acall WSB
	  clr 9h
          ret

cseg at 0f00h
keys:   db 37h,34h,31h,30h,38h,35h,32h,2eh,39h,36h,33h,2bh,0,0,2dh,3dh 

end

⌨️ 快捷键说明

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