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

📄 stc2.asm

📁 STC89LE51读写24C02和RTL8309的PHY
💻 ASM
📖 第 1 页 / 共 3 页
字号:
PUBLIC	TIME0_INITIALIZE
PUBLIC	TIME0_ISR
PUBLIC	DISPLAY	
PUBLIC	DELAY
PUBLIC	KEYPAD_SCAN
PUBLIC	GOTKEY
PUBLIC	START
PUBLIC	STOP
PUBLIC	SEND
PUBLIC	READ
PUBLIC	D5U
PUBLIC	D1S
PUBLIC	RDRD24C02
PUBLIC	WRITE24C02
PUBLIC	WPAGE24C02
PUBLIC	ASSM
PUBLIC	SECTOR_ERASE
PUBLIC	BYTE_PROGRAM
PUBLIC	BYTE_READ
PUBLIC	SAVEEEP
PUBLIC	COPYEEP
PUBLIC	SMICYC
PUBLIC	PHYRD
PUBLIC	PHYWR
PUBLIC	INIPREAME	
		


WDT_CONTR	DATA	0E1H
AUXR		DATA	08EH

ISP_DATA      	DATA    0E2H	;汇编程序定义 or EQU 
ISP_ADDRH     	DATA    0E3H	;汇编程序定义 
ISP_ADDRL     	DATA    0E4H	;汇编程序定义 
ISP_CMD	      	DATA    0E5H	;汇编程序定义 
ISP_TRIG      	DATA    0E6H	;汇编程序定义 
ISP_CONTR     	DATA    0E7H	;汇编程序定义 

ISP_IAP_BYTE_READ	EQU	1       ;字节读应用程序区和数据存储区   
ISP_IAP_BYTE_PROGRAM	EQU	2       ;字节编程应用程序区和数据存储区 
ISP_IAP_SECTOR_ERASE	EQU     3	;扇区擦除应用程序区和数据存储区 

WAIT_TIME        	EQU	2	;等待时间	

EEPROM_24C02L_Addr1    	EQU    010H
EEPROM_24C02L_Addr2    	EQU    00H
EEPROM_24C02H_Addr1  	EQU    012H
EEPROM_24C02H_Addr2  	EQU    00H

CS0	BIT	P1.0
CS1	BIT	P1.1
CS2	BIT	P1.2
CS3	BIT	P1.3
CS4	BIT	P1.4
P15	BIT	P1.5
P16	BIT	P1.6
P17	BIT	P1.7
OUT0	BIT	P2.0
OUT1	BIT	P2.1
OUT2	BIT	P2.2
OUT3	BIT	P2.3
IN0	BIT	P2.4
IN1	BIT	P2.5
IN2	BIT	P2.6
IN3	BIT	P2.7

SDA	BIT	P3.2	;定义24C02的串行数据线
SCL	BIT	P3.3	;定义24C02的串行时钟线

PT36	BIT	P3.6
PT37	BIT	P3.7

;定义可位寻址寄存器

FLAG	DATA	20H
FLAG1	DATA	21H

DIG1	BIT	FLAG.7
DIG2	BIT	FLAG.6
PFLG	BIT	FLAG.5
MFLG	BIT	FLAG.4
NONFLG	BIT	FLAG.3

READC02	BIT	FLAG1.7
WRITE	BIT	FLAG1.6
RWFLAG	BIT	FLAG1.5
RWDISF	BIT	FLAG1.4
SECFLG	BIT	FLAG1.3

REGAD		DATA	23H
PHYAD		DATA	24H
PREAME3		DATA	25H
PREAME2		DATA	26H
PREAME1		DATA	27H
PREAME0		DATA	28H
PHYDL		DATA	29H
PHYDH		DATA	2AH

DISP0		DATA	30H
DISP1		DATA	31H
DISP2		DATA	32H
DISP3		DATA	33H
DISP4		DATA	34H
DISP5		DATA	35H
DISP6		DATA	36H

KEYPTR		DATA	39H
KEYHV		DATA	3AH
ADD24C02	DATA	3BH
I2CDATA		DATA	3CH
EEP_ADR_H       DATA    3DH
EEP_ADR_L       DATA    3EH


		ORG	0000H 
		AJMP	MAIN
		ORG   	000BH 
           	AJMP   	TIME0_ISR            ;定时器0中断
           	

		ORG	0100H
MAIN:
		MOV	AUXR,#01H
		MOV	SP,#50H
		MOV	P1,#0FFH
		MOV	P2,#0FFH
		;MOV	WDT_CONTR,#35H
		ACALL	TIME0_INITIALIZE
		
		CLR	SCL
		MOV	R0,#0FFH
		CLR	A
PDATALOOP:      MOVX    @R0,A
                DJNZ    R0,PDATALOOP
		MOVX    @R0,A
		LCALL	INIPREAME		
		CLR	RWFLAG
		CLR	SECFLG
INIMAIN:
		MOV	R1,#03H
		MOV	R2,#02H
		MOV	R0,#DISP0
		MOV	A,#010H
CLDIS:
		MOV	@R0,A
		INC	R0
		DJNZ	R1,CLDIS
		MOV	A,#0FFH
CLDIS1:
		MOV	@R0,A
		INC	R0
		DJNZ	R2,CLDIS1
		MOV 	KEYPTR,#DISP1	;指针显示器1位
		MOV	FLAG,#00H
		MOV	ADD24C02,#00H
		MOV	I2CDATA,#00H
		
MAINLOOP:
		;ACALL	DISPLAY
		ACALL	GOTKEY
		MOV	A,R6
		CLR     C
		SUBB    A,#10H
		JNC     PROCE	
		MOV	R0,KEYPTR	;数字键
		MOV	A,R6
		MOV	@R0,A		;送显

		CJNE	R0,#DISP1,TDIG2
		SETB	DIG1
		AJMP	TDIG
PROCE:
		AJMP	FUNCT
TDIG2:
		CJNE	R0,#DISP2,TDIG3
		SETB	DIG2
		JNB	PFLG,TDIG
		LCALL	BHD		;端口读处理
		;LCALL	ASSM
		CLR	C
		RLC	A
		CLR	C
		RLC	A
		MOV	REGAD,A
		MOV	A,DISP0
		SETB	ACC.7
		SETB	ACC.6
		CLR	C
		RRC	A
		MOV	PHYAD,A
		MOV	REGAD.7,C
		LCALL	SMICYC
		ACALL	D5U
		ACALL	D5U
		LCALL	PHYRD
		MOV	DISP4,PHYDH
		MOV	DISP3,PHYDL
		LCALL	QFDIS		
		SJMP	TDIG
TDIG3:
		JNB	MFLG,ALTER1
		LCALL	ASSM		;存贮器处理
		MOV	R1,A
		CJNE	R0,#DISP3,TDIG4
		MOV	A,DISP3
		MOV	DISP3,#0FFH
		SWAP	A
		MOV	DISP5,A		
		MOV	A,DISP4
		CPL	A
		ANL	A,#0FH
		ORL	A,DISP5		;改变高字节内容
		
FOUR:		
		MOVX	@R1,A
		CPL	A
		MOV	DISP4,A
		SJMP	TDIG
TDIG4:
		MOV	A,DISP5
		ORL	A,DISP4		;改变低字节内容
		SJMP	FOUR
NOUSE:		AJMP	INIMAIN
ALTER1:
		JNB	PFLG,NOUSE
		
		CJNE	R0,#DISP3,PDIG4	;端口写处理
		MOV	R1,#PHYDH
		XCH	A,@R1
		SWAP	A
		XCHD	A,@R1
		SWAP	A
		XCH	A,@R1
		SJMP	CHANG
PDIG4:		CJNE	R0,#DISP4,PDIG5
		MOV	R1,#PHYDH
		XCHD	A,@R1
		SJMP	CHANG
PDIG5:		CJNE	R0,#DISP5,PDIG6
		MOV	R1,#PHYDL
		XCH	A,@R1
		SWAP	A
		XCHD	A,@R1
		SWAP	A
		XCH	A,@R1
		SJMP	CHANG
TDIG:
		MOV	R0,KEYPTR
		JNB	PFLG,CONMEM
		CJNE	R0,#DISP6,CONTD
		DEC	KEYPTR
		DEC	KEYPTR
		DEC	KEYPTR
		SJMP	TDEND
CONMEM:		CJNE	R0,#DISP4,CONTD
		DEC	KEYPTR
		SJMP	TDEND


PDIG6:		CJNE	R0,#DISP6,TDIG
		MOV	R1,#PHYDL
		XCHD	A,@R1
CHANG:
		MOV	DISP4,PHYDH
		MOV	DISP3,PHYDL
		LCALL	QFDIS
		MOV	DISP6,PHYDH
		MOV	DISP5,PHYDL
		LCALL	BHD
		;LCALL	ASSM		
		SETB	C
		RLC	A
		CLR	C
		RLC	A
		MOV	REGAD,A
		MOV	A,DISP0
		SETB	ACC.7
		SETB	ACC.5
		CLR	C
		RRC	A
		MOV	PHYAD,A
		MOV	REGAD.7,C
		LCALL	SMICYC
		ACALL	D5U
		ACALL	D5U
		LCALL	PHYWR
		
		;MOV	REGAD,#40H
		;MOV	PHYAD,#60H
		;LCALL	SMICYC
		;ACALL	D5U
		;ACALL	D5U
		;LCALL	PHYRD
		;SETB	PHYDH.4
		;MOV	REGAD,#42H
		;MOV	PHYAD,#50H
		;LCALL	SMICYC
		;ACALL	D5U
		;ACALL	D5U
		;LCALL	PHYWR
		MOV	PHYDH,DISP6
		MOV	PHYDL,DISP5
		SJMP	TDIG

CONTD:
		INC	KEYPTR
TDEND:
		AJMP	MAINLOOP
FUNCT:					;功能键
		
		CJNE	R6,#10H,FUN11	;READ
		LCALL	SQRD24C02
		MOV	DISP0,#0AH
MAINEND1:
		LJMP	MAINLOOP
FUN11:
		CJNE	R6,#11H,FUN12
		JNB	DIG2,MAINEND1	;MEM
		JB	MFLG,MAINEND1
		SETB	MFLG
		MOV	DISP0,#0EH
		LCALL	ASSM
		MOV	R0,A
		MOVX	A,@R0
		CPL	A
		MOV	DISP4,A
		SJMP	MAINEND2
FUN12:
		CJNE	R6,#12H,FUN13
		AJMP	INIMAIN		;RET
FUN13:
		CJNE	R6,#13H,FUN14	
		CPL	SECFLG		;CON
		CPL	RWFLAG
MAINEND2:
		SJMP	MAINEND
FUN14:
		CJNE	R6,#14H,FUN15
		JNB	MFLG,MAINEND2	;V
		MOV	R0,KEYPTR
		CJNE	R0,#DISP4,CHPTR
		DEC	KEYPTR
CHPTR:
		LCALL	ASSM
		DEC	A
		MOV	R0,A
		MOV	R1,#DISP2	;改变地址显示
		XCHD	A,@R1
		SWAP	A
		DEC	R1
		XCHD	A,@R1
		MOVX	A,@R0
		CPL	A
		MOV	DISP4,A
		SJMP	MAINEND
FUN15:
		CJNE	R6,#15H,FUN16
		JNB	MFLG,MAINEND2	;^
		MOV	R0,KEYPTR
		CJNE	R0,#DISP4,CHPTR1
		DEC	KEYPTR
CHPTR1:
		LCALL	ASSM
		INC	A
		MOV	R0,A
		MOV	R1,#DISP2
		XCHD	A,@R1
		SWAP	A
		DEC	R1
		XCHD	A,@R1
		MOVX	A,@R0
		CPL	A
		MOV	DISP4,A
		SJMP	MAINEND
FUN16:
		CJNE	R6,#16H,FUN17
		
		JNB	DIG1,MAINEND	;PORT
		JB	PFLG,MAINEND
		SETB	PFLG
		MOV	DISP0,DISP1
		MOV	DISP1,#10H
		DEC	KEYPTR
		AJMP	MAINEND
		
FUN17:
		CJNE	R6,#17H,FUN18
		LCALL	WPAGE24C02	;WRITE
		MOV	DISP0,#0BH
		AJMP	MAINEND
FUN18:
		CJNE	R6,#18H,FUN19	
		LCALL	SAVEEEP		;SAVE
		MOV	DISP0,#0DH
		AJMP	MAINEND
FUN19:
		CJNE	R6,#19H,MAINEND
		LCALL	COPYEEP		;COPY
		MOV	DISP0,#0CH
		AJMP	MAINEND
		
MAINEND:	
		AJMP	MAINLOOP


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

 函 数 名:TIME0_INITIALIZE
 功    能:定时器0初始化程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.29
 修    改:                       日    期: 
***********************************************************************/
TIME0_INITIALIZE:
           	CLR    EA
           	CLR    TR0
           	CLR    ET0
           	ANL    TMOD,#0F0H
           	ORL    TMOD,#01H	;put timer 0 into MODE 1 16位计数器方式
	   	MOV    TH0,#070H        ;初始化20ms
	   	MOV    TL0,#04H
           	SETB   TR0
           	SETB   ET0
           	CLR    PT0
           	SETB   EA
           	RET 

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

 函 数 名:TIME0_ISR
 功    能:定时器0中断程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.29
 修    改:                       日    期: 
***********************************************************************/    
TIME0_ISR:
		PUSH    ACC
		PUSH    PSW
		SETB    PSW.4		;第2组
	        CLR     PSW.3
		MOV     TH0,#070H         
	   	MOV     TL0,#04H
		JNB	RWFLAG,NOCHANG
		SETB	RWDISF
NOCHANG:
		ACALL	DISPLAY
		POP	PSW
		POP	ACC
		RETI

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

 函 数 名:DISPLAY
 功    能:显示子程序
 说    明:
 调    用: 无
 寄 存 器: 
 入口参数:
 返 回 值:
 设    计                         日    期:2006.12.29
 修    改:                       日    期: 

⌨️ 快捷键说明

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