lcdclk.asm

来自「LCM显示的时钟程序」· 汇编 代码 · 共 193 行

ASM
193
字号
org 0000h
ljmp main
org 000bh
ljmp ptf0
org 0040h
main: mov sp,#0efh
      mov r1,#30h
      mov 32h,#0ah
      mov 35h,#0ah
      mov r5,#0
      mov r6,#0
      mov r7,#0
      mov r4,#20
      mov th0,#3ch
      mov tl0,#0b0h
      mov tmod,#1
      mov ie,#82h
      mov ip,#2
key:  lcall tran
      lcall dis
      lcall ccscan
      jnz   ink1
      ljmp  key
ink1: lcall tran
      lcall dis
      lcall dis
      lcall ccscan
      jz   key
      mov 45h,a
      ;lcall wait
      lcall l0
      cjne a,#0,a1
      setb tr0
      ljmp here
a1:   cjne a,#1,a2
      inc r5
      cjne r5,#60,key
      mov r5,#0
      lcall tran
      lcall dis
      ljmp key
a2:   cjne a,#2,a3
      inc r6
      cjne r6,#60,key
      mov r6,#0
      lcall tran
      lcall dis
      ljmp key
a3:   cjne a,#3,key
      inc r7
      cjne r7,#24,key
      mov r7,#0
      lcall tran
      lcall dis
      ljmp  key
here: lcall tran
      lcall dis
      ajmp here
ptf0: orl tl0,#0b0h
      mov th0,#3ch
      djnz r4,ptf0r
      mov r4,#20
      inc r5 
      cjne r5,#60,ptf0r
      mov r5,#0
      inc r6
      cjne r6,#60,ptf0r
      mov r6,#0
      inc r7
      cjne r7,#24,ptf0r
      mov r7,#0
ptf0r:
         reti
tran: mov b,#10
      mov a,r5
      div ab
      mov 30h,b
      mov b,#10
      div ab
      mov 31h,b
      mov b,#10
      mov a,r6
      div ab
      mov 33h,b
      mov b,#10
      div ab
      mov 34h,b
      mov b,#10
      mov a,r7
      div ab
      mov 36h,b
      mov b,#10
      div ab
      mov 37h,b
      ret
;************************************************************
dis:            push acc
                mov  r1,#37h
                CALL    Initial   
                MOV    r3,#10000000B
loop:           mov a,r3
                CALL    Write_instruction
                MOV     A,@r1
                add a,#30h                  
                CALL    WriteLCDData
                dec r1
                inc r3
                cjne r3,#10001000b,loop
                pop acc
                ret
                      
;*****************************************************************
Initial:
                MOV     A,#00111000B
                CALL    Write_instruction
                MOV     A,#00001110B
                CALL    Write_instruction
                MOV     A,#00000110B
                CALL    Write_instruction
                RET

;*****************************************************************
CheckBusy:
                PUSH    ACC
CheckBusyLoop:
		CLR	ENABLE
		SETB	R_W
		CLR	RS
                SETB    ENABLE
                MOV     A,DB0_DB7
                CLR     ENABLE
                JB      ACC.7,CheckBusyLoop
                POP     ACC
                CALL    DELAY
                RET
;*****************************************************************
Write_instruction:
                CALL    CheckBusy
		CLR	ENABLE
		CLR	R_W
		CLR	RS
                SETB    ENABLE
                MOV     DB0_DB7,A
                CLR     ENABLE
                RET
;*****************************************************************
WriteLCDData:
                CALL    CheckBusy
		CLR	ENABLE
		CLR	R_W
		SETB	RS
                SETB    ENABLE
                MOV     DB0_DB7,A
                CLR     ENABLE
                RET
;*****************************************************************
DELAY:
                MOV     40h,#5
D1:             MOV     41h,#0ffh
                DJNZ    41h,$
                DJNZ    40h,D1
                RET
CLS:
		MOV	A,#01H
		CALL	Write_instruction
		RET                
ccscan: mov a,p0
        cpl a
        ret
l0:   mov a,45h
      mov r2,#0
      clr c
l1:   rrc a
      jc l2
      inc r2
      sjmp l1
l2:   mov a,r2
      ret
wait:  lcall tran
       lcall dis
       lcall ccscan
       jnz wait
       ret            
RS              BIT     P3.4
R_W             BIT     P3.5
ENABLE          BIT     P3.3
DB0_DB7         DATA     P1	  
	  end    
      
      
            
      
      

⌨️ 快捷键说明

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