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

📄 new51pro.h51

📁 1
💻 H51
字号:
MY_ADR	EQU	0B9H

;W78E58 NEW DEFINE ==================================
P4	DATA	0D8H
XICON	DATA	0C0H
AUXR	DATA	08EH

;====== 工作寄存器区常数 ==============================
AREA0	EQU	00H	;Work Register Area 0
AREA1	EQU	08H	;Work Register Area 1
AREA2	EQU	10H	;Work Register Area 2
AREA3	EQU	18H	;Work Register Area 3

;====== MCU TYPE BYTE CONST ==========================
A_x051	EQU	00H
A_C5xx	EQU	01H
W_E5xx	EQU	02H

;====== COMMAND CONST ===================
U_CODE	EQU	00H	;RESET
C_CODE	EQU	01H	;CALL
R_CODE	EQU	02H	;READ
W_CODE	EQU	03H	;WRITE
E_CODE	EQU	04H	;ERASE
L_CODE	EQU	05H	;LOCK
S_CODE	EQU	06H	;SET
T_CODE	EQU	07H	;TEST

N_CODE	EQU	15H

;====== 串行口收发变量(在二区)==============
RX_PIN	DATA	10H	;(R0)接收指针(全局)
TX_PIN	DATA	11H	;(R1)发送指针(全局)
RX_CNT	DATA	12H	;(R2)接收计数(全局)
TX_CNT	DATA	13H	;(R3)发送计数(全局)

;====== 设备工作状态标志 ===================
STATE	DATA	20H
;--------------------
IN_RXD	BIT	00H
OK_RXD	BIT	01H
IN_TXD	BIT	02H
OK_TXD	BIT	03H
IN_RED	BIT	04H
IN_PRG	BIT	05H
IN_ERS	BIT	06H
TX_WAT	BIT	07H
;---------------------------------
STATE1	DATA	21H
DEL_X	DATA	22H	;延时种子数
DEL_Y	DATA	23H	;延时毫秒数
DEL_Z	DATA	24H	;延时秒数

;==============================================
TYPE	DATA	25H	;0=x051; 1=C5x; 2=W7xE5x
VPP	DATA	26H	;05,12,....
VEP	DATA	27H

SADD_L	DATA	28H
SADD_H	DATA	29H
EADD_L	DATA	2AH
EADD_H	DATA	2BH
CADD_L	DATA	2CH
CADD_H	DATA	2DH

;TXD In-RAM DEFINE ======================
TXD_HAD	EQU	30H
TXD_BUF	EQU	34H

TX_SUMB	DATA	2FH	;
TX_CODE	DATA	30H	;
TX_LENG	DATA	31H	;
TX_PAR1	DATA	32H	;
TX_PAR2	DATA	33H	;
TX_D0	DATA	34H	;
TX_D1	DATA	35H	;
;.....			;
TX_D15	DATA	43H	;

;RXD In-RAM DEFINE ======================
RXD_HAD	EQU	7CH	
RXD_BUF	EQU	80H	;

RX_BUFF	DATA	7AH
RX_SUMB	DATA	7BH

RX_CODE	DATA	7CH	;
RX_LENG	DATA	7DH	;
RX_PAR1	DATA	7EH	;
RX_PAR2	DATA	7FH	;
RX_D00	DATA	080H	;
RX_D01	DATA	081H	;
;.....			;
RX_D7F	DATA	0FFH	;



;PUBLIC CTRL PINS ===================================
IO_SW0	BIT	P4.0	;Pins:	H/L = 20PIN/40PIN
IO_W_A	BIT	P4.1	;TYPE:	H/L = ATMEL/WINBOND
IO_SW1	BIT	P4.2	;SW1:	H  H  L   L
IO_SW2	BIT	P4.3	;SW2:	H  L  H   L
			;Vpp:	0V 5V 12V 14V
;====================================================
;AT89Cx051 PROGRAMMING IO_PIN DEFINE
;P0	=DATA	;must transpose!
;IO_SW0	=H	;Use 20 Pins

;Ctrl Pin		;Read  Writ  Eras  Sign Lock
;IO_SW1		;H	;H     L     L	   H     L
;IO_SW2		;H	;L     H     H     L     H
;RST(Vpp)	;0V	;5V    12V   12V   5V    12V
IO_bsy	BIT	P1.2	;RDY/BSY                  
IO_xt1	BIT	P1.4	;Pulse width >= 0.2uS
IO_prg	BIT	P1.5	;H     NP    NP    H     NP
IO_p33	BIT	P1.6	;L     L     H     L     H/H   
IO_p34	BIT	P1.7	;L     H     L     L     H/H   
IO_p35	BIT	P3.6	;H     H     L     L     H/L   
IO_p37	BIT	P3.7	;H     H     L     L     H/L   
;P: Min=1uS,Max=110uS

;========================================================
;AT89C5x PROGRAMMING IO_PIN DEFINE:
;P0	=D7~D0	;Data Prot
;P3.3~2	=A15~A14;
;P2.5~0	=A13~A8	;Asserss Prot
;P1	=A7~A0	;

;IO_SW0	=L	;Use 40Pins
;IO_W_A	=L	;IS ATMEL

AT_A14	BIT	P3.2	;
AT_A15	BIT	P3.3	;

;Ctrl_Pin	;Pin	;Read  Writ  Eras  Sign  LCK1/2/3  
;IO_SW1		;H	;H     L     L	   H     L
;IO_SW2		;H	;L     H     H     L     H
;VPP		;0V	;5V    12V   12V   5V    12V
AT_BSY	BIT	P3.4	;RDY/BSY
AT_PRG	BIT	P3.5	;H     NP    NP    H     NP
AT_P26	BIT	P2.6	;L     L     H     L     H/H/H
AT_P27	BIT	P2.7	;L     H     L     L     H/H/L
AT_P36	BIT	P3.6	;H     H     L     L     H/L/H
AT_P37	BIT	P3.7	;H     H     L     L     H/L/L
;P: Min=1uS,Max=110uS

;=======================================================
;W77/78E58 PROGRAMMING IO_PIN DEFINE:
;P0	=D7~D0	;Data Prot
;P2-P1	=A15~A0	;Asserss Prot

;IO_SW0	=L	;Use 40Pins
;IO_W_A	=H	;IS WINBON

;Ctrl_Pins	;Pin	;Read  Writ  P/V   Eras
;IO_SW1		;H	;H     L     L     L	
;IO_SW2		;H	;L     H     H     L
;VPP		;0V	;5V    12V   12V   14V
WB_P30	BIT	P3.2	;L     L     L     H
WB_P31	BIT	P3.3	;L     L     L     L
;W_P32	LIN	GND	;L     L     L     L
WB_P33	BIT	P3.4	;L     L     PPc   L
WB_PRG	BIT	P3.5	;L     L     L     L		
WB_P36	BIT	P3.6	;L     NPw   H     L
WB_P37	BIT	P3.7	;L     H     NPo   H
;Pw:    Min=295uS,Max=305uS
;Pc/Po: Min=4uS(NPo lag PPc 2uS)


;===========================================
;====== 直接位传送宏 ========================
MOVE	MACRO	BIT1,BIT2
	MOV	C,BIT2
	MOV	BIT1,C
	ENDM

DEC_n	MACRO	X,n
	LOCAL	Loop
	MOV	DEL_X,#n
Loop:	DEC	X
	DJNZ	DEL_X,Loop
	ENDM


;=============================================
;W78E58,fosc=22.1184,MC=0.542534722..
;2MC~=1.085uS
;====== 255uS 以内延时宏 ======================
WAIT	MACRO	uS		;2(uS+1)MC
	MOV	DEL_X,#uS	;2MC
	DJNZ	DEL_X,$		;2MC*uS
	ENDM
	
;====== 255mS 以内延时宏 ======================
DEL_mS	MACRO   mS
	LOCAL	LOOP
	;time=(1.084+mS*999.84)uS
	MOV	DEL_Y,#mS	;=1.84uS
LOOP:	MOV	DEL_X,#27H	;=975uS
	LCALL	DELAY2		;/
	WAIT	22		;=24.84uS
	DJNZ	DEL_Y,LOOP	;/
	ENDM

;====== 255S 以内延时宏 =======================
DEL_S	MACRO	SEC
	LOCAL	LOOP
	;time=Sec*(1.002224)S
	MOV	DEL_Z,#SEC	;1.08uS
LOOP:	MOV	DEL_X,#0ADH	;=1.002223S
	LCALL	DELAY3		;/
	DJNZ	DEL_Z,LOOP	;1.08uS
	ENDM
	

;===================================================
;====== 返回应答报文宏 =======================
ANSWER	MACRO	LN
	MOV	TX_CODE,A
	MOV	TX_LENG,#LN
	MOV	TX_CNT,#00H	;Start answer
	MOV	TX_PIN,#TXD_HAD
	CLR	A
	MOVE	TB8,P
	MOV	TX_SUMB,A
	MOV	SBUF,A
	JNB	OK_TXD,$
	CLR	OK_TXD
	ENDM



;====== (AT89Cx051)加地址增一脉冲宏 ================
INC_x051_ADDR	MACRO
	SETB	IO_xt1		;\
	NOP			;-Address Puls
	CLR	IO_xt1		;/
	ENDM



;===================================================
;====== (AT89Cx051)施加编程(写入)脉冲宏 =============
SET_x05_PROG	MACRO
	WAIT	1		;>1uS
	CLR	IO_prg		;\
	WAIT	110		;-Wait 111uS 
	SETB	IO_prg		;/
	;PROG High to BUSY Low =50nS	
	WAIT	1		;>1uS
	JNB	IO_bsy,$	;Wait BUSY=H
	;BUSY High to XTAL1 High =1uS
	WAIT	1		;>1uS
	ENDM

;====== (AT89C5x)施加编程(写入)脉冲宏 ===============
SET_C5x_PROG	MACRO
	;Data Setup to PROG Low = 4 MC_Cyc
	WAIT	2		;-Wait 4 Cyc!
	CLR	AT_PRG		;make negative pluse
	WAIT	110		;Wait 111uS
	SETB	AT_PRG		;
	;PROG High to BUSY Low  =1uS 
	WAIT	2		;-
	JNB	AT_BSY,$	;Wait BUSY
	ENDM

;====== (AT89C5x)施加编程(写入)脉冲宏 ===============
SET_E5x_PROG	MACRO
	WAIT	1		;wait 2uS
	CLR	WB_P36		;\make negative pluse
	WAIT	158		;\
	WAIT	158		;-Keep 318uS(>305uS)
	SETB	WB_P36		;/
	WAIT	1		;wait 2uS
	ENDM		


;===================================================
;====== (AT89Cx051)读一个字节数据宏 ==================
READ_x051_DATA	MACRO
	WAIT	10H		;Wait 10 uS?
	CLR	IO_p34		;in Read State
	WAIT	2		;Wait 2uS!
	MOV	A,P0 		;Read Data
	SETB	IO_p34
	LCALL	X051_DATA	;Reversal
	ENDM

;====== (AT89Cx051)读一个字节数据宏 ==================
READ_C5xx_DATA	MACRO
	LCALL	AT_ADDR
	CLR	AT_P27		;in read state
	WAIT	2		;wait 4MC!
	MOV	A,P0 		;Read Data
	SETB	AT_P27
	ENDM

;====== (AT89Cx051)读一个字节数据宏 ==================
READ_E5xx_DATA	MACRO
	MOV	P1,DPL
	MOV	P2,DPH
	WAIT	10		;10uS?
	CLR	WB_P37
	WAIT	1		;1uS?
	MOV	A,P0 		;Read Data
	SETB	WB_P37
	ENDM




;===================================================
	

;====== 设置编程电压宏 ==============================
SEL_VPP	MACRO	V
	LOCAL	V_14,V_12,V_05,V_END
	MOV	A,V
V_14:	CJNE	A,#14,V_12
	VPP_14V
	SJMP	V_END
V_12:	CJNE	A,#12,V_05
	VPP_12V
	SJMP	V_END
V_05:	CJNE	A,#5,V_END
	VPP_05V
V_END:	NOP
	ENDM
;===================================================
VPP_00V	MACRO
	SETB	IO_SW1
	SETB	IO_SW2
	DEL_mS	255
	DEL_mS	255
	ENDM
VPP_05V	MACRO
	SETB	IO_SW1
	CLR	IO_SW2
	DEL_mS	255
	ENDM
VPP_12V	MACRO
	CLR	IO_SW1
	SETB	IO_SW2
	DEL_mS	255
	ENDM
VPP_14V	MACRO
	CLR	IO_SW1
	CLR	IO_SW2
	DEL_mS	255
	ENDM

⌨️ 快捷键说明

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