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

📄 mcu.asm

📁 ds1302 汇编源代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
keyout: NOP
      ret
;******************************8
key_qr:
       LCALL R_1302
      ljmp keyout
;********************************8
key_up:
       lcall read_24c02
       MOV 1FH ,#100
       mov a ,7Bh
       cjne a ,#0ah ,key_upa
        mov a ,30h             ;10
      LCALL IBTDA
       mov a ,31h
       mov 75h ,a
       mov a ,32h
       mov 74h ,a
       mov a ,33h
       mov 73h ,a
       mov a ,34h
       mov 72h ,a
       mov a ,35h
      mov 21h ,a

       MOV 7AH ,#0AH
      lcall dis

       ljmp keya

key_upa:inc a
        mov 7Bh ,a
        lcall dis_t
        LCALL YS2S
        ljmp keya
;***********************************
key_down:
       lcall read_24c02
       MOV 1FH ,#100
       mov a ,7Bh
       cjne a ,#01h ,key_downa
      mov a ,66h
       LCALL IBTDA            ;1

       mov a ,67h
       mov 75h ,a
       mov a ,68h
       mov 74h ,a
       mov a ,69h
       mov 73h ,a
       mov a ,6ah
       mov 72h ,a
       mov a ,6bh
       mov 21h ,a

       MOV 7AH ,#01H
       lcall dis
       ljmp keya

key_downa:dec a
        mov 7Bh ,a
        lcall dis_t
        LCALL YS2S
        ljmp keya
;*******************************
dis_t: mov a ,7Bh
      cjne a ,#01h ,dis_t2
       mov a ,66h
       LCALL IBTDA            ;1

       mov a ,67h
       mov 75h ,a
       mov a ,68h
       mov 74h ,a
       mov a ,69h
       mov 73h ,a
       mov a ,6ah
       mov 72h ,a
       mov a ,6bh
       mov 21h ,a

       MOV 7AH ,#01H
       lcall dis
       ret
dis_t2:cjne a ,#02h ,dis_t3
       mov a ,60h             ;2
       LCALL IBTDA
       mov a ,61h
       mov 75h ,a
       mov a ,62h
       mov 74h ,a
       mov a ,63h
       mov 73h ,a
       mov a ,64h
       mov 72h ,a
       mov a ,65h
       mov 21h ,a

       MOV 7AH ,#02H
    lcall dis
       ret
dis_t3: cjne a ,#03h ,dis_t4
       mov a ,5ah             ;3
       LCALL IBTDA
       mov a ,5bh
       mov 75h ,a
       mov a ,5ch
       mov 74h ,a
       mov a ,5dh
       mov 73h ,a
       mov a ,5eh
       mov 72h ,a
       mov a ,5fh
       mov 21h ,a

       MOV 7AH ,#03H
       lcall dis
       ret
dis_t4: cjne a ,#04h ,dis_t5
       mov a ,54h             ;4
       LCALL IBTDA
       mov a ,55h
       mov 75h ,a
       mov a ,56h
       mov 74h ,a
       mov a ,57h
       mov 73h ,a
       mov a ,58h
       mov 72h ,a
       mov a ,59h
       mov 21h ,a

       MOV 7AH ,#04H
   lcall dis
       ret
dis_t5: cjne a ,#05h ,dis_t6
       mov a ,4eh             ;5
       LCALL IBTDA
       mov a ,4fh
       mov 75h ,a
       mov a ,50h
       mov 74h ,a
       mov a ,51h
       mov 73h ,a
       mov a ,52h
       mov 72h ,a
       mov a ,53h
      mov 21h ,a

       MOV 7AH ,#05H
     lcall dis
       ret
dis_t6: cjne a ,#06h ,dis_t7
       mov a ,48h             ;6
       LCALL IBTDA
       mov a ,49h
       mov 75h ,a
       mov a ,4ah
       mov 74h ,a
       mov a ,4bh
       mov 73h ,a
       mov a ,4ch
       mov 72h ,a
       mov a ,4dh
     mov 21h ,a

       MOV 7AH ,#06H
   lcall dis
       ret
dis_t7:cjne a ,#07h ,dis_t8
       mov a ,42h             ;7
       LCALL IBTDA
       mov a ,43h
       mov 75h ,a
       mov a ,44h
       mov 74h ,a
       mov a ,45h
       mov 73h ,a
       mov a ,46h
       mov 72h ,a
       mov a ,47h
       mov 21h ,a

       MOV 7AH ,#07H
    lcall dis
       ret
dis_t8:cjne a ,#08h ,dis_t9
       mov a ,3ch             ;8
       LCALL IBTDA
       mov a ,3dh
       mov 75h ,a
       mov a ,3eh
       mov 74h ,a
       mov a ,3fh
       mov 73h ,a
       mov a ,40h
       mov 72h ,a
       mov a ,41h
      mov 21h ,a

       MOV 7AH ,#08H
     lcall dis
       ret
dis_t9:cjne a ,#09h ,dis_t10
       mov a ,36h             ;9
       LCALL IBTDA
       mov a ,37h
       mov 75h ,a
       mov a ,38h
       mov 74h ,a
       mov a ,39h
       mov 73h ,a
       mov a ,3ah
       mov 72h ,a
       mov a ,3bh
     mov 21h ,a

       MOV 7AH ,#09H
       lcall dis
       ret
dis_t10:cjne a ,#0ah ,dis_t11
       mov a ,30h             ;10
      LCALL IBTDA
       mov a ,31h
       mov 75h ,a
       mov a ,32h
       mov 74h ,a
       mov a ,33h
       mov 73h ,a
       mov a ,34h
       mov 72h ,a
       mov a ,35h
      mov 21h ,a
        MOV WDT_CONTR,#34H ;喂狗,
       MOV 7AH ,#0AH
      lcall dis
       ret
dis_t11:
     mov 7Bh ,#0ah
     ret
;***********************************

;*******COMM******************
 COMM:CLR   EA

      PUSH  ACC
      PUSH  PSW
      PUSH  DPL
      PUSH  DPH
      push  00h
      push  01h
      push  02h
      push  03h
      push  04h
      push  05h
      push  06h
      push  07h
      CLR  RS1
      CLR   RS0
      JBC   RI   ,RII1
      JBC   TI   ,INTU
 INTU:LJMP  COMF
 RII1:   mov   a ,24h
     cjne  a ,#55h ,yyy
     ljmp  intu
yyy:
     MOV   A    ,SBUF
      CLR   RI

      XRL   A    ,#7fH
      JNZ   INTU
      MOV   20H   ,#7fH
      MOV   R0   ,#21H
      MOV   R2   ,#03H
 RII2: JNB   RI   ,RII2
       MOV   A    ,SBUF
       CLR   RI
       MOV   @R0  ,A
      INC   R0
      DJNZ  R2   ,RII2
;*****************************************
       MOV   A ,23H
      CJNE  A ,#0DH , OUTT
      mov  a ,1fh
      cjne  a ,#55h ,rio
       ljmp   xunjian
      ;JB   2ah ,XUNJIAN
rio:   JB   2bh ,MINGLING

OUTT: LJMP COMF
XUNJIAN:MOV   A ,22H
      anl   a ,#0fh
      CJNE  A ,#00H , SL1
      clr   29h
      clr   2ah
      clr   2bh
      mov  1fh ,#54h
       LJMP  COMF
SL1:    SETB 29h
         CLR  2ah
         CLR 2bh
         setb 29h
         mov 1fh ,#54h
         LJMP  COMF
;********MINGLING *************
MINGLING:MOV   A ,22H
      anl   a ,#0fh
      CJNE  A ,#00H , SLl1
      clr   29h
      clr   2ah
      clr   2bh
      LJMP  COMF
 sll1: setb 29h
      clr 2ah
      clr 2bh
;***************************
 COMF:CLR   TI
      CLR   RS0
      CLR   RS1
      pop   07h
      pop   06h
       pop   05h
      pop   04h
       pop   03h
      pop   02h
       pop   01h
      pop   00h
      POP   DPH
      POP   DPL
      POP   PSW
      POP   ACC
      SETB  EA
      RETI
;*******READ_24C02**************************8
; 读AT24cxx 到RAM 首址70h 80字节长
read_24C02:  mov     addr,#0
        mov	r0, #buffer
        mov     r7,#cnt
y71:    mov     b,#120
y72:	lcall	START24
	jc	y35
	mov	a, #FADDR
	clr	acc.0
	lcall	shout
	jc	y34
	mov	a, addr
	lcall	shout		;
	jc	y34
	lcall	START24
	jc	y34
	mov	a, #faddr
        setb	acc.0
	lcall	shout
	jc	y34
y31: 	lcall	shin
	mov	@r0, a
	lcall	NAK
        inc     r0
	clr	c
y34:	lcall	STOP24
y35:    nop
        jnc     y74
        djnz    b,y72
        setb    c
        ajmp    y75
y74:    inc     addr
        djnz    r7,y71
        clr     c
y75:     MOV    A ,3fh
        MOV   1eH ,A
         ret
;#buffer首址RAM存入AT24cxx
write_24C02: MOV  A ,1eH
           MOV  3fh ,A

         mov    addr,#0
         mov    r7,#cnt
         mov    r0,#buffer
y62:     mov    b,#10
y63:     lcall	START24
	 jc	y38
	 mov	a, #FADDR
	 clr	acc.0
	 lcall	shout
	 jc	y37
         mov    a,addr
	 lcall	shout		;
	 jc	y37
y36:	 mov	a, @r0
	 lcall	shout
	 jc	y37
	 inc	r0
	 clr	c
y37:	 lcall	STOP24
y38:     jnc    y64
         djnz   b,y63
         setb   c
         ajmp   y65
y64:     inc    addr
         djnz   r7,y62
         clr    c
y65:     nop
         ret
;*******************************************
;       AT24cxx子程序
;*********************************************



START24:	; Send START24, defined as high-to-low SDA with SCL high.
	; Return with SCL, SDA low.
	; Returns CY set if bus is not available.
	setb	SDA
	setb	SCL		; Verify bus available.
	jnb	SDA, x40	; jump if not high
	jnb	SCL, x40	; jump if not high
	nop			; enforce setup delay and cycle delay
	clr	SDA
	nop			; enforce hold delay
	nop			;
	nop			;
	nop			;
	nop			;
	clr	SCL
	clr	c		; clear error flag
	ajmp	x41
x40:	setb	c		; set error flag
x41:	ret

STOP24:	; Send STOP24, defined as low-to-high SDA with SCL high.
	; SCL expected low on entry. Return with SCL, SDA high.
	clr	SDA
	nop			; enforce SCL low and data setup
	nop
	setb	SCL
	nop			; enforce setup delay
	nop			;
	nop			;
	nop			;
	nop			;
	setb	SDA
	ret

shout:	; Shift out a byte to the AT24Cxx, most significant bit first.
	; SCL, SDA expected low on entry. Return with SCL low.
	; Called with data to send in A.
	; Returns CY set to indicate failure by slave to acknowledge.
	; Destroys A.
	push	b
	mov	b, #8		; bit counter
x42:	rlc	a		; move bit into CY
	mov	SDA, c		; output bit
	nop			; enforce SCL low and data setup
	setb	SCL		; raise clock
	nop			; enforce SCL high
	nop			;
	nop			;
	nop			;
	clr	SCL		; drop clock
	djnz	b, x42		; next bit
	setb	SDA		; release SDA for ACK
	nop			; enforce SCL low and tAA
	nop			;
	setb	SCL		; raise ACK clock
        nop			; enforce SCL high
 	nop			;
	nop			;
	nop			;
	mov	c, SDA		; get ACK bit
	clr	SCL		; drop ACK clock
        pop	b
        ret

shin:	; Shift in a byte from the AT24Cxx, most significant bit first.
	; SCL expected low on entry. Return with SCL low.
	; Returns received data byte in A.
	setb	SDA		; make SDA an input
	push	b
	mov	b, #8		; bit count
x43:	nop			; enforce SCL low and data setup
	nop			;
	nop			;
	setb	SCL		; raise clock
	nop			; enforce SCL high
	nop			;
	mov	c, SDA		; input bit
	rlc	a		; move bit into byte
	clr	SCL		; drop clock
	djnz	b, x43		; next bit
	pop	b
	ret

ACK:	clr	SDA		; ACK bit
	nop			; enforce SCL low and data setup
	nop			;
	setb	SCL		; raise clock
	nop			; enforce SCL high
	nop			;
	nop			;
	nop			;
	clr	SCL		; drop clock
	ret


NAK:	setb	SDA		; NAK bit
	nop			; enforce SCL low and data setup
	nop			;
	setb	SCL		; raise clock
	nop			; enforce SCL high
	nop			;
	nop			;
	nop			;
	clr	SCL		; drop clock
	ret

;------------------------------------初始化1302-------------------------
SET1302: CLR    RST
         CLR    LED3CLK
        MOV     SECOND,#0
         SETB   RST
         MOV    A,#8EH
         LCALL  R_BIT
         MOV    A,#00H
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST

         MOV    R0,#SECOND
         MOV    R7,#7
         MOV    R1,#80H
SET1302A:CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         LCALL  R_BIT
         MOV    A,@R0
         LCALL  R_BIT
         INC    R0
         INC    R1
         INC    R1
         SETB   LED3CLK
         CLR    RST
         DJNZ   R7,SET1302A
         CLR    RST
         CLR    LED3CLK

         sETB   LED3CLK
         nop
         CLR    RST
         nop
         clr    led3clk
         SETB   RST
         MOV    A,#90H
         LCALL  R_BIT
         MOV    A,#10100101B         ;充电器设置
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         CLR    LED3CLK

         SETB   RST
         MOV    A,#8EH
         LCALL  R_BIT
         MOV    A,#80H
         LCALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         RET

;-----------------------------
R_1302:  MOV    R0,#SECOND
         MOV    R7,#7
         MOV    R1,#81H
R_1302A: CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         LCALL  R_BIT
         LCALL  W_BIT
         MOV    @R0,A
         INC    R0
         INC    R1
         INC    R1
         SETB   LED3CLK
         CLR    RST
         DJNZ   R7,R_1302A
         RET
;------------------R_BIT------------------
R_BIT:   MOV    R4,#8
R_BIT1:  RRC    A
         MOV    LED4IO,C
         SETB   LED3CLK
         CLR    LED3CLK
         DJNZ   R4,R_BIT1
         RET
;-------------------W_BIT-----------------------
W_BIT:   MOV    R4,#8
W_BIT1:  MOV    C,LED4IO
         RRC    A
         SETB   LED3CLK
         CLR    LED3CLK
         DJNZ   R4,W_BIT1
         RET
;************************************
IDTB:
     CJNE A ,#10H ,IDTB1
     MOV A ,#0AH
     RET
IDTB1:CJNE A ,#11H ,IDTB2
     MOV A ,#0BH
     RET
IDTB2:CJNE A ,#12H ,IDTB3
     MOV A ,#0CH
IDTB3: RET
;****************************
IBTDA: MOV B ,A
       ANL A ,#0FH
       CJNE A ,#0AH,IBTD1
       MOV  76H ,#10H
       LJMP  IBTDO
IBTD1:  CJNE A ,#0BH,IBTD2
       MOV  76H ,#11H
       LJMP  IBTDO
IBTD2:  CJNE A ,#0CH,IBTD3
       MOV  76H ,#12H
       LJMP  IBTDO
IBTD3: MOV 76H ,A
IBTDO:
      MOV A ,B
      SWAP  A
      ANL A,#0FH
      MOV 78H ,A
      RET
;*******************************
YS1S:      MOV  R7 ,#01H
YS1S1: MOV  R5 ,#40H
YS1S2: MOV  R6 ,#0FFH
YS1S3: CLR DOGk
       NOP
       SETB DOGk
       MOV WDT_CONTR,#34H ;喂狗,
       DJNZ R6 ,YS1S3
       DJNZ R5  ,YS1S2
       DJNZ R7  ,YS1S1
       RET
;***************************
YS2S:  MOV  R7 ,#04H
YS2S1: MOV  R5 ,#0FFH
YS2S2: MOV  R6 ,#0FFH
YS2S3: CLR  DOGk
       NOP
       SETB DOGk
       MOV WDT_CONTR,#34H ;喂狗,
       DJNZ R6 ,YS2S3
       DJNZ R5  ,YS2S2
       DJNZ R7  ,YS2S1
       RET
;**************************************8
YS3S:  MOV  R7 ,#03H
YS3S1: MOV  R5 ,#0FFH
YS3S2: MOV  R6 ,#0FFH
YS3S3:
       MOV WDT_CONTR,#34H ;喂狗,
       DJNZ R6 ,YS3S3
       DJNZ R5  ,YS3S2
       DJNZ R7  ,YS3S1
       RET
       ;**************************************8
YS5mS:  MOV  R7 ,#03H
YS5S1: MOV  R5 ,#0FH
YS5S2: MOV  R6 ,#0FFH
YS5S3: CLR  DOGk
       NOP
       SETB DOGk
       MOV WDT_CONTR,#34H ;喂狗,
       DJNZ R6 ,YS5S3
       DJNZ R5  ,YS5S2
       DJNZ R7  ,YS5S1
       RET
;*****************************************************
YS4S:  MOV  R7 ,#10H
YS4S1: MOV  R5 ,#0FFH
YS4S2: MOV  R6 ,#0FFH
YS4S3: CLR  DOGk
       NOP
       SETB DOGk
       MOV WDT_CONTR,#34H ;喂狗,
       DJNZ R6 ,YS4S3
       DJNZ R5  ,YS4S2
       DJNZ R7  ,YS4S1
       RET

       END

⌨️ 快捷键说明

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