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

📄 stc2.asm

📁 STC89LE51读写24C02和RTL8309的PHY
💻 ASM
📖 第 1 页 / 共 3 页
字号:
***********************************************************************/
DISPLAY:
		;PUSH    ACC
		;PUSH    PSW
		;SETB    PSW.4		  ;第2组
	        ;CLR     PSW.3
		;JNB	RWFLAG,NOCHANG
		;SETB	RWDISF
;NOCHANG:
		MOV	R0,#DISP0
		MOV	R1,#02H
		MOV	R2,#03H
		MOV	R3,#01H	;74LS273
DLOOP:
		MOV	P1,R3
		MOV	DPTR,#SEGTAB
		MOV	A,@R0
		MOVC	A,@A+DPTR
		JNB	RWDISF,NOSET
		ANL	A,#7FH
		CLR	RWDISF
NOSET:
		MOV	P0,A
		MOV	A,R3
		RL	A
		MOV	R3,A
		INC	R0
		DJNZ	R2,DLOOP
DLOOP1:
		MOV	P1,R3
		MOV	A,@R0
		MOV	P0,A
		MOV	A,R3
		RL	A
		MOV	R3,A
		INC	R0
		DJNZ	R1,DLOOP1
		;POP	PSW
		;POP	ACC
		RET

/********************************************************************** 

 函 数 名:DELAY
 功    能:延时程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.29
 修    改:                       日    期: 
***********************************************************************/
DELAY:
                CLR     A
                MOV     R7,A
DBILOOP:
                CLR     A
                MOV     R6,A
DLILOOP:
                INC     R6
                CJNE    R6,#0FFH,DLILOOP
                INC     R7
                CJNE    R7,#0CH,DBILOOP
                RET     
             
/********************************************************************** 

 函 数 名:KEYPAD_SCAN
 功    能:键盘扫描程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:KEYHV
 设    计                         日    期:2006.12.29
 修    改:                       日    期: 
***********************************************************************/             
KEYPAD_SCAN:
                MOV     P2,#0F0H
KWIT:
                MOV     A,P2
                CJNE    A,#0F0H,KWIT
KLOOP:
                CLR     A
                MOV     R5,A
KSCN:
                MOV     A,R5
		MOV	DPTR,#KEYSCN
                MOVC    A,@A+DPTR
                MOV     P2,A
		
	        XRL     A,P2
                JZ      KINC		;相同转
		;ACALL   DELAY
		;MOV	R4,P2

		;MOV     A,R5
		;MOV	DPTR,#KEYSCN
                ;MOVC    A,@A+DPTR
		;XRL     A,P2
                ;JZ      KINC		;相同转
		MOV	R4,P2
		ACALL   DELAY
		MOV     A,R5
		MOV	DPTR,#KEYSCN
                MOVC    A,@A+DPTR
		XRL     A,P2
		JNZ     KINC		
		MOV	KEYHV,R4
                RET     
KINC:
                INC     R5
                CJNE    R5,#04H,KSCN
		;MOV	WDT_CONTR,#35H	;1.1377S
                SJMP    KLOOP



/********************************************************************** 

 函 数 名:GOTKEY
 功    能:键值获取程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:R6=KEY
 设    计                         日    期:2007.1.10
 修    改:                       日    期: 
***********************************************************************/            
GOTKEY:
                LCALL   KEYPAD_SCAN
                CLR     A
                MOV     R6,A
NEXTKEY:
                MOV     A,R6
                MOV	DPTR,#KEYTAB
                MOVC    A,@A+DPTR
                CJNE    A,KEYHV,NOKEY
		MOV	A,R6
		CJNE    A,#10H,KNEXT1
		SJMP	TKEY1
KNEXT1:
		CJNE    A,#11H,KNEXT2
		SJMP	TKEY1
KNEXT2:
		CJNE    A,#14H,KNEXT3
		SJMP	TKEY1
KNEXT3:	
		CJNE    A,#15H,TKEY
		SJMP	TKEY1		
TKEY:
		SETB    C
		SUBB    A,#05H
		JNC     HKEY
TKEY1:	
		JB	SECFLG,NOKEY
HKEY:
                RET 
NOKEY:
                INC     R6
                CJNE    R6,#01AH,NEXTKEY

                RET     

		
/********************************************************************** 

 函 数 名:START
 功    能:I2C通讯程序
 说    明:启动信号
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.30
 修    改:                       日    期: 
***********************************************************************/
START:
		SETB	SDA
		SETB	SCL
		ACALL	D5U
		CLR	SDA
		ACALL	D5U
		CLR	SCL
		RET			

/********************************************************************** 

 函 数 名:STOP
 功    能:I2C通讯程序
 说    明:停止信号
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.30
 修    改:                       日    期: 
***********************************************************************/
STOP:
		CLR	SDA
		SETB	SCL
		ACALL	D5U
		SETB	SDA
		ACALL	D5U
		CLR	SCL
		CLR	SDA
		RET

/********************************************************************** 

 函 数 名:SEND
 功    能:I2C通讯程序
 说    明:发送一个字节
 调    用: 无
 寄 存 器: 
 入口参数:要发送的数放在R7中
 返 回 值:
 设    计                         日    期:2006.12.30
 修    改:                       日    期: 
***********************************************************************/
SEND:
		MOV	R6,#08H
		MOV	A,R7
SENDLOP1:	
		RLC	A		;左环移,将A的最高位移入CY
		MOV	SDA,C		;将CY的值通过SDA发送出去
		SETB	SCL		;在SCL上产生一个时钟
		ACALL	D5U
		CLR	SCL
		NOP			;
		NOP			;
		NOP			;
		DJNZ	R6,SENDLOP1	;重复8次,发送一个字节

CACK:					;检查应答信号子程序		
		SETB	SDA		;主机首先拉高SDA
		SETB	SCL		;发出一个时钟
		ACALL	D5U
SENDLOP2:	
		MOV	C,SDA		;读入SDA的状态,如果是0表示接受到了应答
		JC	SENDLOP2	;
		CLR	SCL		;接受到应答,结束时钟
		RET


/********************************************************************** 

 函 数 名:READ
 功    能:I2C通讯程序
 说    明:读取一个字节
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:读进来的数放在A中
 设    计                         日    期:2006.12.30
 修    改:                       日    期: 
***********************************************************************/
READ:
		MOV	R6,#08H
READLOP1:
		SETB	SDA		;置SDA为输入方式
		SETB	SCL		;发出一个时钟
		ACALL	D5U
		MOV	C,SDA		;读入SDA状态
		RLC	A		;将该位状态移入A
		CLR	SCL		;结束时钟
		DJNZ	R6,READLOP1	;重复8次,读入一个字节
		RET
SACK:					;发送应答子程序
		
		
		CLR	SDA		;拉低SDA线
		SETB	SCL		;发出时钟信号
		ACALL	D5U
		CLR	SCL
		RET

/********************************************************************** 

 函 数 名:D5U
 功    能:5U秒延时程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.30
 修    改:                       日    期: 
***********************************************************************/
D5U:
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		RET

/********************************************************************** 

 函 数 名:D1S
 功    能:1秒延时程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.30
 修    改:                       日    期: 
***********************************************************************/
D1S:
		PUSH    PSW
		SETB    PSW.3		  ;第2组
	        CLR     PSW.4
		
		MOV	R4,#50H
DEL2:
		MOV	R3,#0FFH	;80*255*0.543=20400*0.543
DEL3:
		DJNZ	R3,DEL3
		DJNZ	R4,DEL2
		POP	PSW
		RET

/********************************************************************** 

 函 数 名:RDRD24C02
 功    能:
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:R7
 设    计                         日    期:2006.12.31
 修    改:                       日    期: 
***********************************************************************/
RDRD24C02:
		LCALL	START
		MOV	R7,#0A0H
		LCALL	SEND
		MOV	R7,ADD24C02
		LCALL	SEND
		LCALL	START
		MOV	R7,#0A1H
		LCALL	SEND
		LCALL	READ
		LCALL	STOP
		RET

/********************************************************************** 

 函 数 名:SQRD24C02
 功    能:
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:R7
 设    计                         日    期:2007.1.10
 修    改:                       日    期: 
***********************************************************************/
SQRD24C02:
		LCALL	START
		MOV	R7,#0A0H
		LCALL	SEND
		MOV	R7,#00H
		LCALL	SEND
		LCALL	START
		MOV	R7,#0A1H
		LCALL	SEND
		MOV	R0,#00H
COSQ:
		LCALL	READ
		MOVX	@R0,A
		INC	R0
		CJNE	R0,#00H,NSQOV
		LCALL	STOP
		RET
NSQOV:
		LCALL	SACK
		SJMP	COSQ	


/********************************************************************** 

 函 数 名:WRITE24C02
 功    能:
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2007.1.4
 修    改:                       日    期: 
***********************************************************************/
WRITE24C02:
		LCALL	START
		MOV	R7,#0A0H
		LCALL	SEND
		MOV	R7,ADD24C02
		LCALL	SEND
		MOV	R7,I2CDATA
		LCALL	SEND
		LCALL	STOP
		RET

/********************************************************************** 

 函 数 名:WPAGE24C02
 功    能:IDATA00-FF写入24c02
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2007.1.8
 修    改:                       日    期: 
***********************************************************************/
WPAGE24C02:
		MOV	R0,#00H
		MOV	ADD24C02,#00H		
		MOV	R5,#20H
NEXTPAGE:		
		LCALL	START
		MOV	R7,#0A0H
		LCALL	SEND
		MOV	R7,ADD24C02
		LCALL	SEND
		MOV	R2,#08H
CONWR:
		MOVX	A,@R0
		MOV	R7,A
		LCALL	SEND
		INC	R0
		DJNZ	R2,CONWR
		LCALL	STOP
		MOV	A,ADD24C02
		ADD	A,#08H
		MOV	ADD24C02,A
		LCALL	D1S
		DJNZ	R5,NEXTPAGE
		RET		

		
/********************************************************************** 

 函 数 名:ASSM
 功    能:
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:A
 设    计                         日    期:2006.1.4
 修    改:                       日    期: 
***********************************************************************/
ASSM:
		MOV	R1,#DISP1
ASSM1:
		MOV	A,@R1
		SWAP	A
		INC	R1
		ORL	A,@R1
		RET

⌨️ 快捷键说明

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