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

📄 ic.asm

📁 IC读写系统程序,采用含I2C总线的AT24C01芯片为对象编程,键盘显示部分以8279为对象编程
💻 ASM
字号:
 	ORG 0000H
SCL	EQU	0B0H		;IC2401,byte-wr
SDA	EQU	0B1H	
;-------------------------------------------------------
START:	MOV SP,#53H
	JB P1.0,$
	LCALL DL10MS
	JB P1.0,START
	LCALL DL10MS
	MOV R0,#00H
	MOV R1,#55H
conw1:	push 00h		;R0 IS IC CAR WR ADDRESS
	push 01h		;R1 IS IC CAR I/O DATA
	CPL P1.1		;WR-LED
	LCALL WR2401_1W	;Byte Wr	
	CJNE R5,#00H,DISPERR
	pop 01h
	pop 00h
	inc r0
	inc r1
	cjne r0,#7fh,conw1
	SETB P1.1
	MOV R0,#00H	;R0 IS RD ADDRESS
	mov dptr,#4000h	;[4000H----407FH]=55,56,57,....................
conr1:	push 00h
	CPL P1.2		;RD-LED
	LCALL RD2401_1W
	CJNE R5,#00H,DISPERR
	pop 00h
	movx @dptr,a
	inc dpl
	inc r0
	cjne r0,#7fh,conr1
	SETB P1.2
condisp:lcall disp
	sjmp condisp
DISPERR:
	LCALL DISP1
	SJMP DISPERR
DISP1:	mov 7eh,#01h
	mov 7dh,#0ch
	mov 7ch,#10h
	mov 7bh,#0Eh
	mov 7ah,#14h
	mov 79h,#14h
	AJMP DISP2	

DL10MS:	MOV R7,#0AH
DL0:	MOV R6,#0FFH
	DJNZ R6,$
	DJNZ R7,DL0
	RET
DISP:	mov 7eh,#01h
	mov 7dh,#0ch
	mov 7ch,#09h
	mov 7bh,#00h
	mov 7ah,#00h
	mov 79h,#0dh
DISP2:	MOV R0,#7EH
	MOV R2,#20H
	MOV R3,#00H
	MOV DPTR,#TAB
LS2:	MOV A,@R0
	MOVC A,@A+DPTR
	MOV R1,#22H
	MOVX @R1,A
	MOV A,R2
	DEC R1
	MOVX @R1,A
	DEC R0
	DJNZ R3,$
	CLR C 
	RRC A
	MOV R2,A
	JNZ LS2
	INC R1
	MOV A,#0FFH
	MOVX @R1,A
	RET
TAB: 	DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H 
    	DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H,8FH 
;****************************************************************************
WR2401_1W:	;R0 IS ADDR,R1 IS DATA
	LCALL C_A2401			;WR  FIX ADDRESS AND PROGRAM ADDRESS TO IC
	CJNE R5,#00H,WR2401_ERROR
	MOV A,R1			;WR DATA TO IC
	MOV R5,#08H
WR2401_BIT:
	CLR SCL
	RLC A
	JNC CLR_SDA
	SETB SDA
	SJMP WR_NEXT_BIT
CLR_SDA:
	CLR SDA
WR_NEXT_BIT:
	LCALL DY
	SETB SCL
	LCALL DY
	DJNZ R5,WR2401_BIT
	CLR SCL
	LCALL DY
	SETB SCL
	LCALL DY
	JB SDA,WR2401_ERROR
	LCALL STOP2401		;WR  TIME
	LCALL DY
	LCALL DY
	MOV R5,#00H
	RET
WR2401_ERROR:
	MOV R5,#5AH
	RET
;--------------------------------------------------
DY:	MOV R7,#35H		
	DJNZ R7,$
	RET
START2401:
	SETB SDA
	LCALL DY
	SETB SCL
	LCALL DY
	CLR SDA
	LCALL DY
	CLR SCL
	LCALL DY
	RET
STOP2401:
	CLR SCL		;
	LCALL DY
	CLR SDA
	LCALL DY
	SETB SCL
	LCALL DY
	SETB SDA
	LCALL DY
	RET
;---------------------------------------------------------
C_A2401:			;R0 ADDR
	LCALL STOP2401
	LCALL DY
	LCALL START2401
	MOV A,#0A0H	;WR2401
	MOV R5,#08H
CONT2401:
	CLR SCL
	RLC A
	JNC CA_CLR_SDA
        SETB SDA
	SJMP CA_CONT_NEXT
CA_CLR_SDA:
	CLR SDA
CA_CONT_NEXT:
	LCALL DY
	SETB SCL
	LCALL DY	
	DJNZ R5,CONT2401
	CLR SCL
	LCALL DY
	SETB SCL
	LCALL DY
	JB SDA,C_A_ERROR
	MOV R5,#08H
	MOV A,R0	;R0 INPUT ADDR
ADDR2401:
	CLR SCL
	RLC A
	JNC AD_CLR_SDA
	SETB SDA
	SJMP AD_CONT_NEXT
AD_CLR_SDA:
	CLR SDA
AD_CONT_NEXT:
	LCALL DY
	SETB SCL
	LCALL DY
	DJNZ R5,ADDR2401
	CLR SCL
	LCALL DY
	SETB SCL
	LCALL DY
	JB SDA,C_A_ERROR
	LCALL DY
	CLR SCL
	LCALL DY
	MOV R5,#00H
	RET
C_A_ERROR:
	MOV R5,#5AH
	RET
;-----------------------------------------------------------------------------------------
RD2401_1W:	;SUEI JI RD ,R0 INPUT ADDR,OUTPUT WORD,IN ACC
	LCALL C_A2401		;KONG WR,SET FIRST ADDRESS
	CJNE R5,#00H,RD2401_ERROR
	LCALL START2401		;START
	MOV R5,#08H		;DEVICE ADDERS 
	MOV A,#0A1H
RD_CONT2401:
	CLR SCL
	RLC A
	JNC RD24_CLR_SDA
	SETB SDA
	SJMP RD_CONT2401_NEXT
RD24_CLR_SDA:
	CLR SDA
RD_CONT2401_NEXT:
	LCALL DY
	SETB SCL
	LCALL DY
	DJNZ R5,RD_CONT2401
	CLR SCL
	LCALL DY
	SETB SCL
	JNB SDA,RD_CONT_OK	;ACK
	LCALL STOP2401
	SJMP RD2401_ERROR
RD_CONT_OK:			;READ DATA
	CLR SCL
	MOV R5,#08H
	CLR A
RD24_BIT:
	SETB SCL
	LCALL DY
	JNB SDA,RD24_0_DATA
	SETB C
	SJMP RD24_NEXT_BIT
RD24_0_DATA:
	CLR C
RD24_NEXT_BIT:
	CLR SCL
	LCALL DY
	RLC A
	DJNZ R5,RD24_BIT
	SETB SCL
	LCALL DY
	CLR SCL
	LCALL DY
	LCALL STOP2401
	MOV R5,#00H
	RET
RD2401_ERROR:		;OUTPUT IS IN ACC
	MOV R5,#5AH
	RET
	END

⌨️ 快捷键说明

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