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

📄 i2c.asm

📁 8051, receive from serial port write to AT24C64
💻 ASM
字号:

		CPU 	"8051.TBL"
        	INCL 	"8051.INC"
ADDH:	EQU	30H
ADDL:	EQU	31H
DATA:	EQU	32H

		ORG	0H
		JMP	MAIN
		ORG	0023H
		JMP	RECV_CMD
		ORG	0030H
MAIN:	
		MOV  	SP,#60H
		LCALL	INIT_RS232
		SETB	EA
		SETB	ES
		CLR	20H.1
		MOV	R1,#00H
		MOV	DPTR,#0000H
AG:
		MOV	ADDH,DPH
		MOV	ADDL,DPL
		
		JNB	20H.1,$
		CLR	20H.1
		CALL	READ
		MOV	SBUF,DATA
		JNB	TI,$
		CLR	TI
		INC	DPTR
		JMP	AG
;-----------------------------------------------------------------------------------------------
;INIT SERIAL PORT
;-----------------------------------------------------------------------------------------------
INIT_RS232:
	MOV 	SCON, #50h   		 		
	MOV 	TMOD, #21h   		 		
	MOV     PCON, #80h    				
	MOV 	TH1,#255    				
        MOV 	TL1,#255 
	SETB	TR1
	RET
;----------------------------------------------------------------------------------------------
;RECEIVE FROM RS232
;----------------------------------------------------------------------------------------------
RECV_CMD:
	JBC	RI,WR
	RETI
WR:
	SETB	20H.1
	MOV	R1,SBUF
	CALL	WRITE
	RETI

WRITE:
	MOV A,#10100000B
	CALL OUTS

	MOV A,ADDH
	LCALL OUT

	MOV A,ADDL
	LCALL OUT

	MOV A,R1
	CALL OUT

	CALL STOP

	RET
;-------------------------------------------------------------------------
READ:
	MOV A,#10100000B	
	CALL OUTS

	MOV A,ADDH
	LCALL OUT

	MOV A,ADDL
	LCALL OUT

	MOV A,#10100001B
	LCALL OUTS

	LCALL IN
	MOV DATA,A

	LCALL STOP

	RET
;=========================================================
OUTS:
	MOV B,#8
	SETB P1.1
	SETB P1.0
	NOP
	CLR P1.1
	NOP
	CLR P1.0

OSLOOP:
	RLC A
	MOV P1.1,C
	SETB P1.0
	NOP
	CLR P1.0
	DJNZ B,OSLOOP
	SETB P1.1
	NOP
	SETB P1.0
	NOP
	CLR P1.0
	RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
OUT:
	MOV B,#8
OLOOP:
	RLC A
	MOV P1.1,C
	SETB P1.0
	NOP
	CLR P1.0
	DJNZ B,OLOOP
	SETB P1.1
	NOP
	SETB P1.0
	NOP
	CLR P1.0
	RET
;-----------------------------------------------------------
IN:
	MOV B,#8
	SETB P1.1
INLOOP:
	CLR P1.0
	NOP
	SETB P1.0
	MOV C,P1.1
	RLC A
	DJNZ B,INLOOP
	CLR P1.0
	RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
STOP:
	CLR P1.1
	NOP
	SETB P1.0
	NOP
	SETB P1.1
	LCALL DLAYms
	RET
;--------------------------------------------------------
DLAYms:
	MOV R6,#3
	MOV B,#00
MS1:	DJNZ B,$	;((2*255)+(2*255)*150
	DJNZ B,$	;=153 MILLI SECONDS
	DJNZ R6,MS1
	RET

⌨️ 快捷键说明

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