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

📄 mask_c_f.a51

📁 8051模拟IIC总线读写24CXX原程序。
💻 A51
字号:
;$INCLUDE(REG52.INC)

PUBLIC INIT_UART
PUBLIC delay_us
PUBLIC delay_us2

program_dd segment code
PUBLIC _program_data ; must add _

;ly
PUBLIC READ_DATA

PUBLIC ERS_BLOCK1
PUBLIC delay
PUBLIC delay_3sec
PGM_MTP EQU     0FFF0H

cseg at 08ff0h ; complete
complete:
MOV   P1, #55h
jmp complete

cseg at 09000h ;data_start_addr

;CALL  INIT_UART
;go:
 mov   DPTR,#MSG_toogle
 Lcall  SHOW2PC       
 ;Lcall --> can be used within 64k,  Acall --> only within 2k
 ; must use "Lcall" here,(because I want to copy this region to 0x1000)
 ; if use "call", after disassembly --> become Acll, not Lcall, therefore it will not run properly.

	  MOV   P1, #00h       ;1 
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay

          MOV   P1, #0ffh
	  Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay

          MOV   P1, #000h       ;2
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay

          MOV   P1, #0ffh
	  Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
          Lcall delay
	  Lcall delay
          Lcall delay
	  Lcall delay

mov   DPTR,#MSG_OK
Lcall  SHOW2PC 
;jmp go    ;data_end_addr



cseg at 0A000h
MSG_toogle:
        DB      0DH, 0AH, ' You will see P1 toogle 2 times','#'
MSG_OK:
        DB      0DH, 0AH, ' OK ','#'

INIT_UART:

     MOV     TMOD,#020H      ; T1 MODE2 auto_reload
;     MOV     TCON,#000H
     MOV     TCON,#005H
;     MOV     TH1, #0F3H      ;(243) B.R.=2400 AT CLK=12MHz
;      MOV     TH1, #253      ;(253) B.R.=19200 AT CLK=22.1184MHz    
      MOV     TH1, #245      ;(245) B.R.=4800 AT CLK=20MHz   or 10M 2400 

      ;MOV     TL1, #000H;;
     SETB    TR1             ; ENABLE TIME1
     MOV     SCON,#052H      ; UART MODE1 **********8
     RET


SHOW2PC:
        CLR     A
        MOVC    A,@A+DPTR
        CJNE    A,#23H,SHOW2PC_NEXT
        RET
SHOW2PC_NEXT:
        LCALL   TRANS
        INC     DPTR
        JMP     SHOW2PC



TRANS:
        CLR     EA
        CLR     TI
        MOV     SBUF,#56;ly	A
        JNB     TI,$
        CLR     TI
        RET

delay_us:
     mov    r7,#250  ;(r7*2)+1 us
     djnz   r7,$
     ret


delay_us2:
     mov    r7,#50  ;(r7*2)+1 us
     djnz   r7,$
     ret


delay:
     mov r5,#1
del0:
    mov    r6,#40 ;R5*20ms
del:
     mov    r7,#246
     djnz   r7,$
     djnz   r6,del
     djnz   r5,del0
     ret                 


delay_3sec:
     mov r5,#150
del00:
    mov    r6,#40 ;R5*20ms
del2:
     mov    r7,#246
     djnz   r7,$
     djnz   r6,del2
     djnz   r5,del00
     ret 



RSEG program_dd
_program_data:  ;must add _

;ly
LCALL	TRANS

mov DPH,20H;R6
mov DPL,21H;R7

MOV     0F8H,#5AH               ;ENTER IAP COMMAND KEY  
ORL     0A2H,#20H               ; enable mask ROM

MOV     R1, #02H	           ;PROGRAM  
               
MOV     A,22H;R5                  ;PROGRAM HI_now_sector_number TO flash
CALL    PGM_MTP
CJNE    A, #00H, PGM_ERR1
;INC DPTR

;MOV     R1, #02H	           ;PROGRAM                 
;MOV     A, R3                  ;PROGRAM LO_now_sector_number TO flash
;CALL    PGM_MTP
;CJNE    A, #00H, PGM_ERR2
;MOV   0A2H,#00H               ; disable mask ROM
;MOV   0F8H,#00H 
ANL   0A2H,#0DFH               ; disable mask ROM
ANL   0F8H,#00H 

;INC DPTR
jmp end_p

PGM_ERR1:
;PGM_ERR2:
 mov   DPTR,#PRG_FAIL
 call  SHOW2PC

end_p:
ret;;;;;;;;;

PRG_FAIL:
        DB      0DH, 0AH, ' PRG_FAIL ','#'

ERS_BLOCK1:

;ly
LCALL	TRANS

MOV     0F8H,#5AH               ;ENTER IAP COMMAND KEY  
ORL     0A2H,#20H               ; enable mask ROM

MOV     R1, #01H	          
MOV     DPTR,#04000H       ;ERASE block 1        
                      
CALL    PGM_MTP

CJNE    A, #00H, ERS_ERR

ANL   0A2H,#0DFH               ; disable mask ROM
ANL   0F8H,#00H 

jmp end_ers

ERS_ERR:
 mov   DPTR,#ERS_FAIL
 call  SHOW2PC
end_ers:
ret

ERS_FAIL:
        DB      0DH, 0AH, ' ERS_BLOCK1_FAIL ','#'

;ly
READ_DATA:
LCALL TRANS

MOV DPH,20H
MOV DPL,21H

MOV 0F8H,#5AH
ORL 0A2H,#20H

MOV R1,#03H

CALL PGM_MTP

MOV 22H,A

ANL   0A2H,#0DFH               
ANL   0F8H,#00H 

jmp end_read

end_read:
ret

END

⌨️ 快捷键说明

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