;--------------------------------------------------------
; File Created by SDCC : free open source ISO C Compiler 
; Version 4.4.0 #14620 (MINGW64)
;--------------------------------------------------------
	.module UART_EEPROM
	.optsdcc -mmcs51 --model-large
	
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
	.globl _EEPROM_Trig
	.globl _DisableEEPROM
	.globl _SetTimer2Baudraye
	.globl _main
	.globl _P77
	.globl _P76
	.globl _P75
	.globl _P74
	.globl _P73
	.globl _P72
	.globl _P71
	.globl _P70
	.globl _P67
	.globl _P66
	.globl _P65
	.globl _P64
	.globl _P63
	.globl _P62
	.globl _P61
	.globl _P60
	.globl _P
	.globl _F1
	.globl _OV
	.globl _RS0
	.globl _RS1
	.globl _F0
	.globl _AC
	.globl _CY
	.globl _P57
	.globl _P56
	.globl _P55
	.globl _P54
	.globl _P53
	.globl _P52
	.globl _P51
	.globl _P50
	.globl _P47
	.globl _P46
	.globl _P45
	.globl _P44
	.globl _P43
	.globl _P42
	.globl _P41
	.globl _P40
	.globl _PX0
	.globl _PT0
	.globl _PX1
	.globl _PT1
	.globl _PS
	.globl _PADC
	.globl _PLVD
	.globl _PPCA
	.globl _RXD
	.globl _TXD
	.globl _INT0
	.globl _INT1
	.globl _T0
	.globl _T1
	.globl _WR
	.globl _RD
	.globl _P37
	.globl _P36
	.globl _P35
	.globl _P34
	.globl _P33
	.globl _P32
	.globl _P31
	.globl _P30
	.globl _EX0
	.globl _ET0
	.globl _EX1
	.globl _ET1
	.globl _ES
	.globl _EADC
	.globl _ELVD
	.globl _EA
	.globl _P27
	.globl _P26
	.globl _P25
	.globl _P24
	.globl _P23
	.globl _P22
	.globl _P21
	.globl _P20
	.globl _RI
	.globl _TI
	.globl _RB8
	.globl _TB8
	.globl _REN
	.globl _SM2
	.globl _SM1
	.globl _SM0
	.globl _P17
	.globl _P16
	.globl _P15
	.globl _P14
	.globl _P13
	.globl _P12
	.globl _P11
	.globl _P10
	.globl _IT0
	.globl _IE0
	.globl _IT1
	.globl _IE1
	.globl _TR0
	.globl _TF0
	.globl _TR1
	.globl _TF1
	.globl _P07
	.globl _P06
	.globl _P05
	.globl _P04
	.globl _P03
	.globl _P02
	.globl _P01
	.globl _P00
	.globl _RSTCFG
	.globl _S4BUF
	.globl _S4CON
	.globl _USBADR
	.globl _P7
	.globl _IAP_ADDRE
	.globl _IAP_TPS
	.globl _USBCON
	.globl _B
	.globl _AUXINTIF
	.globl _IP3H
	.globl _DMAIR
	.globl _USBDAT
	.globl _MXAX
	.globl _CKCON
	.globl _WTST
	.globl _P6
	.globl _CMPCR2
	.globl _CMPCR1
	.globl _DPS
	.globl _P7M0
	.globl _P7M1
	.globl _ACC
	.globl _IP3
	.globl _ADCCFG
	.globl _T4T3M
	.globl _USBCLK
	.globl _TL2
	.globl _TH2
	.globl _TL3
	.globl _TH3
	.globl _TL4
	.globl _TH4
	.globl _PSW1
	.globl _PSW
	.globl _SPDAT
	.globl _SPCTL
	.globl _SPSTAT
	.globl _P6M0
	.globl _P6M1
	.globl _P5M0
	.globl _P5M1
	.globl _P5
	.globl _IAP_CONTR
	.globl _IAP_TRIG
	.globl _IAP_CMD
	.globl _IAP_ADDRL
	.globl _IAP_ADDRH
	.globl _IAP_DATA
	.globl _WDT_CONTR
	.globl _P4
	.globl _P_SW4
	.globl _ADC_RESL
	.globl _ADC_RES
	.globl _ADC_CONTR
	.globl _P_SW3
	.globl _P_SW2
	.globl _SADEN
	.globl _IP
	.globl _IPH
	.globl _IP2H
	.globl _IP2
	.globl _P4M0
	.globl _P4M1
	.globl _P3M0
	.globl _P3M1
	.globl _P3
	.globl _IE2
	.globl _TA
	.globl _S3BUF
	.globl _S3CON
	.globl _WKTCH
	.globl _WKTCL
	.globl _SADDR
	.globl _IE
	.globl _VRTRIM
	.globl _P_SW1
	.globl _BUS_SPEED
	.globl _P2
	.globl _IRTRIM
	.globl _LIRTRIM
	.globl _IRCBAND
	.globl _S2BUF
	.globl _S2CON
	.globl _SBUF
	.globl _SCON
	.globl _AUXR2
	.globl _P2M0
	.globl _P2M1
	.globl _P0M0
	.globl _P0M1
	.globl _P1M0
	.globl _P1M1
	.globl _P1
	.globl _INTCLKO
	.globl _AUXR
	.globl _TH1
	.globl _TH0
	.globl _TL1
	.globl _TL0
	.globl _TMOD
	.globl _TCON
	.globl _PCON
	.globl _SPH
	.globl _DPXL
	.globl _DPH
	.globl _DPL
	.globl _SP
	.globl _P0
	.globl _EEPROM_write_n_PARM_3
	.globl _EEPROM_write_n_PARM_2
	.globl _EEPROM_read_n_PARM_3
	.globl _EEPROM_read_n_PARM_2
	.globl _tmp
	.globl _RX1_Buffer
	.globl _RX1_Cnt
	.globl _TX1_Cnt
	.globl _RX1_TimeOut
	.globl _B_TX1_Busy
	.globl _delay_ms
	.globl _CheckData
	.globl _GetAddress
	.globl _GetDataLength
	.globl _UART1_TxByte
	.globl _PrintString1
	.globl _UART1_config
	.globl _UART1_int
	.globl _EEPROM_SectorErase
	.globl _EEPROM_read_n
	.globl _EEPROM_write_n
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
	.area RSEG    (ABS,DATA)
	.org 0x0000
G$P0$0_0$0 == 0x0080
_P0	=	0x0080
G$SP$0_0$0 == 0x0081
_SP	=	0x0081
G$DPL$0_0$0 == 0x0082
_DPL	=	0x0082
G$DPH$0_0$0 == 0x0083
_DPH	=	0x0083
G$DPXL$0_0$0 == 0x0084
_DPXL	=	0x0084
G$SPH$0_0$0 == 0x0085
_SPH	=	0x0085
G$PCON$0_0$0 == 0x0087
_PCON	=	0x0087
G$TCON$0_0$0 == 0x0088
_TCON	=	0x0088
G$TMOD$0_0$0 == 0x0089
_TMOD	=	0x0089
G$TL0$0_0$0 == 0x008a
_TL0	=	0x008a
G$TL1$0_0$0 == 0x008b
_TL1	=	0x008b
G$TH0$0_0$0 == 0x008c
_TH0	=	0x008c
G$TH1$0_0$0 == 0x008d
_TH1	=	0x008d
G$AUXR$0_0$0 == 0x008e
_AUXR	=	0x008e
G$INTCLKO$0_0$0 == 0x008f
_INTCLKO	=	0x008f
G$P1$0_0$0 == 0x0090
_P1	=	0x0090
G$P1M1$0_0$0 == 0x0091
_P1M1	=	0x0091
G$P1M0$0_0$0 == 0x0092
_P1M0	=	0x0092
G$P0M1$0_0$0 == 0x0093
_P0M1	=	0x0093
G$P0M0$0_0$0 == 0x0094
_P0M0	=	0x0094
G$P2M1$0_0$0 == 0x0095
_P2M1	=	0x0095
G$P2M0$0_0$0 == 0x0096
_P2M0	=	0x0096
G$AUXR2$0_0$0 == 0x0097
_AUXR2	=	0x0097
G$SCON$0_0$0 == 0x0098
_SCON	=	0x0098
G$SBUF$0_0$0 == 0x0099
_SBUF	=	0x0099
G$S2CON$0_0$0 == 0x009a
_S2CON	=	0x009a
G$S2BUF$0_0$0 == 0x009b
_S2BUF	=	0x009b
G$IRCBAND$0_0$0 == 0x009d
_IRCBAND	=	0x009d
G$LIRTRIM$0_0$0 == 0x009e
_LIRTRIM	=	0x009e
G$IRTRIM$0_0$0 == 0x009f
_IRTRIM	=	0x009f
G$P2$0_0$0 == 0x00a0
_P2	=	0x00a0
G$BUS_SPEED$0_0$0 == 0x00a1
_BUS_SPEED	=	0x00a1
G$P_SW1$0_0$0 == 0x00a2
_P_SW1	=	0x00a2
G$VRTRIM$0_0$0 == 0x00a6
_VRTRIM	=	0x00a6
G$IE$0_0$0 == 0x00a8
_IE	=	0x00a8
G$SADDR$0_0$0 == 0x00a9
_SADDR	=	0x00a9
G$WKTCL$0_0$0 == 0x00aa
_WKTCL	=	0x00aa
G$WKTCH$0_0$0 == 0x00ab
_WKTCH	=	0x00ab
G$S3CON$0_0$0 == 0x00ac
_S3CON	=	0x00ac
G$S3BUF$0_0$0 == 0x00ad
_S3BUF	=	0x00ad
G$TA$0_0$0 == 0x00ae
_TA	=	0x00ae
G$IE2$0_0$0 == 0x00af
_IE2	=	0x00af
G$P3$0_0$0 == 0x00b0
_P3	=	0x00b0
G$P3M1$0_0$0 == 0x00b1
_P3M1	=	0x00b1
G$P3M0$0_0$0 == 0x00b2
_P3M0	=	0x00b2
G$P4M1$0_0$0 == 0x00b3
_P4M1	=	0x00b3
G$P4M0$0_0$0 == 0x00b4
_P4M0	=	0x00b4
G$IP2$0_0$0 == 0x00b5
_IP2	=	0x00b5
G$IP2H$0_0$0 == 0x00b6
_IP2H	=	0x00b6
G$IPH$0_0$0 == 0x00b7
_IPH	=	0x00b7
G$IP$0_0$0 == 0x00b8
_IP	=	0x00b8
G$SADEN$0_0$0 == 0x00b9
_SADEN	=	0x00b9
G$P_SW2$0_0$0 == 0x00ba
_P_SW2	=	0x00ba
G$P_SW3$0_0$0 == 0x00bb
_P_SW3	=	0x00bb
G$ADC_CONTR$0_0$0 == 0x00bc
_ADC_CONTR	=	0x00bc
G$ADC_RES$0_0$0 == 0x00bd
_ADC_RES	=	0x00bd
G$ADC_RESL$0_0$0 == 0x00be
_ADC_RESL	=	0x00be
G$P_SW4$0_0$0 == 0x00bf
_P_SW4	=	0x00bf
G$P4$0_0$0 == 0x00c0
_P4	=	0x00c0
G$WDT_CONTR$0_0$0 == 0x00c1
_WDT_CONTR	=	0x00c1
G$IAP_DATA$0_0$0 == 0x00c2
_IAP_DATA	=	0x00c2
G$IAP_ADDRH$0_0$0 == 0x00c3
_IAP_ADDRH	=	0x00c3
G$IAP_ADDRL$0_0$0 == 0x00c4
_IAP_ADDRL	=	0x00c4
G$IAP_CMD$0_0$0 == 0x00c5
_IAP_CMD	=	0x00c5
G$IAP_TRIG$0_0$0 == 0x00c6
_IAP_TRIG	=	0x00c6
G$IAP_CONTR$0_0$0 == 0x00c7
_IAP_CONTR	=	0x00c7
G$P5$0_0$0 == 0x00c8
_P5	=	0x00c8
G$P5M1$0_0$0 == 0x00c9
_P5M1	=	0x00c9
G$P5M0$0_0$0 == 0x00ca
_P5M0	=	0x00ca
G$P6M1$0_0$0 == 0x00cb
_P6M1	=	0x00cb
G$P6M0$0_0$0 == 0x00cc
_P6M0	=	0x00cc
G$SPSTAT$0_0$0 == 0x00cd
_SPSTAT	=	0x00cd
G$SPCTL$0_0$0 == 0x00ce
_SPCTL	=	0x00ce
G$SPDAT$0_0$0 == 0x00cf
_SPDAT	=	0x00cf
G$PSW$0_0$0 == 0x00d0
_PSW	=	0x00d0
G$PSW1$0_0$0 == 0x00d1
_PSW1	=	0x00d1
G$TH4$0_0$0 == 0x00d2
_TH4	=	0x00d2
G$TL4$0_0$0 == 0x00d3
_TL4	=	0x00d3
G$TH3$0_0$0 == 0x00d4
_TH3	=	0x00d4
G$TL3$0_0$0 == 0x00d5
_TL3	=	0x00d5
G$TH2$0_0$0 == 0x00d6
_TH2	=	0x00d6
G$TL2$0_0$0 == 0x00d7
_TL2	=	0x00d7
G$USBCLK$0_0$0 == 0x00dc
_USBCLK	=	0x00dc
G$T4T3M$0_0$0 == 0x00dd
_T4T3M	=	0x00dd
G$ADCCFG$0_0$0 == 0x00de
_ADCCFG	=	0x00de
G$IP3$0_0$0 == 0x00df
_IP3	=	0x00df
G$ACC$0_0$0 == 0x00e0
_ACC	=	0x00e0
G$P7M1$0_0$0 == 0x00e1
_P7M1	=	0x00e1
G$P7M0$0_0$0 == 0x00e2
_P7M0	=	0x00e2
G$DPS$0_0$0 == 0x00e3
_DPS	=	0x00e3
G$CMPCR1$0_0$0 == 0x00e6
_CMPCR1	=	0x00e6
G$CMPCR2$0_0$0 == 0x00e7
_CMPCR2	=	0x00e7
G$P6$0_0$0 == 0x00e8
_P6	=	0x00e8
G$WTST$0_0$0 == 0x00e9
_WTST	=	0x00e9
G$CKCON$0_0$0 == 0x00ea
_CKCON	=	0x00ea
G$MXAX$0_0$0 == 0x00eb
_MXAX	=	0x00eb
G$USBDAT$0_0$0 == 0x00ec
_USBDAT	=	0x00ec
G$DMAIR$0_0$0 == 0x00ed
_DMAIR	=	0x00ed
G$IP3H$0_0$0 == 0x00ee
_IP3H	=	0x00ee
G$AUXINTIF$0_0$0 == 0x00ef
_AUXINTIF	=	0x00ef
G$B$0_0$0 == 0x00f0
_B	=	0x00f0
G$USBCON$0_0$0 == 0x00f4
_USBCON	=	0x00f4
G$IAP_TPS$0_0$0 == 0x00f5
_IAP_TPS	=	0x00f5
G$IAP_ADDRE$0_0$0 == 0x00f6
_IAP_ADDRE	=	0x00f6
G$P7$0_0$0 == 0x00f8
_P7	=	0x00f8
G$USBADR$0_0$0 == 0x00fc
_USBADR	=	0x00fc
G$S4CON$0_0$0 == 0x00fd
_S4CON	=	0x00fd
G$S4BUF$0_0$0 == 0x00fe
_S4BUF	=	0x00fe
G$RSTCFG$0_0$0 == 0x00ff
_RSTCFG	=	0x00ff
;--------------------------------------------------------
; special function bits
;--------------------------------------------------------
	.area RSEG    (ABS,DATA)
	.org 0x0000
G$P00$0_0$0 == 0x0080
_P00	=	0x0080
G$P01$0_0$0 == 0x0081
_P01	=	0x0081
G$P02$0_0$0 == 0x0082
_P02	=	0x0082
G$P03$0_0$0 == 0x0083
_P03	=	0x0083
G$P04$0_0$0 == 0x0084
_P04	=	0x0084
G$P05$0_0$0 == 0x0085
_P05	=	0x0085
G$P06$0_0$0 == 0x0086
_P06	=	0x0086
G$P07$0_0$0 == 0x0087
_P07	=	0x0087
G$TF1$0_0$0 == 0x008f
_TF1	=	0x008f
G$TR1$0_0$0 == 0x008e
_TR1	=	0x008e
G$TF0$0_0$0 == 0x008d
_TF0	=	0x008d
G$TR0$0_0$0 == 0x008c
_TR0	=	0x008c
G$IE1$0_0$0 == 0x008b
_IE1	=	0x008b
G$IT1$0_0$0 == 0x008a
_IT1	=	0x008a
G$IE0$0_0$0 == 0x0089
_IE0	=	0x0089
G$IT0$0_0$0 == 0x0088
_IT0	=	0x0088
G$P10$0_0$0 == 0x0090
_P10	=	0x0090
G$P11$0_0$0 == 0x0091
_P11	=	0x0091
G$P12$0_0$0 == 0x0092
_P12	=	0x0092
G$P13$0_0$0 == 0x0093
_P13	=	0x0093
G$P14$0_0$0 == 0x0094
_P14	=	0x0094
G$P15$0_0$0 == 0x0095
_P15	=	0x0095
G$P16$0_0$0 == 0x0096
_P16	=	0x0096
G$P17$0_0$0 == 0x0097
_P17	=	0x0097
G$SM0$0_0$0 == 0x009f
_SM0	=	0x009f
G$SM1$0_0$0 == 0x009e
_SM1	=	0x009e
G$SM2$0_0$0 == 0x009d
_SM2	=	0x009d
G$REN$0_0$0 == 0x009c
_REN	=	0x009c
G$TB8$0_0$0 == 0x009b
_TB8	=	0x009b
G$RB8$0_0$0 == 0x009a
_RB8	=	0x009a
G$TI$0_0$0 == 0x0099
_TI	=	0x0099
G$RI$0_0$0 == 0x0098
_RI	=	0x0098
G$P20$0_0$0 == 0x00a0
_P20	=	0x00a0
G$P21$0_0$0 == 0x00a1
_P21	=	0x00a1
G$P22$0_0$0 == 0x00a2
_P22	=	0x00a2
G$P23$0_0$0 == 0x00a3
_P23	=	0x00a3
G$P24$0_0$0 == 0x00a4
_P24	=	0x00a4
G$P25$0_0$0 == 0x00a5
_P25	=	0x00a5
G$P26$0_0$0 == 0x00a6
_P26	=	0x00a6
G$P27$0_0$0 == 0x00a7
_P27	=	0x00a7
G$EA$0_0$0 == 0x00af
_EA	=	0x00af
G$ELVD$0_0$0 == 0x00ae
_ELVD	=	0x00ae
G$EADC$0_0$0 == 0x00ad
_EADC	=	0x00ad
G$ES$0_0$0 == 0x00ac
_ES	=	0x00ac
G$ET1$0_0$0 == 0x00ab
_ET1	=	0x00ab
G$EX1$0_0$0 == 0x00aa
_EX1	=	0x00aa
G$ET0$0_0$0 == 0x00a9
_ET0	=	0x00a9
G$EX0$0_0$0 == 0x00a8
_EX0	=	0x00a8
G$P30$0_0$0 == 0x00b0
_P30	=	0x00b0
G$P31$0_0$0 == 0x00b1
_P31	=	0x00b1
G$P32$0_0$0 == 0x00b2
_P32	=	0x00b2
G$P33$0_0$0 == 0x00b3
_P33	=	0x00b3
G$P34$0_0$0 == 0x00b4
_P34	=	0x00b4
G$P35$0_0$0 == 0x00b5
_P35	=	0x00b5
G$P36$0_0$0 == 0x00b6
_P36	=	0x00b6
G$P37$0_0$0 == 0x00b7
_P37	=	0x00b7
G$RD$0_0$0 == 0x00b7
_RD	=	0x00b7
G$WR$0_0$0 == 0x00b6
_WR	=	0x00b6
G$T1$0_0$0 == 0x00b5
_T1	=	0x00b5
G$T0$0_0$0 == 0x00b4
_T0	=	0x00b4
G$INT1$0_0$0 == 0x00b3
_INT1	=	0x00b3
G$INT0$0_0$0 == 0x00b2
_INT0	=	0x00b2
G$TXD$0_0$0 == 0x00b1
_TXD	=	0x00b1
G$RXD$0_0$0 == 0x00b0
_RXD	=	0x00b0
G$PPCA$0_0$0 == 0x00bf
_PPCA	=	0x00bf
G$PLVD$0_0$0 == 0x00be
_PLVD	=	0x00be
G$PADC$0_0$0 == 0x00bd
_PADC	=	0x00bd
G$PS$0_0$0 == 0x00bc
_PS	=	0x00bc
G$PT1$0_0$0 == 0x00bb
_PT1	=	0x00bb
G$PX1$0_0$0 == 0x00ba
_PX1	=	0x00ba
G$PT0$0_0$0 == 0x00b9
_PT0	=	0x00b9
G$PX0$0_0$0 == 0x00b8
_PX0	=	0x00b8
G$P40$0_0$0 == 0x00c0
_P40	=	0x00c0
G$P41$0_0$0 == 0x00c1
_P41	=	0x00c1
G$P42$0_0$0 == 0x00c2
_P42	=	0x00c2
G$P43$0_0$0 == 0x00c3
_P43	=	0x00c3
G$P44$0_0$0 == 0x00c4
_P44	=	0x00c4
G$P45$0_0$0 == 0x00c5
_P45	=	0x00c5
G$P46$0_0$0 == 0x00c6
_P46	=	0x00c6
G$P47$0_0$0 == 0x00c7
_P47	=	0x00c7
G$P50$0_0$0 == 0x00c8
_P50	=	0x00c8
G$P51$0_0$0 == 0x00c9
_P51	=	0x00c9
G$P52$0_0$0 == 0x00ca
_P52	=	0x00ca
G$P53$0_0$0 == 0x00cb
_P53	=	0x00cb
G$P54$0_0$0 == 0x00cc
_P54	=	0x00cc
G$P55$0_0$0 == 0x00cd
_P55	=	0x00cd
G$P56$0_0$0 == 0x00ce
_P56	=	0x00ce
G$P57$0_0$0 == 0x00cf
_P57	=	0x00cf
G$CY$0_0$0 == 0x00d7
_CY	=	0x00d7
G$AC$0_0$0 == 0x00d6
_AC	=	0x00d6
G$F0$0_0$0 == 0x00d5
_F0	=	0x00d5
G$RS1$0_0$0 == 0x00d4
_RS1	=	0x00d4
G$RS0$0_0$0 == 0x00d3
_RS0	=	0x00d3
G$OV$0_0$0 == 0x00d2
_OV	=	0x00d2
G$F1$0_0$0 == 0x00d1
_F1	=	0x00d1
G$P$0_0$0 == 0x00d0
_P	=	0x00d0
G$P60$0_0$0 == 0x00e8
_P60	=	0x00e8
G$P61$0_0$0 == 0x00e9
_P61	=	0x00e9
G$P62$0_0$0 == 0x00ea
_P62	=	0x00ea
G$P63$0_0$0 == 0x00eb
_P63	=	0x00eb
G$P64$0_0$0 == 0x00ec
_P64	=	0x00ec
G$P65$0_0$0 == 0x00ed
_P65	=	0x00ed
G$P66$0_0$0 == 0x00ee
_P66	=	0x00ee
G$P67$0_0$0 == 0x00ef
_P67	=	0x00ef
G$P70$0_0$0 == 0x00f8
_P70	=	0x00f8
G$P71$0_0$0 == 0x00f9
_P71	=	0x00f9
G$P72$0_0$0 == 0x00fa
_P72	=	0x00fa
G$P73$0_0$0 == 0x00fb
_P73	=	0x00fb
G$P74$0_0$0 == 0x00fc
_P74	=	0x00fc
G$P75$0_0$0 == 0x00fd
_P75	=	0x00fd
G$P76$0_0$0 == 0x00fe
_P76	=	0x00fe
G$P77$0_0$0 == 0x00ff
_P77	=	0x00ff
;--------------------------------------------------------
; overlayable register banks
;--------------------------------------------------------
	.area REG_BANK_0	(REL,OVR,DATA)
	.ds 8
;--------------------------------------------------------
; internal ram data
;--------------------------------------------------------
	.area DSEG    (DATA)
;--------------------------------------------------------
; overlayable items in internal ram
;--------------------------------------------------------
;--------------------------------------------------------
; Stack segment in internal ram
;--------------------------------------------------------
	.area SSEG
__start__stack:
	.ds	1

;--------------------------------------------------------
; indirectly addressable internal ram data
;--------------------------------------------------------
	.area ISEG    (DATA)
;--------------------------------------------------------
; absolute internal ram data
;--------------------------------------------------------
	.area IABS    (ABS,DATA)
	.area IABS    (ABS,DATA)
;--------------------------------------------------------
; bit data
;--------------------------------------------------------
	.area BSEG    (BIT)
G$B_TX1_Busy$0_0$0==.
_B_TX1_Busy::
	.ds 1
;--------------------------------------------------------
; paged external ram data
;--------------------------------------------------------
	.area PSEG    (PAG,XDATA)
;--------------------------------------------------------
; uninitialized external ram data
;--------------------------------------------------------
	.area XSEG    (XDATA)
G$RX1_TimeOut$0_0$0==.
_RX1_TimeOut::
	.ds 1
G$TX1_Cnt$0_0$0==.
_TX1_Cnt::
	.ds 1
G$RX1_Cnt$0_0$0==.
_RX1_Cnt::
	.ds 1
G$RX1_Buffer$0_0$0==.
_RX1_Buffer::
	.ds 111
G$tmp$0_0$0==.
_tmp::
	.ds 100
LUART_EEPROM.main$i$1_0$13==.
_main_i_10000_13:
	.ds 1
LUART_EEPROM.main$j$1_0$13==.
_main_j_10000_13:
	.ds 1
LUART_EEPROM.main$addr$1_0$13==.
_main_addr_10000_13:
	.ds 4
LUART_EEPROM.main$status$1_0$13==.
_main_status_10000_13:
	.ds 1
LUART_EEPROM.delay_ms$ms$1_0$29==.
_delay_ms_ms_10000_29:
	.ds 1
LUART_EEPROM.delay_ms$i$1_0$30==.
_delay_ms_i_10000_30:
	.ds 2
LUART_EEPROM.CheckData$dat$1_0$32==.
_CheckData_dat_10000_32:
	.ds 1
LUART_EEPROM.GetAddress$address$1_0$35==.
_GetAddress_address_10000_35:
	.ds 4
LUART_EEPROM.GetAddress$i$1_0$35==.
_GetAddress_i_10000_35:
	.ds 1
LUART_EEPROM.GetAddress$j$1_0$35==.
_GetAddress_j_10000_35:
	.ds 1
LUART_EEPROM.GetDataLength$i$1_0$40==.
_GetDataLength_i_10000_40:
	.ds 1
LUART_EEPROM.GetDataLength$length$1_0$40==.
_GetDataLength_length_10000_40:
	.ds 1
LUART_EEPROM.UART1_TxByte$dat$1_0$43==.
_UART1_TxByte_dat_10000_43:
	.ds 1
LUART_EEPROM.PrintString1$puts$1_0$45==.
_PrintString1_puts_10000_45:
	.ds 3
LUART_EEPROM.SetTimer2Baudraye$dat$1_0$48==.
_SetTimer2Baudraye_dat_10000_48:
	.ds 2
LUART_EEPROM.UART1_config$brt$1_0$50==.
_UART1_config_brt_10000_50:
	.ds 1
LUART_EEPROM.EEPROM_SectorErase$EE_address$1_0$62==.
_EEPROM_SectorErase_EE_address_10000_62:
	.ds 4
LUART_EEPROM.EEPROM_read_n$DataAddress$1_0$64==.
_EEPROM_read_n_PARM_2:
	.ds 3
LUART_EEPROM.EEPROM_read_n$length$1_0$64==.
_EEPROM_read_n_PARM_3:
	.ds 1
LUART_EEPROM.EEPROM_read_n$EE_address$1_0$64==.
_EEPROM_read_n_EE_address_10000_64:
	.ds 4
LUART_EEPROM.EEPROM_write_n$DataAddress$1_0$67==.
_EEPROM_write_n_PARM_2:
	.ds 3
LUART_EEPROM.EEPROM_write_n$length$1_0$67==.
_EEPROM_write_n_PARM_3:
	.ds 1
LUART_EEPROM.EEPROM_write_n$EE_address$1_0$67==.
_EEPROM_write_n_EE_address_10000_67:
	.ds 4
LUART_EEPROM.EEPROM_write_n$i$1_0$68==.
_EEPROM_write_n_i_10000_68:
	.ds 1
LUART_EEPROM.EEPROM_write_n$j$1_0$68==.
_EEPROM_write_n_j_10000_68:
	.ds 2
LUART_EEPROM.EEPROM_write_n$p$1_0$68==.
_EEPROM_write_n_p_10000_68:
	.ds 3
;--------------------------------------------------------
; absolute external ram data
;--------------------------------------------------------
	.area XABS    (ABS,XDATA)
;--------------------------------------------------------
; initialized external ram data
;--------------------------------------------------------
	.area XISEG   (XDATA)
	.area HOME    (CODE)
	.area GSINIT0 (CODE)
	.area GSINIT1 (CODE)
	.area GSINIT2 (CODE)
	.area GSINIT3 (CODE)
	.area GSINIT4 (CODE)
	.area GSINIT5 (CODE)
	.area GSINIT  (CODE)
	.area GSFINAL (CODE)
	.area CSEG    (CODE)
;--------------------------------------------------------
; interrupt vector
;--------------------------------------------------------
	.area HOME    (CODE)
__interrupt_vect:
	ljmp	__sdcc_gsinit_startup
	reti
	.ds	7
	reti
	.ds	7
	reti
	.ds	7
	reti
	.ds	7
	ljmp	_UART1_int
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
	.area HOME    (CODE)
	.area GSINIT  (CODE)
	.area GSFINAL (CODE)
	.area GSINIT  (CODE)
	.globl __sdcc_gsinit_startup
	.globl __sdcc_program_startup
	.globl __start__stack
	.globl __mcs51_genXINIT
	.globl __mcs51_genXRAMCLEAR
	.globl __mcs51_genRAMCLEAR
	.area GSFINAL (CODE)
	ljmp	__sdcc_program_startup
;--------------------------------------------------------
; Home
;--------------------------------------------------------
	.area HOME    (CODE)
	.area HOME    (CODE)
__sdcc_program_startup:
	ljmp	_main
;	return from main will return to caller
;--------------------------------------------------------
; code
;--------------------------------------------------------
	.area CSEG    (CODE)
;------------------------------------------------------------
;Allocation info for local variables in function 'main'
;------------------------------------------------------------
;i                         Allocated with name '_main_i_10000_13'
;j                         Allocated with name '_main_j_10000_13'
;addr                      Allocated with name '_main_addr_10000_13'
;status                    Allocated with name '_main_status_10000_13'
;------------------------------------------------------------
	G$main$0$0 ==.
	C$UART_EEPROM.c$67$0_0$13 ==.
;	UART-EEPROM.c:67: void main(void)
;	-----------------------------------------
;	 function main
;	-----------------------------------------
_main:
	ar7 = 0x07
	ar6 = 0x06
	ar5 = 0x05
	ar4 = 0x04
	ar3 = 0x03
	ar2 = 0x02
	ar1 = 0x01
	ar0 = 0x00
	C$UART_EEPROM.c$73$1_0$13 ==.
;	UART-EEPROM.c:73: WTST = 0;  //设置程序指令延时参数，赋值为0可将CPU执行指令的速度设置为最快
	mov	_WTST,#0x00
	C$UART_EEPROM.c$74$1_0$13 ==.
;	UART-EEPROM.c:74: EAXSFR(); //扩展寄存器(XFR)访问使能
	orl	_P_SW2,#0x80
	C$UART_EEPROM.c$75$1_0$13 ==.
;	UART-EEPROM.c:75: CKCON = 0; //提高访问XRAM速度
	mov	_CKCON,#0x00
	C$UART_EEPROM.c$77$1_0$13 ==.
;	UART-EEPROM.c:77: P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
	mov	_P0M1,#0x00
	mov	_P0M0,#0x00
	C$UART_EEPROM.c$78$1_0$13 ==.
;	UART-EEPROM.c:78: P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
	mov	_P1M1,#0x00
	mov	_P1M0,#0x00
	C$UART_EEPROM.c$79$1_0$13 ==.
;	UART-EEPROM.c:79: P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
	mov	_P2M1,#0x00
	mov	_P2M0,#0x00
	C$UART_EEPROM.c$80$1_0$13 ==.
;	UART-EEPROM.c:80: P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
	mov	_P3M1,#0x00
	mov	_P3M0,#0x00
	C$UART_EEPROM.c$81$1_0$13 ==.
;	UART-EEPROM.c:81: P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
	mov	_P4M1,#0x00
	mov	_P4M0,#0x00
	C$UART_EEPROM.c$82$1_0$13 ==.
;	UART-EEPROM.c:82: P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
	mov	_P5M1,#0x00
	mov	_P5M0,#0x00
	C$UART_EEPROM.c$83$1_0$13 ==.
;	UART-EEPROM.c:83: P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
	mov	_P6M1,#0x00
	mov	_P6M0,#0x00
	C$UART_EEPROM.c$84$1_0$13 ==.
;	UART-EEPROM.c:84: P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
	mov	_P7M1,#0x00
	mov	_P7M0,#0x00
	C$UART_EEPROM.c$86$1_0$13 ==.
;	UART-EEPROM.c:86: UART1_config(1);    // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
	mov	dpl, #0x01
	lcall	_UART1_config
	C$UART_EEPROM.c$87$1_0$13 ==.
;	UART-EEPROM.c:87: EA = 1; //允许总中断
;	assignBit
	setb	_EA
	C$UART_EEPROM.c$89$1_0$13 ==.
;	UART-EEPROM.c:89: PrintString1("AI8051U系列单片机EEPROM测试程序，串口命令设置如下:\r\n");    //UART1发送一个字符串
	mov	dpl, #___str_0
	mov	dph, #(___str_0 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
	C$UART_EEPROM.c$90$1_0$13 ==.
;	UART-EEPROM.c:90: PrintString1("W 0x000040 1234567890  --> 对0x000040地址写入字符1234567890.\r\n");   //UART1发送一个字符串
	mov	dpl, #___str_1
	mov	dph, #(___str_1 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
	C$UART_EEPROM.c$91$1_0$13 ==.
;	UART-EEPROM.c:91: PrintString1("R 0x000040 10          --> 对0x000040地址读出10个字节内容.\r\n"); //UART1发送一个字符串
	mov	dpl, #___str_2
	mov	dph, #(___str_2 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
	C$UART_EEPROM.c$93$1_0$13 ==.
;	UART-EEPROM.c:93: while(1)
00138$:
	C$UART_EEPROM.c$95$2_0$14 ==.
;	UART-EEPROM.c:95: delay_ms(1);
	mov	dpl, #0x01
	lcall	_delay_ms
	C$UART_EEPROM.c$96$2_0$14 ==.
;	UART-EEPROM.c:96: if(RX1_TimeOut > 0)     //超时计数
	mov	dptr,#_RX1_TimeOut
	movx	a,@dptr
	jnz	00294$
	ljmp	00138$
00294$:
	C$UART_EEPROM.c$98$3_0$15 ==.
;	UART-EEPROM.c:98: if(--RX1_TimeOut == 0)
	mov	dptr,#_RX1_TimeOut
	movx	a,@dptr
	dec	a
	movx	@dptr,a
	movx	a,@dptr
	jz	00295$
	ljmp	00138$
00295$:
	C$UART_EEPROM.c$100$5_0$17 ==.
;	UART-EEPROM.c:100: for(i=0; i<RX1_Cnt; i++)    UART1_TxByte(RX1_Buffer[i]);    //把收到的数据原样返回,用于测试
	mov	dptr,#_main_i_10000_13
	mov	a,#0x00
	movx	@dptr,a
00141$:
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	dptr,#_RX1_Cnt
	movx	a,@dptr
	mov	r6,a
	clr	c
	mov	a,r7
	subb	a,r6
	jc	00296$
	ljmp	00101$
00296$:
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_RX1_Buffer
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	dph,a
	movx	a,@dptr
	mov	r6,a
	mov	dpl, r6
	push	ar7
	lcall	_UART1_TxByte
	pop	ar7
	mov	dptr,#_main_i_10000_13
	mov	a,r7
	inc	a
	movx	@dptr,a
	ljmp	00141$
00101$:
	C$UART_EEPROM.c$102$4_0$16 ==.
;	UART-EEPROM.c:102: status = 0xff;  //状态给一个非0值
	mov	dptr,#_main_status_10000_13
	mov	a,#0xff
	movx	@dptr,a
	C$UART_EEPROM.c$103$4_0$16 ==.
;	UART-EEPROM.c:103: if((RX1_Cnt >= 12) && (RX1_Buffer[1] == ' ') && (RX1_Buffer[10] == ' ')) //最短命令为10个字节
	mov	dptr,#_RX1_Cnt
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x0c,00297$
00297$:
	jnc	00298$
	ljmp	00128$
00298$:
	mov	dptr,#(_RX1_Buffer + 0x0001)
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x20,00299$
	sjmp	00300$
00299$:
	ljmp	00128$
00300$:
	mov	dptr,#(_RX1_Buffer + 0x000a)
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x20,00301$
	sjmp	00302$
00301$:
	ljmp	00128$
00302$:
	C$UART_EEPROM.c$105$6_0$19 ==.
;	UART-EEPROM.c:105: for(i=0; i<10; i++)
	mov	dptr,#_main_i_10000_13
	mov	a,#0x00
	movx	@dptr,a
00143$:
	C$UART_EEPROM.c$107$7_0$20 ==.
;	UART-EEPROM.c:107: if((RX1_Buffer[i] >= 'a') && (RX1_Buffer[i] <= 'z'))    RX1_Buffer[i] = RX1_Buffer[i] - 'a' + 'A';  //小写转大写
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_RX1_Buffer
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	dph,a
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x61,00303$
00303$:
	jnc	00304$
	ljmp	00144$
00304$:
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_RX1_Buffer
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	dph,a
	movx	a,@dptr
	mov	r7,a
	clr	c
	mov	a,#0x7a
	subb	a,r7
	jnc	00305$
	ljmp	00144$
00305$:
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_RX1_Buffer
	mov	r7,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	r6,a
	mov	dpl,r7
	mov	dph,r6
	movx	a,@dptr
	mov	r5,a
	mov	a,#0xe0
	add	a, r5
	mov	r5,a
	mov	dpl,r7
	mov	dph,r6
	mov	a,r5
	movx	@dptr,a
00144$:
	C$UART_EEPROM.c$105$6_0$19 ==.
;	UART-EEPROM.c:105: for(i=0; i<10; i++)
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	add	a, #0x01
	movx	@dptr,a
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x0a,00306$
00306$:
	jnc	00307$
	ljmp	00143$
00307$:
	C$UART_EEPROM.c$109$5_0$18 ==.
;	UART-EEPROM.c:109: addr = GetAddress();
	lcall	_GetAddress
	mov	r4, dpl
	mov	r5, dph
	mov	r6, b
	mov	r7, a
	mov	dptr,#_main_addr_10000_13
	mov	a,r4
	movx	@dptr,a
	mov	a,r5
	inc	dptr
	movx	@dptr,a
	mov	a,r6
	inc	dptr
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$110$5_0$18 ==.
;	UART-EEPROM.c:110: if(addr < 0x00ffffff)
	clr	c
	mov	a,r4
	subb	a,#0xff
	mov	a,r5
	subb	a,#0xff
	mov	a,r6
	subb	a,#0xff
	mov	a,r7
	subb	a,#0x00
	jc	00308$
	ljmp	00128$
00308$:
	C$UART_EEPROM.c$112$6_0$21 ==.
;	UART-EEPROM.c:112: if(RX1_Buffer[0] == 'W')    //写入N个字节
	mov	dptr,#_RX1_Buffer
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x57,00309$
	sjmp	00310$
00309$:
	ljmp	00123$
00310$:
	C$UART_EEPROM.c$114$7_0$22 ==.
;	UART-EEPROM.c:114: j = RX1_Cnt - 11;
	mov	dptr,#_RX1_Cnt
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a,#0xf5
	mov	r7,a
	mov	dptr,#_main_j_10000_13
	mov	a,r7
	movx	@dptr,a
	C$UART_EEPROM.c$115$7_0$22 ==.
;	UART-EEPROM.c:115: if(j > Tmp_Length)  j = Tmp_Length; //越界检测
	clr	c
	mov	a,#0x64
	subb	a,r7
	jc	00311$
	ljmp	00107$
00311$:
	mov	dptr,#_main_j_10000_13
	mov	a,#0x64
	movx	@dptr,a
00107$:
	C$UART_EEPROM.c$116$7_0$22 ==.
;	UART-EEPROM.c:116: EEPROM_SectorErase(addr);           //擦除扇区
	mov	dptr,#_main_addr_10000_13
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dpl, r4
	mov	dph, r5
	mov	b, r6
	mov	a, r7
	push	ar7
	push	ar6
	push	ar5
	push	ar4
	lcall	_EEPROM_SectorErase
	pop	ar4
	pop	ar5
	pop	ar6
	pop	ar7
	C$UART_EEPROM.c$117$7_0$22 ==.
;	UART-EEPROM.c:117: i = EEPROM_write_n(addr,&RX1_Buffer[11],j);      //写N个字节
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r3,a
	mov	dptr,#_EEPROM_write_n_PARM_2
	mov	a,#(_RX1_Buffer + 0x000b)
	movx	@dptr,a
	mov	a,#((_RX1_Buffer + 0x000b) >> 8)
	inc	dptr
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dptr,#_EEPROM_write_n_PARM_3
	mov	a,r3
	movx	@dptr,a
	mov	dpl, r4
	mov	dph, r5
	mov	b, r6
	mov	a, r7
	lcall	_EEPROM_write_n
	mov	a, dpl
	C$UART_EEPROM.c$118$7_0$22 ==.
;	UART-EEPROM.c:118: if(i == 0)
	jz	00312$
	ljmp	00113$
00312$:
	C$UART_EEPROM.c$120$8_0$23 ==.
;	UART-EEPROM.c:120: PrintString1("\r\n已写入");
	mov	dpl, #___str_3
	mov	dph, #(___str_3 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
	C$UART_EEPROM.c$121$8_0$23 ==.
;	UART-EEPROM.c:121: if(j >= 100)    {UART1_TxByte((u8)(j/100+'0'));   j = j % 100;}
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x64,00313$
00313$:
	jnc	00314$
	ljmp	00109$
00314$:
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	r6,#0x00
	mov	dptr,#__divsint_PARM_2
	mov	a,#0x64
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dpl, r7
	mov	dph, r6
	push	ar7
	push	ar6
	lcall	__divsint
	mov	r4, dpl
	mov	r5, dph
	pop	ar6
	pop	ar7
	mov	a,#0x30
	add	a, r4
	mov	r4,a
	mov	dpl, r4
	push	ar7
	push	ar6
	lcall	_UART1_TxByte
	pop	ar6
	pop	ar7
	mov	dptr,#__modsint_PARM_2
	mov	a,#0x64
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dpl, r7
	mov	dph, r6
	lcall	__modsint
	mov	r6, dpl
	mov	r7, dph
	mov	dptr,#_main_j_10000_13
	mov	a,r6
	movx	@dptr,a
00109$:
	C$UART_EEPROM.c$122$8_0$23 ==.
;	UART-EEPROM.c:122: if(j >= 10)     {UART1_TxByte((u8)(j/10+'0'));    j = j % 10;}
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x0a,00315$
00315$:
	jnc	00316$
	ljmp	00111$
00316$:
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	r6,#0x00
	mov	dptr,#__divsint_PARM_2
	mov	a,#0x0a
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dpl, r7
	mov	dph, r6
	push	ar7
	push	ar6
	lcall	__divsint
	mov	r4, dpl
	mov	r5, dph
	pop	ar6
	pop	ar7
	mov	a,#0x30
	add	a, r4
	mov	r4,a
	mov	dpl, r4
	push	ar7
	push	ar6
	lcall	_UART1_TxByte
	pop	ar6
	pop	ar7
	mov	dptr,#__modsint_PARM_2
	mov	a,#0x0a
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dpl, r7
	mov	dph, r6
	lcall	__modsint
	mov	r6, dpl
	mov	r7, dph
	mov	dptr,#_main_j_10000_13
	mov	a,r6
	movx	@dptr,a
00111$:
	C$UART_EEPROM.c$123$8_0$23 ==.
;	UART-EEPROM.c:123: UART1_TxByte((u8)(j%10+'0'));
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	r6,#0x00
	mov	dptr,#__modsint_PARM_2
	mov	a,#0x0a
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dpl, r7
	mov	dph, r6
	lcall	__modsint
	mov	r6, dpl
	mov	r7, dph
	mov	a,#0x30
	add	a, r6
	mov	r6,a
	mov	dpl, r6
	lcall	_UART1_TxByte
	C$UART_EEPROM.c$124$8_0$23 ==.
;	UART-EEPROM.c:124: PrintString1("字节！\r\n");
	mov	dpl, #___str_4
	mov	dph, #(___str_4 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
	ljmp	00114$
00113$:
	C$UART_EEPROM.c$126$7_0$22 ==.
;	UART-EEPROM.c:126: else    PrintString1("\r\n写入错误！\r\n");
	mov	dpl, #___str_5
	mov	dph, #(___str_5 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
00114$:
	C$UART_EEPROM.c$127$7_0$22 ==.
;	UART-EEPROM.c:127: status = 0; //命令正确
	mov	dptr,#_main_status_10000_13
	mov	a,#0x00
	movx	@dptr,a
	ljmp	00128$
00123$:
	C$UART_EEPROM.c$130$6_0$21 ==.
;	UART-EEPROM.c:130: else if(RX1_Buffer[0] == 'R')   //PC请求返回N字节EEPROM数据
	mov	dptr,#_RX1_Buffer
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x52,00317$
	sjmp	00318$
00317$:
	ljmp	00128$
00318$:
	C$UART_EEPROM.c$132$7_0$26 ==.
;	UART-EEPROM.c:132: j = GetDataLength();
	lcall	_GetDataLength
	mov	r7, dpl
	mov	dptr,#_main_j_10000_13
	mov	a,r7
	movx	@dptr,a
	C$UART_EEPROM.c$133$7_0$26 ==.
;	UART-EEPROM.c:133: if(j > Tmp_Length)  j = Tmp_Length; //越界检测
	clr	c
	mov	a,#0x64
	subb	a,r7
	jc	00319$
	ljmp	00116$
00319$:
	mov	dptr,#_main_j_10000_13
	mov	a,#0x64
	movx	@dptr,a
00116$:
	C$UART_EEPROM.c$134$7_0$26 ==.
;	UART-EEPROM.c:134: if(j > 0)
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	jnz	00320$
	ljmp	00128$
00320$:
	C$UART_EEPROM.c$136$8_0$27 ==.
;	UART-EEPROM.c:136: PrintString1("\r\n读出");
	mov	dpl, #___str_6
	mov	dph, #(___str_6 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
	C$UART_EEPROM.c$137$8_0$27 ==.
;	UART-EEPROM.c:137: UART1_TxByte((u8)(j/10+'0'));
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	ar5,r7
	mov	r6,#0x00
	mov	dptr,#__divsint_PARM_2
	mov	a,#0x0a
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dpl, r5
	mov	dph, r6
	push	ar7
	push	ar6
	push	ar5
	lcall	__divsint
	mov	r3, dpl
	mov	r4, dph
	pop	ar5
	pop	ar6
	pop	ar7
	mov	a,#0x30
	add	a, r3
	mov	r3,a
	mov	dpl, r3
	push	ar7
	push	ar6
	push	ar5
	lcall	_UART1_TxByte
	pop	ar5
	pop	ar6
	pop	ar7
	C$UART_EEPROM.c$138$1_0$13 ==.
;	UART-EEPROM.c:138: UART1_TxByte((u8)(j%10+'0'));
	mov	dptr,#__modsint_PARM_2
	mov	a,#0x0a
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dpl, r5
	mov	dph, r6
	push	ar7
	lcall	__modsint
	mov	r5, dpl
	mov	r6, dph
	pop	ar7
	mov	a,#0x30
	add	a, r5
	mov	r5,a
	mov	dpl, r5
	push	ar7
	lcall	_UART1_TxByte
	pop	ar7
	C$UART_EEPROM.c$139$8_0$27 ==.
;	UART-EEPROM.c:139: PrintString1("个字节内容如下:\r\n");
	mov	dpl, #___str_7
	mov	dph, #(___str_7 >> 8)
	mov	b, #0x80
	push	ar7
	lcall	_PrintString1
	pop	ar7
	C$UART_EEPROM.c$140$8_0$27 ==.
;	UART-EEPROM.c:140: EEPROM_read_n(addr,tmp,j);
	mov	dptr,#_main_addr_10000_13
	movx	a,@dptr
	mov	r3,a
	inc	dptr
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	mov	dptr,#_EEPROM_read_n_PARM_2
	mov	a,#_tmp
	movx	@dptr,a
	mov	a,#(_tmp >> 8)
	inc	dptr
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	mov	dptr,#_EEPROM_read_n_PARM_3
	mov	a,r7
	movx	@dptr,a
	mov	dpl, r3
	mov	dph, r4
	mov	b, r5
	mov	a, r6
	lcall	_EEPROM_read_n
	C$UART_EEPROM.c$141$9_0$28 ==.
;	UART-EEPROM.c:141: for(i=0; i<j; i++)  UART1_TxByte(tmp[i]);
	mov	dptr,#_main_i_10000_13
	mov	a,#0x00
	movx	@dptr,a
00146$:
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	dptr,#_main_j_10000_13
	movx	a,@dptr
	mov	r6,a
	clr	c
	mov	a,r7
	subb	a,r6
	jc	00321$
	ljmp	00117$
00321$:
	mov	dptr,#_main_i_10000_13
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_tmp
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_tmp >> 8)
	mov	dph,a
	movx	a,@dptr
	mov	r6,a
	mov	dpl, r6
	push	ar7
	lcall	_UART1_TxByte
	pop	ar7
	mov	dptr,#_main_i_10000_13
	mov	a,r7
	inc	a
	movx	@dptr,a
	ljmp	00146$
00117$:
	C$UART_EEPROM.c$142$8_0$27 ==.
;	UART-EEPROM.c:142: UART1_TxByte(0x0d);
	mov	dpl, #0x0d
	lcall	_UART1_TxByte
	C$UART_EEPROM.c$143$8_0$27 ==.
;	UART-EEPROM.c:143: UART1_TxByte(0x0a);
	mov	dpl, #0x0a
	lcall	_UART1_TxByte
	C$UART_EEPROM.c$144$8_0$27 ==.
;	UART-EEPROM.c:144: status = 0; //命令正确
	mov	dptr,#_main_status_10000_13
	mov	a,#0x00
	movx	@dptr,a
00128$:
	C$UART_EEPROM.c$149$4_0$16 ==.
;	UART-EEPROM.c:149: if(status != 0) PrintString1("\r\n命令错误！\r\n");
	mov	dptr,#_main_status_10000_13
	movx	a,@dptr
	jnz	00322$
	ljmp	00132$
00322$:
	mov	dpl, #___str_8
	mov	dph, #(___str_8 >> 8)
	mov	b, #0x80
	lcall	_PrintString1
00132$:
	C$UART_EEPROM.c$150$4_0$16 ==.
;	UART-EEPROM.c:150: RX1_Cnt  = 0;   //清除字节数
	mov	dptr,#_RX1_Cnt
	mov	a,#0x00
	movx	@dptr,a
	ljmp	00138$
00148$:
	C$UART_EEPROM.c$154$1_0$13 ==.
;	UART-EEPROM.c:154: }
	C$UART_EEPROM.c$154$1_0$13 ==.
	XG$main$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'delay_ms'
;------------------------------------------------------------
;ms                        Allocated with name '_delay_ms_ms_10000_29'
;i                         Allocated with name '_delay_ms_i_10000_30'
;------------------------------------------------------------
	G$delay_ms$0$0 ==.
	C$UART_EEPROM.c$165$1_0$30 ==.
;	UART-EEPROM.c:165: void delay_ms(u8 ms)
;	-----------------------------------------
;	 function delay_ms
;	-----------------------------------------
_delay_ms:
	mov	a,dpl
	mov	dptr,#_delay_ms_ms_10000_29
	movx	@dptr,a
	C$UART_EEPROM.c$168$1_0$30 ==.
;	UART-EEPROM.c:168: do{
00104$:
	C$UART_EEPROM.c$169$2_0$31 ==.
;	UART-EEPROM.c:169: i = MAIN_Fosc / 6000;
	mov	dptr,#_delay_ms_i_10000_30
	mov	a,#0x66
	movx	@dptr,a
	mov	a,#0x0e
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$170$2_0$31 ==.
;	UART-EEPROM.c:170: while(--i);
00101$:
	mov	dptr,#_delay_ms_i_10000_30
	movx	a,@dptr
	add	a,#0xff
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	addc	a,#0xff
	mov	r7,a
	mov	dptr,#_delay_ms_i_10000_30
	mov	a,r6
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
	mov	dptr,#_delay_ms_i_10000_30
	movx	a,@dptr
	mov	b,a
	inc	dptr
	movx	a,@dptr
	orl	a,b
	jz	00127$
	ljmp	00101$
00127$:
	C$UART_EEPROM.c$171$1_0$30 ==.
;	UART-EEPROM.c:171: }while(--ms);
	mov	dptr,#_delay_ms_ms_10000_29
	movx	a,@dptr
	dec	a
	movx	@dptr,a
	movx	a,@dptr
	jz	00128$
	ljmp	00104$
00128$:
00107$:
	C$UART_EEPROM.c$172$1_0$30 ==.
;	UART-EEPROM.c:172: }
	C$UART_EEPROM.c$172$1_0$30 ==.
	XG$delay_ms$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'CheckData'
;------------------------------------------------------------
;dat                       Allocated with name '_CheckData_dat_10000_32'
;------------------------------------------------------------
	G$CheckData$0$0 ==.
	C$UART_EEPROM.c$181$1_0$33 ==.
;	UART-EEPROM.c:181: u8 CheckData(u8 dat)
;	-----------------------------------------
;	 function CheckData
;	-----------------------------------------
_CheckData:
	mov	a,dpl
	mov	dptr,#_CheckData_dat_10000_32
	movx	@dptr,a
	C$UART_EEPROM.c$183$1_0$33 ==.
;	UART-EEPROM.c:183: if((dat >= '0') && (dat <= '9'))        return (dat-'0');
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x30,00133$
00133$:
	jnc	00134$
	ljmp	00102$
00134$:
	mov	dptr,#_CheckData_dat_10000_32
	movx	a,@dptr
	mov	r7,a
	clr	c
	mov	a,#0x39
	subb	a,r7
	jnc	00135$
	ljmp	00102$
00135$:
	mov	dptr,#_CheckData_dat_10000_32
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a,#0xd0
	mov	r7,a
	mov	dpl, r7
	ljmp	00107$
00102$:
	C$UART_EEPROM.c$184$1_0$33 ==.
;	UART-EEPROM.c:184: if((dat >= 'A') && (dat <= 'F'))        return (dat-'A'+10);
	mov	dptr,#_CheckData_dat_10000_32
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x41,00136$
00136$:
	jnc	00137$
	ljmp	00105$
00137$:
	mov	dptr,#_CheckData_dat_10000_32
	movx	a,@dptr
	mov	r7,a
	clr	c
	mov	a,#0x46
	subb	a,r7
	jnc	00138$
	ljmp	00105$
00138$:
	mov	dptr,#_CheckData_dat_10000_32
	movx	a,@dptr
	mov	r7,a
	mov	a,#0xc9
	add	a, r7
	mov	r7,a
	mov	dpl, r7
	ljmp	00107$
00105$:
	C$UART_EEPROM.c$185$1_0$33 ==.
;	UART-EEPROM.c:185: return 0xff;
	mov	dpl, #0xff
00107$:
	C$UART_EEPROM.c$186$1_0$33 ==.
;	UART-EEPROM.c:186: }
	C$UART_EEPROM.c$186$1_0$33 ==.
	XG$CheckData$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'GetAddress'
;------------------------------------------------------------
;address                   Allocated with name '_GetAddress_address_10000_35'
;i                         Allocated with name '_GetAddress_i_10000_35'
;j                         Allocated with name '_GetAddress_j_10000_35'
;------------------------------------------------------------
	G$GetAddress$0$0 ==.
	C$UART_EEPROM.c$195$1_0$35 ==.
;	UART-EEPROM.c:195: u32 GetAddress(void)
;	-----------------------------------------
;	 function GetAddress
;	-----------------------------------------
_GetAddress:
	C$UART_EEPROM.c$200$1_0$35 ==.
;	UART-EEPROM.c:200: address = 0;
	mov	dptr,#_GetAddress_address_10000_35
	mov	a,#0x00
	movx	@dptr,a
	inc	dptr
	movx	@dptr,a
	inc	dptr
	movx	@dptr,a
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$201$1_0$35 ==.
;	UART-EEPROM.c:201: if((RX1_Buffer[2] == '0') && (RX1_Buffer[3] == 'X'))
	mov	dptr,#(_RX1_Buffer + 0x0002)
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x30,00141$
	sjmp	00142$
00141$:
	ljmp	00105$
00142$:
	mov	dptr,#(_RX1_Buffer + 0x0003)
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x58,00143$
	sjmp	00144$
00143$:
	ljmp	00105$
00144$:
	C$UART_EEPROM.c$203$3_0$37 ==.
;	UART-EEPROM.c:203: for(i=4; i<10; i++)
	mov	dptr,#_GetAddress_i_10000_35
	mov	a,#0x04
	movx	@dptr,a
00107$:
	C$UART_EEPROM.c$205$4_0$38 ==.
;	UART-EEPROM.c:205: j = CheckData(RX1_Buffer[i]);
	mov	dptr,#_GetAddress_i_10000_35
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_RX1_Buffer
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	dph,a
	movx	a,@dptr
	mov	r7,a
	mov	dpl, r7
	lcall	_CheckData
	mov	r7, dpl
	mov	dptr,#_GetAddress_j_10000_35
	mov	a,r7
	movx	@dptr,a
	C$UART_EEPROM.c$206$4_0$38 ==.
;	UART-EEPROM.c:206: if(j >= 0x10)   return 0xffffffff;   //error
	cjne	r7,#0x10,00145$
00145$:
	jnc	00146$
	ljmp	00102$
00146$:
	mov	dpl, #0xff
	mov	dph, #0xff
	mov	b, #0xff
	mov	a, #0xff
	ljmp	00109$
00102$:
	C$UART_EEPROM.c$207$4_0$38 ==.
;	UART-EEPROM.c:207: address = (address << 4) + j;
	mov	dptr,#_GetAddress_address_10000_35
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	swap	a
	anl	a,#0xf0
	xch	a,r6
	swap	a
	xch	a,r6
	xrl	a,r6
	xch	a,r6
	anl	a,#0xf0
	xch	a,r6
	xrl	a,r6
	mov	r7,a
	mov	a,r5
	swap	a
	anl	a,#0x0f
	orl	a,r6
	mov	r6,a
	mov	a,r5
	swap	a
	anl	a,#0xf0
	xch	a,r4
	swap	a
	xch	a,r4
	xrl	a,r4
	xch	a,r4
	anl	a,#0xf0
	xch	a,r4
	xrl	a,r4
	mov	r5,a
	mov	dptr,#_GetAddress_j_10000_35
	movx	a,@dptr
	mov	r3,a
	mov	ar0,r3
	mov	r1,#0x00
	mov	r2,#0x00
	mov	r3,#0x00
	mov	dptr,#_GetAddress_address_10000_35
	mov	a,r0
	add	a, r4
	movx	@dptr,a
	mov	a,r1
	addc	a, r5
	inc	dptr
	movx	@dptr,a
	mov	a,r2
	addc	a, r6
	inc	dptr
	movx	@dptr,a
	mov	a,r3
	addc	a, r7
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$203$3_0$37 ==.
;	UART-EEPROM.c:203: for(i=4; i<10; i++)
	mov	dptr,#_GetAddress_i_10000_35
	movx	a,@dptr
	add	a, #0x01
	movx	@dptr,a
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x0a,00147$
00147$:
	jnc	00148$
	ljmp	00107$
00148$:
	C$UART_EEPROM.c$209$2_0$36 ==.
;	UART-EEPROM.c:209: return (address);
	mov	dptr,#_GetAddress_address_10000_35
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dpl, r4
	mov	dph, r5
	mov	b, r6
	mov	a, r7
	ljmp	00109$
00105$:
	C$UART_EEPROM.c$211$1_0$35 ==.
;	UART-EEPROM.c:211: return  0xffffffff;  //error
	mov	dpl, #0xff
	mov	dph, #0xff
	mov	b, #0xff
	mov	a, #0xff
00109$:
	C$UART_EEPROM.c$212$1_0$35 ==.
;	UART-EEPROM.c:212: }
	C$UART_EEPROM.c$212$1_0$35 ==.
	XG$GetAddress$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'GetDataLength'
;------------------------------------------------------------
;i                         Allocated with name '_GetDataLength_i_10000_40'
;length                    Allocated with name '_GetDataLength_length_10000_40'
;------------------------------------------------------------
	G$GetDataLength$0$0 ==.
	C$UART_EEPROM.c$215$1_0$40 ==.
;	UART-EEPROM.c:215: u8 GetDataLength(void)
;	-----------------------------------------
;	 function GetDataLength
;	-----------------------------------------
_GetDataLength:
	C$UART_EEPROM.c$220$1_0$40 ==.
;	UART-EEPROM.c:220: length = 0;
	mov	dptr,#_GetDataLength_length_10000_40
	mov	a,#0x00
	movx	@dptr,a
	C$UART_EEPROM.c$221$2_0$41 ==.
;	UART-EEPROM.c:221: for(i=11; i<RX1_Cnt; i++)
	mov	dptr,#_GetDataLength_i_10000_40
	mov	a,#0x0b
	movx	@dptr,a
00105$:
	mov	dptr,#_GetDataLength_i_10000_40
	movx	a,@dptr
	mov	r7,a
	mov	dptr,#_RX1_Cnt
	movx	a,@dptr
	mov	r6,a
	clr	c
	mov	a,r7
	subb	a,r6
	jc	00127$
	ljmp	00103$
00127$:
	C$UART_EEPROM.c$223$3_0$42 ==.
;	UART-EEPROM.c:223: if(CheckData(RX1_Buffer[i]) >= 10)  break;
	mov	dptr,#_GetDataLength_i_10000_40
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_RX1_Buffer
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	dph,a
	movx	a,@dptr
	mov	r7,a
	mov	dpl, r7
	lcall	_CheckData
	mov	r7, dpl
	cjne	r7,#0x0a,00128$
00128$:
	jc	00129$
	ljmp	00103$
00129$:
	C$UART_EEPROM.c$224$3_0$42 ==.
;	UART-EEPROM.c:224: length = length * 10 + CheckData(RX1_Buffer[i]);
	mov	dptr,#_GetDataLength_length_10000_40
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	mov	b,#0x0a
	mul	ab
	mov	r7,a
	mov	dptr,#_GetDataLength_i_10000_40
	movx	a,@dptr
	mov	r6,a
	mov	a,r6
	add	a, #_RX1_Buffer
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	dph,a
	movx	a,@dptr
	mov	r5,a
	mov	dpl, r5
	push	ar7
	push	ar6
	lcall	_CheckData
	mov	r5, dpl
	pop	ar6
	pop	ar7
	mov	dptr,#_GetDataLength_length_10000_40
	mov	a,r5
	add	a, r7
	movx	@dptr,a
	C$UART_EEPROM.c$221$2_0$41 ==.
;	UART-EEPROM.c:221: for(i=11; i<RX1_Cnt; i++)
	mov	dptr,#_GetDataLength_i_10000_40
	mov	a,r6
	inc	a
	movx	@dptr,a
	ljmp	00105$
00103$:
	C$UART_EEPROM.c$226$1_0$40 ==.
;	UART-EEPROM.c:226: return (length);
	mov	dptr,#_GetDataLength_length_10000_40
	movx	a,@dptr
	mov	r7,a
	mov	dpl, r7
00107$:
	C$UART_EEPROM.c$227$1_0$40 ==.
;	UART-EEPROM.c:227: }
	C$UART_EEPROM.c$227$1_0$40 ==.
	XG$GetDataLength$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'UART1_TxByte'
;------------------------------------------------------------
;dat                       Allocated with name '_UART1_TxByte_dat_10000_43'
;------------------------------------------------------------
	G$UART1_TxByte$0$0 ==.
	C$UART_EEPROM.c$237$1_0$44 ==.
;	UART-EEPROM.c:237: void UART1_TxByte(u8 dat)
;	-----------------------------------------
;	 function UART1_TxByte
;	-----------------------------------------
_UART1_TxByte:
	mov	a,dpl
	mov	dptr,#_UART1_TxByte_dat_10000_43
	movx	@dptr,a
	C$UART_EEPROM.c$239$1_0$44 ==.
;	UART-EEPROM.c:239: SBUF = dat;
	movx	a,@dptr
	mov	_SBUF,a
	C$UART_EEPROM.c$240$1_0$44 ==.
;	UART-EEPROM.c:240: B_TX1_Busy = 1;
;	assignBit
	setb	_B_TX1_Busy
	C$UART_EEPROM.c$241$1_0$44 ==.
;	UART-EEPROM.c:241: while(B_TX1_Busy);
00101$:
	jnb	_B_TX1_Busy,00112$
	ljmp	00101$
00112$:
00104$:
	C$UART_EEPROM.c$242$1_0$44 ==.
;	UART-EEPROM.c:242: }
	C$UART_EEPROM.c$242$1_0$44 ==.
	XG$UART1_TxByte$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'PrintString1'
;------------------------------------------------------------
;puts                      Allocated with name '_PrintString1_puts_10000_45'
;------------------------------------------------------------
	G$PrintString1$0$0 ==.
	C$UART_EEPROM.c$254$1_0$47 ==.
;	UART-EEPROM.c:254: void PrintString1(u8 *puts) //发送一个字符串
;	-----------------------------------------
;	 function PrintString1
;	-----------------------------------------
_PrintString1:
	mov	r7,b
	mov	r6,dph
	mov	a,dpl
	mov	dptr,#_PrintString1_puts_10000_45
	movx	@dptr,a
	mov	a,r6
	inc	dptr
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
00103$:
	C$UART_EEPROM.c$256$2_0$47 ==.
;	UART-EEPROM.c:256: for (; *puts != 0;  puts++) UART1_TxByte(*puts);    //遇到停止符0结束
	mov	dptr,#_PrintString1_puts_10000_45
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dpl,r5
	mov	dph,r6
	mov	b,r7
	lcall	__gptrget
	jnz	00119$
	ljmp	00105$
00119$:
	mov	dptr,#_PrintString1_puts_10000_45
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dpl,r5
	mov	dph,r6
	mov	b,r7
	lcall	__gptrget
	mov	r4,a
	mov	dpl, r4
	push	ar7
	push	ar6
	push	ar5
	lcall	_UART1_TxByte
	pop	ar5
	pop	ar6
	pop	ar7
	mov	dptr,#_PrintString1_puts_10000_45
	mov	a,#0x01
	add	a, r5
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r6
	inc	dptr
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
	ljmp	00103$
00105$:
	C$UART_EEPROM.c$257$2_0$47 ==.
;	UART-EEPROM.c:257: }
	C$UART_EEPROM.c$257$2_0$47 ==.
	XG$PrintString1$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'SetTimer2Baudraye'
;------------------------------------------------------------
;dat                       Allocated with name '_SetTimer2Baudraye_dat_10000_48'
;------------------------------------------------------------
	G$SetTimer2Baudraye$0$0 ==.
	C$UART_EEPROM.c$268$2_0$49 ==.
;	UART-EEPROM.c:268: void SetTimer2Baudraye(u16 dat)  // 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.
;	-----------------------------------------
;	 function SetTimer2Baudraye
;	-----------------------------------------
_SetTimer2Baudraye:
	mov	r7,dph
	mov	a,dpl
	mov	dptr,#_SetTimer2Baudraye_dat_10000_48
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$270$1_0$49 ==.
;	UART-EEPROM.c:270: AUXR&=~(1<<4);//Timerstop
	anl	_AUXR,#0xef
	C$UART_EEPROM.c$271$1_0$49 ==.
;	UART-EEPROM.c:271: AUXR&=~(1<<3);//Timer2setAsTimer
	anl	_AUXR,#0xf7
	C$UART_EEPROM.c$272$1_0$49 ==.
;	UART-EEPROM.c:272: AUXR |= (1<<2);  //Timer2 set as 1T mode
	orl	_AUXR,#0x04
	C$UART_EEPROM.c$273$1_0$49 ==.
;	UART-EEPROM.c:273: T2H = (u8)(dat / 256);
	mov	dptr,#_SetTimer2Baudraye_dat_10000_48
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	ar4,r7
	mov	r5,#0x00
	mov	_TH2,r4
	C$UART_EEPROM.c$274$1_0$49 ==.
;	UART-EEPROM.c:274: T2L = (u8)(dat % 256);
	mov	r7,#0x00
	mov	_TL2,r6
	C$UART_EEPROM.c$275$1_0$49 ==.
;	UART-EEPROM.c:275: IE2 = (IE2 & ~0x04) | (0 << 2);    //禁止中断
	anl	_IE2,#0xfb
	C$UART_EEPROM.c$276$1_0$49 ==.
;	UART-EEPROM.c:276: AUXR = (AUXR & ~0x10) | (1 << 4);    //Timer run enable
	mov	a,#0xef
	anl	a,_AUXR
	orl	a,#0x10
	mov	_AUXR,a
00101$:
	C$UART_EEPROM.c$277$1_0$49 ==.
;	UART-EEPROM.c:277: }
	C$UART_EEPROM.c$277$1_0$49 ==.
	XG$SetTimer2Baudraye$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'UART1_config'
;------------------------------------------------------------
;brt                       Allocated with name '_UART1_config_brt_10000_50'
;------------------------------------------------------------
	G$UART1_config$0$0 ==.
	C$UART_EEPROM.c$288$1_0$51 ==.
;	UART-EEPROM.c:288: void UART1_config(u8 brt)    // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
;	-----------------------------------------
;	 function UART1_config
;	-----------------------------------------
_UART1_config:
	mov	a,dpl
	mov	dptr,#_UART1_config_brt_10000_50
	movx	@dptr,a
	C$UART_EEPROM.c$291$1_0$51 ==.
;	UART-EEPROM.c:291: if(brt == 2)
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x02,00112$
	sjmp	00113$
00112$:
	ljmp	00102$
00113$:
	C$UART_EEPROM.c$293$2_0$52 ==.
;	UART-EEPROM.c:293: AUXR |= S1BRT;	//S1 BRT Use Timer2;
	orl	_AUXR,#0x01
	C$UART_EEPROM.c$294$2_0$52 ==.
;	UART-EEPROM.c:294: SetTimer2Baudraye((u16)Baudrate1);
	mov	dpl, #0xd0
	mov	dph, #0xff
	lcall	_SetTimer2Baudraye
	ljmp	00103$
00102$:
	C$UART_EEPROM.c$300$2_0$53 ==.
;	UART-EEPROM.c:300: TR1 = 0;
;	assignBit
	clr	_TR1
	C$UART_EEPROM.c$301$2_0$53 ==.
;	UART-EEPROM.c:301: AUXR&=~S1BRT;		//S1BRTUseTimer1;
	anl	_AUXR,#0xfe
	C$UART_EEPROM.c$302$2_0$53 ==.
;	UART-EEPROM.c:302: TMOD&=~(1<<6);		//Timer1setAsTimer
	anl	_TMOD,#0xbf
	C$UART_EEPROM.c$303$2_0$53 ==.
;	UART-EEPROM.c:303: AUXR |= (1<<6);		//Timer1 set as 1T mode
	orl	_AUXR,#0x40
	C$UART_EEPROM.c$304$2_0$53 ==.
;	UART-EEPROM.c:304: TMOD&=~0x30;//Timer1_16bitAutoReload;
	anl	_TMOD,#0xcf
	C$UART_EEPROM.c$305$2_0$53 ==.
;	UART-EEPROM.c:305: TH1 = (u8)(Baudrate1 / 256);
	mov	_TH1,#0xff
	C$UART_EEPROM.c$306$2_0$53 ==.
;	UART-EEPROM.c:306: TL1 = (u8)(Baudrate1 % 256);
	mov	_TL1,#0xd0
	C$UART_EEPROM.c$307$2_0$53 ==.
;	UART-EEPROM.c:307: ET1 = 0;    //禁止中断
;	assignBit
	clr	_ET1
	C$UART_EEPROM.c$308$2_0$53 ==.
;	UART-EEPROM.c:308: TR1 = 1;
;	assignBit
	setb	_TR1
00103$:
	C$UART_EEPROM.c$312$1_0$51 ==.
;	UART-EEPROM.c:312: SCON = (SCON & 0x3f) | 0x40;    //UART1模式, 0x00: 同步移位输出, 0x40: 8位数据,可变波特率, 0x80: 9位数据,固定波特率, 0xc0: 9位数据,可变波特率
	mov	a,_SCON
	anl	a,#0x3f
	orl	a,#0x40
	mov	_SCON,a
	C$UART_EEPROM.c$314$1_0$51 ==.
;	UART-EEPROM.c:314: ES  = 1;    //允许中断
;	assignBit
	setb	_ES
	C$UART_EEPROM.c$315$1_0$51 ==.
;	UART-EEPROM.c:315: REN = 1;    //允许接收
;	assignBit
	setb	_REN
	C$UART_EEPROM.c$316$1_0$51 ==.
;	UART-EEPROM.c:316: P_SW1 &= 0x3f;
	anl	_P_SW1,#0x3f
	C$UART_EEPROM.c$317$1_0$51 ==.
;	UART-EEPROM.c:317: P_SW1 |= 0x00;      //UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7, 0xC0: P4.3 P4.4
	mov	_P_SW1,_P_SW1
	C$UART_EEPROM.c$319$1_0$51 ==.
;	UART-EEPROM.c:319: B_TX1_Busy = 0;
;	assignBit
	clr	_B_TX1_Busy
	C$UART_EEPROM.c$320$1_0$51 ==.
;	UART-EEPROM.c:320: TX1_Cnt = 0;
	mov	dptr,#_TX1_Cnt
	mov	a,#0x00
	movx	@dptr,a
	C$UART_EEPROM.c$321$1_0$51 ==.
;	UART-EEPROM.c:321: RX1_Cnt = 0;
	mov	dptr,#_RX1_Cnt
	movx	@dptr,a
00104$:
	C$UART_EEPROM.c$322$1_0$51 ==.
;	UART-EEPROM.c:322: }
	C$UART_EEPROM.c$322$1_0$51 ==.
	XG$UART1_config$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'UART1_int'
;------------------------------------------------------------
	G$UART1_int$0$0 ==.
	C$UART_EEPROM.c$335$1_0$55 ==.
;	UART-EEPROM.c:335: INTERRUPT(UART1_int,UART1_VECTOR)
;	-----------------------------------------
;	 function UART1_int
;	-----------------------------------------
_UART1_int:
	push	acc
	push	b
	push	dpl
	push	dph
	push	ar7
	push	psw
	mov	psw,#0x00
	C$UART_EEPROM.c$337$1_0$55 ==.
;	UART-EEPROM.c:337: if(RI)
	jb	_RI,00127$
	ljmp	00104$
00127$:
	C$UART_EEPROM.c$339$2_0$56 ==.
;	UART-EEPROM.c:339: RI = 0;     //Clear Rx flag
;	assignBit
	clr	_RI
	C$UART_EEPROM.c$340$2_0$56 ==.
;	UART-EEPROM.c:340: RX1_Buffer[RX1_Cnt] = SBUF;
	mov	dptr,#_RX1_Cnt
	movx	a,@dptr
	mov	r7,a
	mov	a,r7
	add	a, #_RX1_Buffer
	mov	dpl,a
	mov	a,#0x00
	addc	a, #(_RX1_Buffer >> 8)
	mov	dph,a
	mov	a,_SBUF
	movx	@dptr,a
	C$UART_EEPROM.c$341$2_0$56 ==.
;	UART-EEPROM.c:341: if(++RX1_Cnt >= UART1_BUF_LENGTH)   RX1_Cnt = 0;
	mov	dptr,#_RX1_Cnt
	movx	a,@dptr
	add	a, #0x01
	movx	@dptr,a
	movx	a,@dptr
	mov	r7,a
	cjne	r7,#0x6f,00128$
00128$:
	jnc	00129$
	ljmp	00102$
00129$:
	mov	dptr,#_RX1_Cnt
	mov	a,#0x00
	movx	@dptr,a
00102$:
	C$UART_EEPROM.c$342$2_0$56 ==.
;	UART-EEPROM.c:342: RX1_TimeOut = 5;
	mov	dptr,#_RX1_TimeOut
	mov	a,#0x05
	movx	@dptr,a
00104$:
	C$UART_EEPROM.c$345$1_0$55 ==.
;	UART-EEPROM.c:345: if(TI)
	jb	_TI,00130$
	ljmp	00107$
00130$:
	C$UART_EEPROM.c$347$2_0$57 ==.
;	UART-EEPROM.c:347: TI = 0;     //Clear Tx flag
;	assignBit
	clr	_TI
	C$UART_EEPROM.c$348$2_0$57 ==.
;	UART-EEPROM.c:348: B_TX1_Busy = 0;
;	assignBit
	clr	_B_TX1_Busy
00107$:
	C$UART_EEPROM.c$350$1_0$55 ==.
;	UART-EEPROM.c:350: }
	pop	psw
	pop	ar7
	pop	dph
	pop	dpl
	pop	b
	pop	acc
	C$UART_EEPROM.c$350$1_0$55 ==.
	XG$UART1_int$0$0 ==.
	reti
;------------------------------------------------------------
;Allocation info for local variables in function 'DisableEEPROM'
;------------------------------------------------------------
	G$DisableEEPROM$0$0 ==.
	C$UART_EEPROM.c$374$1_0$59 ==.
;	UART-EEPROM.c:374: void DisableEEPROM(void)        //禁止访问EEPROM
;	-----------------------------------------
;	 function DisableEEPROM
;	-----------------------------------------
_DisableEEPROM:
	C$UART_EEPROM.c$376$1_0$59 ==.
;	UART-EEPROM.c:376: IAP_CONTR = 0;          //关闭 IAP 功能
	mov	_IAP_CONTR,#0x00
	C$UART_EEPROM.c$377$1_0$59 ==.
;	UART-EEPROM.c:377: IAP_CMD = 0;            //清除命令寄存器
	mov	_IAP_CMD,#0x00
	C$UART_EEPROM.c$378$1_0$59 ==.
;	UART-EEPROM.c:378: IAP_TRIG = 0;           //清除触发寄存器
	mov	_IAP_TRIG,#0x00
	C$UART_EEPROM.c$379$1_0$59 ==.
;	UART-EEPROM.c:379: IAP_ADDRE = 0xff;       //将地址设置到非 IAP 区域
	mov	_IAP_ADDRE,#0xff
	C$UART_EEPROM.c$380$1_0$59 ==.
;	UART-EEPROM.c:380: IAP_ADDRH = 0xff;       //将地址设置到非 IAP 区域
	mov	_IAP_ADDRH,#0xff
	C$UART_EEPROM.c$381$1_0$59 ==.
;	UART-EEPROM.c:381: IAP_ADDRL = 0xff;
	mov	_IAP_ADDRL,#0xff
00101$:
	C$UART_EEPROM.c$382$1_0$59 ==.
;	UART-EEPROM.c:382: }
	C$UART_EEPROM.c$382$1_0$59 ==.
	XG$DisableEEPROM$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'EEPROM_Trig'
;------------------------------------------------------------
	G$EEPROM_Trig$0$0 ==.
	C$UART_EEPROM.c$391$1_0$61 ==.
;	UART-EEPROM.c:391: void EEPROM_Trig(void)
;	-----------------------------------------
;	 function EEPROM_Trig
;	-----------------------------------------
_EEPROM_Trig:
	C$UART_EEPROM.c$393$1_0$61 ==.
;	UART-EEPROM.c:393: F0 = EA;    //保存全局中断
;	assignBit
	mov	c,_EA
	mov	_F0,c
	C$UART_EEPROM.c$394$1_0$61 ==.
;	UART-EEPROM.c:394: EA = 0;     //禁止中断, 避免触发命令无效
;	assignBit
	clr	_EA
	C$UART_EEPROM.c$395$1_0$61 ==.
;	UART-EEPROM.c:395: IAP_TRIG = 0x5A;
	mov	_IAP_TRIG,#0x5a
	C$UART_EEPROM.c$396$1_0$61 ==.
;	UART-EEPROM.c:396: IAP_TRIG = 0xA5;    //先送5AH，再送A5H到IAP触发寄存器，每次都需要如此
	mov	_IAP_TRIG,#0xa5
	C$UART_EEPROM.c$399$1_0$61 ==.
;	UART-EEPROM.c:399: _nop_();   //多级流水线的指令系统，触发命令后建议加4个NOP，保证IAP_DATA的数据完成准备
	NOP	
	C$UART_EEPROM.c$400$1_0$61 ==.
;	UART-EEPROM.c:400: _nop_();
	NOP	
	C$UART_EEPROM.c$401$1_0$61 ==.
;	UART-EEPROM.c:401: _nop_();
	NOP	
	C$UART_EEPROM.c$402$1_0$61 ==.
;	UART-EEPROM.c:402: _nop_();
	NOP	
	C$UART_EEPROM.c$403$1_0$61 ==.
;	UART-EEPROM.c:403: EA = F0;    //恢复全局中断
;	assignBit
	mov	c,_F0
	mov	_EA,c
00101$:
	C$UART_EEPROM.c$404$1_0$61 ==.
;	UART-EEPROM.c:404: }
	C$UART_EEPROM.c$404$1_0$61 ==.
	XG$EEPROM_Trig$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'EEPROM_SectorErase'
;------------------------------------------------------------
;EE_address                Allocated with name '_EEPROM_SectorErase_EE_address_10000_62'
;------------------------------------------------------------
	G$EEPROM_SectorErase$0$0 ==.
	C$UART_EEPROM.c$413$1_0$63 ==.
;	UART-EEPROM.c:413: void EEPROM_SectorErase(u32 EE_address)
;	-----------------------------------------
;	 function EEPROM_SectorErase
;	-----------------------------------------
_EEPROM_SectorErase:
	mov	r7,dpl
	mov	r6,dph
	mov	r5,b
	mov	r4,a
	mov	dptr,#_EEPROM_SectorErase_EE_address_10000_62
	mov	a,r7
	movx	@dptr,a
	mov	a,r6
	inc	dptr
	movx	@dptr,a
	mov	a,r5
	inc	dptr
	movx	@dptr,a
	mov	a,r4
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$415$1_0$63 ==.
;	UART-EEPROM.c:415: IAP_ENABLE();                       //设置等待时间，允许IAP操作，送一次就够
	mov	_IAP_CONTR,#0x80
	mov	_IAP_TPS,#0x16
	C$UART_EEPROM.c$416$1_0$63 ==.
;	UART-EEPROM.c:416: IAP_ERASE();                        //宏调用, 送扇区擦除命令，命令不需改变时，不需重新送命令
	mov	_IAP_CMD,#0x03
	C$UART_EEPROM.c$419$1_0$63 ==.
;	UART-EEPROM.c:419: IAP_ADDRE = (u8)(EE_address >> 16); //送扇区地址高字节（地址需要改变时才需重新送地址）
	mov	dptr,#_EEPROM_SectorErase_EE_address_10000_62
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	_IAP_ADDRE,r6
	C$UART_EEPROM.c$420$1_0$63 ==.
;	UART-EEPROM.c:420: IAP_ADDRH = (u8)(EE_address >> 8);  //送扇区地址中字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRH,r5
	C$UART_EEPROM.c$421$1_0$63 ==.
;	UART-EEPROM.c:421: IAP_ADDRL = (u8)EE_address;         //送扇区地址低字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRL,r4
	C$UART_EEPROM.c$422$1_0$63 ==.
;	UART-EEPROM.c:422: EEPROM_Trig();                      //触发EEPROM操作
	lcall	_EEPROM_Trig
	C$UART_EEPROM.c$423$1_0$63 ==.
;	UART-EEPROM.c:423: DisableEEPROM();                    //禁止EEPROM操作
	lcall	_DisableEEPROM
00101$:
	C$UART_EEPROM.c$424$1_0$63 ==.
;	UART-EEPROM.c:424: }
	C$UART_EEPROM.c$424$1_0$63 ==.
	XG$EEPROM_SectorErase$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'EEPROM_read_n'
;------------------------------------------------------------
;DataAddress               Allocated with name '_EEPROM_read_n_PARM_2'
;length                    Allocated with name '_EEPROM_read_n_PARM_3'
;EE_address                Allocated with name '_EEPROM_read_n_EE_address_10000_64'
;------------------------------------------------------------
	G$EEPROM_read_n$0$0 ==.
	C$UART_EEPROM.c$435$1_0$65 ==.
;	UART-EEPROM.c:435: void EEPROM_read_n(u32 EE_address,u8 *DataAddress,u8 length)
;	-----------------------------------------
;	 function EEPROM_read_n
;	-----------------------------------------
_EEPROM_read_n:
	mov	r7,dpl
	mov	r6,dph
	mov	r5,b
	mov	r4,a
	mov	dptr,#_EEPROM_read_n_EE_address_10000_64
	mov	a,r7
	movx	@dptr,a
	mov	a,r6
	inc	dptr
	movx	@dptr,a
	mov	a,r5
	inc	dptr
	movx	@dptr,a
	mov	a,r4
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$437$1_0$65 ==.
;	UART-EEPROM.c:437: IAP_ENABLE();                           //设置等待时间，允许IAP操作，送一次就够
	mov	_IAP_CONTR,#0x80
	mov	_IAP_TPS,#0x16
	C$UART_EEPROM.c$438$1_0$65 ==.
;	UART-EEPROM.c:438: IAP_READ();                             //送字节读命令，命令不需改变时，不需重新送命令
	mov	_IAP_CMD,#0x01
	C$UART_EEPROM.c$439$1_0$65 ==.
;	UART-EEPROM.c:439: do
00101$:
	C$UART_EEPROM.c$441$2_0$66 ==.
;	UART-EEPROM.c:441: IAP_ADDRE = (u8)(EE_address >> 16); //送地址高字节（地址需要改变时才需重新送地址）
	mov	dptr,#_EEPROM_read_n_EE_address_10000_64
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	_IAP_ADDRE,r6
	C$UART_EEPROM.c$442$2_0$66 ==.
;	UART-EEPROM.c:442: IAP_ADDRH = (u8)(EE_address >> 8);  //送地址中字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRH,r5
	C$UART_EEPROM.c$443$2_0$66 ==.
;	UART-EEPROM.c:443: IAP_ADDRL = (u8)EE_address;         //送地址低字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRL,r4
	C$UART_EEPROM.c$444$2_0$66 ==.
;	UART-EEPROM.c:444: EEPROM_Trig();                      //触发EEPROM操作
	push	ar7
	push	ar6
	push	ar5
	push	ar4
	lcall	_EEPROM_Trig
	pop	ar4
	pop	ar5
	pop	ar6
	pop	ar7
	C$UART_EEPROM.c$445$2_0$66 ==.
;	UART-EEPROM.c:445: *DataAddress = IAP_DATA;            //读出的数据送往
	mov	dptr,#_EEPROM_read_n_PARM_2
	movx	a,@dptr
	mov	r1,a
	inc	dptr
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
	mov	dpl,r1
	mov	dph,r2
	mov	b,r3
	mov	a,_IAP_DATA
	lcall	__gptrput
	C$UART_EEPROM.c$446$2_0$66 ==.
;	UART-EEPROM.c:446: EE_address++;
	mov	dptr,#_EEPROM_read_n_EE_address_10000_64
	mov	a,#0x01
	add	a, r4
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r5
	inc	dptr
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r6
	inc	dptr
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r7
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$447$2_0$66 ==.
;	UART-EEPROM.c:447: DataAddress++;
	mov	dptr,#_EEPROM_read_n_PARM_2
	mov	a,#0x01
	add	a, r1
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r2
	inc	dptr
	movx	@dptr,a
	mov	a,r3
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$448$1_0$65 ==.
;	UART-EEPROM.c:448: }while(--length);
	mov	dptr,#_EEPROM_read_n_PARM_3
	movx	a,@dptr
	dec	a
	movx	@dptr,a
	movx	a,@dptr
	jz	00118$
	ljmp	00101$
00118$:
	C$UART_EEPROM.c$450$1_0$65 ==.
;	UART-EEPROM.c:450: DisableEEPROM();
	lcall	_DisableEEPROM
00104$:
	C$UART_EEPROM.c$451$1_0$65 ==.
;	UART-EEPROM.c:451: }
	C$UART_EEPROM.c$451$1_0$65 ==.
	XG$EEPROM_read_n$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'EEPROM_write_n'
;------------------------------------------------------------
;DataAddress               Allocated with name '_EEPROM_write_n_PARM_2'
;length                    Allocated with name '_EEPROM_write_n_PARM_3'
;EE_address                Allocated with name '_EEPROM_write_n_EE_address_10000_67'
;i                         Allocated with name '_EEPROM_write_n_i_10000_68'
;j                         Allocated with name '_EEPROM_write_n_j_10000_68'
;p                         Allocated with name '_EEPROM_write_n_p_10000_68'
;------------------------------------------------------------
	G$EEPROM_write_n$0$0 ==.
	C$UART_EEPROM.c$463$1_0$68 ==.
;	UART-EEPROM.c:463: u8 EEPROM_write_n(u32 EE_address,u8 *DataAddress,u8 length)
;	-----------------------------------------
;	 function EEPROM_write_n
;	-----------------------------------------
_EEPROM_write_n:
	mov	r7,dpl
	mov	r6,dph
	mov	r5,b
	mov	r4,a
	mov	dptr,#_EEPROM_write_n_EE_address_10000_67
	mov	a,r7
	movx	@dptr,a
	mov	a,r6
	inc	dptr
	movx	@dptr,a
	mov	a,r5
	inc	dptr
	movx	@dptr,a
	mov	a,r4
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$469$1_0$68 ==.
;	UART-EEPROM.c:469: if(length == 0) return 1;   //长度为0错误
	mov	dptr,#_EEPROM_write_n_PARM_3
	movx	a,@dptr
	jz	00143$
	ljmp	00102$
00143$:
	mov	dpl, #0x01
	ljmp	00111$
00102$:
	C$UART_EEPROM.c$471$1_0$68 ==.
;	UART-EEPROM.c:471: IAP_ENABLE();                       //设置等待时间，允许IAP操作，送一次就够
	mov	_IAP_CONTR,#0x80
	mov	_IAP_TPS,#0x16
	C$UART_EEPROM.c$472$1_0$68 ==.
;	UART-EEPROM.c:472: i = length;
	mov	dptr,#_EEPROM_write_n_PARM_3
	movx	a,@dptr
	mov	dptr,#_EEPROM_write_n_i_10000_68
	movx	@dptr,a
	C$UART_EEPROM.c$473$1_0$68 ==.
;	UART-EEPROM.c:473: j = EE_address;
	mov	dptr,#_EEPROM_write_n_EE_address_10000_67
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dptr,#_EEPROM_write_n_j_10000_68
	mov	a,r4
	movx	@dptr,a
	mov	a,r5
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$474$1_0$68 ==.
;	UART-EEPROM.c:474: p = DataAddress;
	mov	dptr,#_EEPROM_write_n_PARM_2
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dptr,#_EEPROM_write_n_p_10000_68
	mov	a,r5
	movx	@dptr,a
	mov	a,r6
	inc	dptr
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$475$1_0$68 ==.
;	UART-EEPROM.c:475: IAP_WRITE();                            //宏调用, 送字节写命令
	mov	_IAP_CMD,#0x02
	C$UART_EEPROM.c$476$1_0$68 ==.
;	UART-EEPROM.c:476: do
00103$:
	C$UART_EEPROM.c$478$2_0$69 ==.
;	UART-EEPROM.c:478: IAP_ADDRE = (u8)(EE_address >> 16); //送地址高字节（地址需要改变时才需重新送地址）
	mov	dptr,#_EEPROM_write_n_EE_address_10000_67
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	_IAP_ADDRE,r6
	C$UART_EEPROM.c$479$2_0$69 ==.
;	UART-EEPROM.c:479: IAP_ADDRH = (u8)(EE_address >> 8);  //送地址中字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRH,r5
	C$UART_EEPROM.c$480$2_0$69 ==.
;	UART-EEPROM.c:480: IAP_ADDRL = (u8)EE_address;         //送地址低字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRL,r4
	C$UART_EEPROM.c$481$2_0$69 ==.
;	UART-EEPROM.c:481: IAP_DATA  = *DataAddress;           //送数据到IAP_DATA，只有数据改变时才需重新送
	mov	dptr,#_EEPROM_write_n_PARM_2
	movx	a,@dptr
	mov	r1,a
	inc	dptr
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
	mov	dpl,r1
	mov	dph,r2
	mov	b,r3
	lcall	__gptrget
	mov	_IAP_DATA,a
	C$UART_EEPROM.c$482$2_0$69 ==.
;	UART-EEPROM.c:482: EEPROM_Trig();                      //触发EEPROM操作
	push	ar7
	push	ar6
	push	ar5
	push	ar4
	push	ar3
	push	ar2
	push	ar1
	lcall	_EEPROM_Trig
	pop	ar1
	pop	ar2
	pop	ar3
	pop	ar4
	pop	ar5
	pop	ar6
	pop	ar7
	C$UART_EEPROM.c$483$2_0$69 ==.
;	UART-EEPROM.c:483: EE_address++;                       //下一个地址
	mov	dptr,#_EEPROM_write_n_EE_address_10000_67
	mov	a,#0x01
	add	a, r4
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r5
	inc	dptr
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r6
	inc	dptr
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r7
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$484$2_0$69 ==.
;	UART-EEPROM.c:484: DataAddress++;                      //下一个数据
	mov	dptr,#_EEPROM_write_n_PARM_2
	mov	a,#0x01
	add	a, r1
	movx	@dptr,a
	mov	a,#0x00
	addc	a, r2
	inc	dptr
	movx	@dptr,a
	mov	a,r3
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$485$1_0$68 ==.
;	UART-EEPROM.c:485: }while(--length);                       //直到结束
	mov	dptr,#_EEPROM_write_n_PARM_3
	movx	a,@dptr
	dec	a
	movx	@dptr,a
	movx	a,@dptr
	jz	00144$
	ljmp	00103$
00144$:
	C$UART_EEPROM.c$487$1_0$68 ==.
;	UART-EEPROM.c:487: EE_address = j;
	mov	dptr,#_EEPROM_write_n_j_10000_68
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dptr,#_EEPROM_write_n_EE_address_10000_67
	mov	a,r6
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
	mov	a,#0x00
	inc	dptr
	movx	@dptr,a
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$488$1_0$68 ==.
;	UART-EEPROM.c:488: length = i;
	mov	dptr,#_EEPROM_write_n_i_10000_68
	movx	a,@dptr
	mov	dptr,#_EEPROM_write_n_PARM_3
	movx	@dptr,a
	C$UART_EEPROM.c$489$1_0$68 ==.
;	UART-EEPROM.c:489: DataAddress = p;
	mov	dptr,#_EEPROM_write_n_p_10000_68
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dptr,#_EEPROM_write_n_PARM_2
	mov	a,r5
	movx	@dptr,a
	mov	a,r6
	inc	dptr
	movx	@dptr,a
	mov	a,r7
	inc	dptr
	movx	@dptr,a
	C$UART_EEPROM.c$490$1_0$68 ==.
;	UART-EEPROM.c:490: i = 0;
	mov	dptr,#_EEPROM_write_n_i_10000_68
	mov	a,#0x00
	movx	@dptr,a
	C$UART_EEPROM.c$491$1_0$68 ==.
;	UART-EEPROM.c:491: IAP_READ();                             //读N个字节并比较
	mov	_IAP_CMD,#0x01
	C$UART_EEPROM.c$492$1_0$68 ==.
;	UART-EEPROM.c:492: do
00108$:
	C$UART_EEPROM.c$494$2_0$70 ==.
;	UART-EEPROM.c:494: IAP_ADDRE = (u8)(EE_address >> 16); //送地址高字节（地址需要改变时才需重新送地址）
	mov	dptr,#_EEPROM_write_n_EE_address_10000_67
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	_IAP_ADDRE,r6
	C$UART_EEPROM.c$495$2_0$70 ==.
;	UART-EEPROM.c:495: IAP_ADDRH = (u8)(EE_address >> 8);  //送地址中字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRH,r5
	C$UART_EEPROM.c$496$2_0$70 ==.
;	UART-EEPROM.c:496: IAP_ADDRL = (u8)EE_address;         //送地址低字节（地址需要改变时才需重新送地址）
	mov	_IAP_ADDRL,r4
	C$UART_EEPROM.c$497$2_0$70 ==.
;	UART-EEPROM.c:497: EEPROM_Trig();                      //触发EEPROM操作
	lcall	_EEPROM_Trig
	C$UART_EEPROM.c$498$2_0$70 ==.
;	UART-EEPROM.c:498: if(*DataAddress != IAP_DATA)        //读出的数据与源数据比较
	mov	dptr,#_EEPROM_write_n_PARM_2
	movx	a,@dptr
	mov	r5,a
	inc	dptr
	movx	a,@dptr
	mov	r6,a
	inc	dptr
	movx	a,@dptr
	mov	r7,a
	mov	dpl,r5
	mov	dph,r6
	mov	b,r7
	lcall	__gptrget
	mov	r5,a
	mov	a,r5
	cjne	a,_IAP_DATA,00145$
	ljmp	00107$
00145$:
	C$UART_EEPROM.c$500$3_0$71 ==.
;	UART-EEPROM.c:500: i = 2;
	mov	dptr,#_EEPROM_write_n_i_10000_68
	mov	a,#0x02
	movx	@dptr,a
	C$UART_EEPROM.c$501$3_0$71 ==.
;	UART-EEPROM.c:501: break;
	ljmp	00110$
00107$:
	C$UART_EEPROM.c$503$2_0$70 ==.
;	UART-EEPROM.c:503: EE_address++;
	mov	dptr,#_EEPROM_write_n_EE_address_10000_67
	movx	a,@dptr
	add	a, #0x01
	movx	@dptr,a
	inc	dptr
	movx	a,@dptr
	addc	a, #0x00
	movx	@dptr,a
	inc	dptr
	movx	a,@dptr
	addc	a, #0x00
	movx	@dptr,a
	inc	dptr
	movx	a,@dptr
	addc	a, #0x00
	movx	@dptr,a
	C$UART_EEPROM.c$504$2_0$70 ==.
;	UART-EEPROM.c:504: DataAddress++;
	mov	dptr,#_EEPROM_write_n_PARM_2
	movx	a,@dptr
	add	a, #0x01
	movx	@dptr,a
	inc	dptr
	movx	a,@dptr
	addc	a, #0x00
	movx	@dptr,a
	C$UART_EEPROM.c$505$1_0$68 ==.
;	UART-EEPROM.c:505: }while(--length);
	mov	dptr,#_EEPROM_write_n_PARM_3
	movx	a,@dptr
	dec	a
	movx	@dptr,a
	movx	a,@dptr
	jz	00146$
	ljmp	00108$
00146$:
00110$:
	C$UART_EEPROM.c$507$1_0$68 ==.
;	UART-EEPROM.c:507: DisableEEPROM();
	lcall	_DisableEEPROM
	C$UART_EEPROM.c$508$1_0$68 ==.
;	UART-EEPROM.c:508: return i;
	mov	dptr,#_EEPROM_write_n_i_10000_68
	movx	a,@dptr
	mov	r7,a
	mov	dpl, r7
00111$:
	C$UART_EEPROM.c$509$1_0$68 ==.
;	UART-EEPROM.c:509: }
	C$UART_EEPROM.c$509$1_0$68 ==.
	XG$EEPROM_write_n$0$0 ==.
	ret
	.area CSEG    (CODE)
	.area CONST   (CODE)
FUART_EEPROM$__str_0$0_0$0 == .
	.area CONST   (CODE)
___str_0:
	.ascii "AI8051U"
	.db 0xcf
	.db 0xb5
	.db 0xc1
	.db 0xd0
	.db 0xb5
	.db 0xa5
	.db 0xc6
	.db 0xac
	.db 0xbb
	.db 0xfa
	.ascii "EEPROM"
	.db 0xb2
	.db 0xe2
	.db 0xca
	.db 0xd4
	.db 0xb3
	.db 0xcc
	.db 0xd0
	.db 0xf2
	.db 0xa3
	.db 0xac
	.db 0xb4
	.db 0xae
	.db 0xbf
	.db 0xda
	.db 0xc3
	.db 0xfc
	.db 0xc1
	.db 0xee
	.db 0xc9
	.db 0xe8
	.db 0xd6
	.db 0xc3
	.db 0xc8
	.db 0xe7
	.db 0xcf
	.db 0xc2
	.ascii ":"
	.db 0x0d
	.db 0x0a
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_1$0_0$0 == .
	.area CONST   (CODE)
___str_1:
	.ascii "W 0x000040 1234567890  --> "
	.db 0xb6
	.db 0xd4
	.ascii "0x000040"
	.db 0xb5
	.db 0xd8
	.db 0xd6
	.db 0xb7
	.db 0xd0
	.db 0xb4
	.db 0xc8
	.db 0xeb
	.db 0xd7
	.db 0xd6
	.db 0xb7
	.db 0xfb
	.ascii "1234567890."
	.db 0x0d
	.db 0x0a
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_2$0_0$0 == .
	.area CONST   (CODE)
___str_2:
	.ascii "R 0x000040 10          --> "
	.db 0xb6
	.db 0xd4
	.ascii "0x000040"
	.db 0xb5
	.db 0xd8
	.db 0xd6
	.db 0xb7
	.db 0xb6
	.db 0xc1
	.db 0xb3
	.db 0xf6
	.ascii "10"
	.db 0xb8
	.db 0xf6
	.db 0xd7
	.db 0xd6
	.db 0xbd
	.db 0xda
	.db 0xc4
	.db 0xda
	.db 0xc8
	.db 0xdd
	.ascii "."
	.db 0x0d
	.db 0x0a
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_3$0_0$0 == .
	.area CONST   (CODE)
___str_3:
	.db 0x0d
	.db 0x0a
	.db 0xd2
	.db 0xd1
	.db 0xd0
	.db 0xb4
	.db 0xc8
	.db 0xeb
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_4$0_0$0 == .
	.area CONST   (CODE)
___str_4:
	.db 0xd7
	.db 0xd6
	.db 0xbd
	.db 0xda
	.db 0xa3
	.db 0xa1
	.db 0x0d
	.db 0x0a
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_5$0_0$0 == .
	.area CONST   (CODE)
___str_5:
	.db 0x0d
	.db 0x0a
	.db 0xd0
	.db 0xb4
	.db 0xc8
	.db 0xeb
	.db 0xb4
	.db 0xed
	.db 0xce
	.db 0xf3
	.db 0xa3
	.db 0xa1
	.db 0x0d
	.db 0x0a
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_6$0_0$0 == .
	.area CONST   (CODE)
___str_6:
	.db 0x0d
	.db 0x0a
	.db 0xb6
	.db 0xc1
	.db 0xb3
	.db 0xf6
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_7$0_0$0 == .
	.area CONST   (CODE)
___str_7:
	.db 0xb8
	.db 0xf6
	.db 0xd7
	.db 0xd6
	.db 0xbd
	.db 0xda
	.db 0xc4
	.db 0xda
	.db 0xc8
	.db 0xdd
	.db 0xc8
	.db 0xe7
	.db 0xcf
	.db 0xc2
	.ascii ":"
	.db 0x0d
	.db 0x0a
	.db 0x00
	.area CSEG    (CODE)
FUART_EEPROM$__str_8$0_0$0 == .
	.area CONST   (CODE)
___str_8:
	.db 0x0d
	.db 0x0a
	.db 0xc3
	.db 0xfc
	.db 0xc1
	.db 0xee
	.db 0xb4
	.db 0xed
	.db 0xce
	.db 0xf3
	.db 0xa3
	.db 0xa1
	.db 0x0d
	.db 0x0a
	.db 0x00
	.area CSEG    (CODE)
	.area XINIT   (CODE)
	.area CABS    (ABS,CODE)
