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

📄 bank.src

📁 nrf9e5 nordic公司出品的带有无线发送接收的单片机的bootloader程序。支持xmodem下载
💻 SRC
字号:
; .\object\bank.SRC generated from: bank.c
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE bank.c ROM(SMALL) OPTIMIZE(1,SIZE) BROWSE DEBUG OBJECTEXTEND SRC(.\object\bank.SRC)

$NOMOD51

NAME	BANK

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
CKLFCON	DATA	0BFH
T0	BIT	080H.5
AC	BIT	0D0H.6
SPI_CTRL	DATA	0B3H
T1	BIT	080H.6
T2	BIT	090H.0
EA	BIT	0A8H.7
CD	BIT	0A0H.6
SPI_MISO	BIT	0A0H.2
SPI_MOSI	BIT	0A0H.1
AM	BIT	0A0H.7
HWREV	DATA	0FEH
IE	DATA	0A8H
DPH1	DATA	085H
DPL1	DATA	084H
DR	BIT	0A0H.5
EXF2	BIT	0C8H.6
ES	BIT	0A8H.4
IP	DATA	0B8H
RI	BIT	098H.0
INT0	BIT	080H.3
CY	BIT	0D0H.7
TI	BIT	098H.1
INT1	BIT	080H.4
RCAP2H	DATA	0CBH
PS	BIT	0B8H.4
SP	DATA	081H
OV	BIT	0D0H.2
CK_CTRL	DATA	0B6H
RCAP2L	DATA	0CAH
TICK_DV	DATA	0B5H
RSTREAS	DATA	0B1H
C_T2	BIT	0C8H.1
EWDI	BIT	0E8H.4
RCLK	BIT	0C8H.5
EXIF	DATA	091H
SPI_SCK	BIT	0A0H.0
TCLK	BIT	0C8H.4
P00	BIT	080H.0
P01	BIT	080H.1
SBUF	DATA	099H
PCON	DATA	087H
P02	BIT	080H.2
P03	BIT	080H.3
P04	BIT	080H.4
SCON	DATA	098H
P05	BIT	080H.5
PWDI	BIT	0F8H.4
TMOD	DATA	089H
TCON	DATA	088H
P06	BIT	080H.6
P07	BIT	080H.7
WDTI	BIT	0D8H.3
PWMDUTY	DATA	0AAH
IE0	BIT	088H.1
IE1	BIT	088H.3
TXEN	BIT	0A0H.4
P0_DIR	DATA	094H
P1_DIR	DATA	096H
B	DATA	0F0H
P0_ALT	DATA	095H
P1_ALT	DATA	097H
CP_RL2	BIT	0C8H.0
ACC	DATA	0E0H
SPICLK	DATA	0B4H
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
ET2	BIT	0A8H.5
TF1	BIT	088H.7
TF2	BIT	0C8H.7
RB8	BIT	098H.2
TH0	DATA	08CH
EX0	BIT	0A8H.0
IT0	BIT	088H.0
P0_DRV	DATA	093H
TH1	DATA	08DH
TB8	BIT	098H.3
EX1	BIT	0A8H.2
IT1	BIT	088H.2
REGX_CTRL	DATA	0ADH
TH2	DATA	0CDH
EX2	BIT	0E8H.0
P	BIT	0D0H.0
EX3	BIT	0E8H.1
SM0	BIT	098H.7
TL0	DATA	08AH
EX4	BIT	0E8H.2
SM1	BIT	098H.6
TL1	DATA	08BH
EX5	BIT	0E8H.3
SM2	BIT	098H.5
TL2	DATA	0CCH
EIE	DATA	0E8H
PT0	BIT	0B8H.1
PT1	BIT	0B8H.3
RS0	BIT	0D0H.3
PT2	BIT	0B8H.5
TR0	BIT	088H.4
RS1	BIT	0D0H.4
PWMCON	DATA	0A9H
EOC	BIT	0A0H.4
TR1	BIT	088H.6
TR2	BIT	0C8H.2
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
PX2	BIT	0F8H.0
PX3	BIT	0F8H.1
PX4	BIT	0F8H.2
DPH	DATA	083H
PX5	BIT	0F8H.3
EIP	DATA	0F8H
DPL	DATA	082H
EXEN2	BIT	0C8H.3
SMOD1	BIT	0D8H.7
REN	BIT	098H.4
TRX_CE	BIT	0A0H.5
T2CON	DATA	0C8H
DPS	DATA	086H
SPI_DATA	DATA	0B2H
MPAGE	DATA	092H
EECSN	BIT	090H.3
EICON	DATA	0D8H
CKCON	DATA	08EH
F0	BIT	0D0H.5
F1	BIT	0D0H.1
RACSN	BIT	0A0H.3
REGX_LSB	DATA	0ACH
REGX_MSB	DATA	0ABH
PSW	DATA	0D0H
?PR?CopyUserProgram?BANK                 SEGMENT CODE INBLOCK 
?DT?CopyUserProgram?BANK                 SEGMENT DATA 
?PR?SwitchToAppBank?BANK                 SEGMENT CODE INBLOCK 
?DT?SwitchToAppBank?BANK                 SEGMENT DATA 
	PUBLIC	SwitchToAppBank
	PUBLIC	CopyUserProgram

	RSEG  ?DT?CopyUserProgram?BANK
?CopyUserProgram?BYTE:
       addr?040:   DS   2
	ORG  2
          i?041:   DS   1

	RSEG  ?DT?SwitchToAppBank?BANK
?SwitchToAppBank?BYTE:
     source?142:   DS   2
	ORG  2
     target?143:   DS   2
; #include "reg9e5.h"
; #include "PubFunc.h"
; #include <absacc.h>
; #include "25lc320.h"
; 
; #define AppBankEnd	0x0400
; 
; 
; void CopyUserProgram(void)

	RSEG  ?PR?CopyUserProgram?BANK
CopyUserProgram:
	USING	0
			; SOURCE LINE # 9
; {
			; SOURCE LINE # 10
; 	WORD data addr; 
; 	BYTE data i;
; 	addr = 1024;
			; SOURCE LINE # 13
	MOV  	addr?040,#04H
	MOV  	addr?040+01H,#00H
; 	//Wait_25LC320_IDLE;				//
; 
; 	EECSN=0;
			; SOURCE LINE # 16
	CLR  	EECSN
; 	
; 	SPI_DATA =_25LC320_READ;				// Move read command to SPI data register
			; SOURCE LINE # 18
	MOV  	SPI_DATA,#03H
?C0001:
; 	while((EXIF & 0x20) == 0x00);
			; SOURCE LINE # 19
	MOV  	A,EXIF
	JNB  	ACC.5,?C0001
?C0002:
; 	EXIF &= ~0x20;
			; SOURCE LINE # 20
	ANL  	EXIF,#0DFH
; 	
; 	SPI_DATA =04;				// Move hi address to SPI data register
			; SOURCE LINE # 22
	MOV  	SPI_DATA,#04H
?C0003:
; 	while((EXIF & 0x20) == 0x00);
			; SOURCE LINE # 23
	MOV  	A,EXIF
	JNB  	ACC.5,?C0003
?C0004:
; 	EXIF &= ~0x20;
			; SOURCE LINE # 24
	ANL  	EXIF,#0DFH
; 	
; 	SPI_DATA =00;				// Move low address to SPI data register
			; SOURCE LINE # 26
	MOV  	SPI_DATA,#00H
?C0005:
; 	while((EXIF & 0x20) == 0x00);
			; SOURCE LINE # 27
	MOV  	A,EXIF
	JNB  	ACC.5,?C0005
?C0006:
; 	EXIF &= ~0x20;
			; SOURCE LINE # 28
	ANL  	EXIF,#0DFH
?C0009:
; 	
; 	do{
			; SOURCE LINE # 30
; 	SPI_DATA = i;					  // Move byte to send to SPI data register
			; SOURCE LINE # 31
	MOV  	SPI_DATA,i?041
?C0010:
; 	while((EXIF & 0x20) == 0x00);    // Wait until SPI hs finished transmitting
			; SOURCE LINE # 32
	MOV  	A,EXIF
	JNB  	ACC.5,?C0010
?C0011:
; 	XBYTE[addr-1024]=SPI_DATA;
			; SOURCE LINE # 33
	MOV  	R6,addr?040
	MOV  	R7,addr?040+01H
	CLR  	A
	ADD  	A,R7
	MOV  	DPL,A
	MOV  	A,#0FCH
	ADDC 	A,R6
	MOV  	DPH,A
	MOV  	A,SPI_DATA
	MOVX 	@DPTR,A
; 	EXIF &= ~0x20;                  // Clear SPI interrupt
			; SOURCE LINE # 34
	ANL  	EXIF,#0DFH
; 	addr++;
			; SOURCE LINE # 35
	INC  	addr?040+01H
	MOV  	A,addr?040+01H
	JNZ  	?C0016
	INC  	addr?040
?C0016:
; 	}while(addr<5024);			//4096
			; SOURCE LINE # 36
	CLR  	C
	MOV  	A,addr?040+01H
	SUBB 	A,#0A0H
	MOV  	A,addr?040
	SUBB 	A,#013H
	JC   	?C0009
; 	
;     EECSN=1;
			; SOURCE LINE # 38
	SETB 	EECSN
; 
; #pragma asm
; 	LJMP 0000H;
	  LJMP 0000H;
; #pragma endasm
; }
			; SOURCE LINE # 43
	RET  	
; END OF CopyUserProgram

; 
; void SwitchToAppBank(void)

	RSEG  ?PR?SwitchToAppBank?BANK
SwitchToAppBank:
	USING	0
			; SOURCE LINE # 45
; {
			; SOURCE LINE # 46
; #if 0
; #pragma asm
; 	;disable interrupt
; 	CLR		EA
; 	;
; 	MOV		DPS,#0
; 	MOV		DPTR,#Local
; 	MOV		DPS,#1
; 	MOV		DPTR,#AppBank
; 	;get Offset to start of user program
; 	INC		DPTR
; 	MOVX	A,@DPTR
; 	ADD		A,#LOW(AppBank)
; 	MOV		DPL1,A
; 	CLR		A
; 	ADDC	A,#HIGH(AppBank)
; 	MOV		DPH1,A
; 	
; CODE_LOADER:
; 	MOVX	A,@DPTR
; 	INC		DPTR
; 	
; 	MOV		DPS,#0
; 	MOVX	@DPTR,A
; 	INC		DPTR
; 	
; 	MOV		DPS,#1
; 	MOV		A,#HIGH(AppBankEnd)
; 	CJNE	A,DPH1,CODE_LOADER
; EXIT:	
; 	LJMP 0000H;
; #pragma endasm
; 
; #else
; 
; 	WORD data source;
; 	WORD data target;
; 	
; 	EA = 0;
			; SOURCE LINE # 85
	CLR  	EA
; 	source = 0x03A0;	//AppBank;
			; SOURCE LINE # 86
	MOV  	source?142,#03H
	MOV  	source?142+01H,#0A0H
; 	target = 0x0FA0;	//Local;
			; SOURCE LINE # 87
	MOV  	target?143,#0FH
	MOV  	target?143+01H,#0A0H
?C0013:
; 	
; 	while (source != AppBankEnd) {
			; SOURCE LINE # 89
	MOV  	A,source?142+01H
	XRL  	A,#00H
	JNZ  	?C0017
	MOV  	A,source?142
	XRL  	A,#04H
?C0017:
	JZ   	?C0014
; 		XBYTE[target] = XBYTE[source];
			; SOURCE LINE # 90
	MOV  	R6,source?142
	MOV  	R7,source?142+01H
	MOV  	DPL,R7
	MOV  	DPH,R6
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R4,target?143
	MOV  	R5,target?143+01H
	MOV  	DPL,R5
	MOV  	DPH,R4
	MOV  	A,R7
	MOVX 	@DPTR,A
; 		target++;
			; SOURCE LINE # 91
	INC  	target?143+01H
	MOV  	A,target?143+01H
	JNZ  	?C0018
	INC  	target?143
?C0018:
; 		source++;
			; SOURCE LINE # 92
	INC  	source?142+01H
	MOV  	A,source?142+01H
	JNZ  	?C0019
	INC  	source?142
?C0019:
; 	}
			; SOURCE LINE # 93
	SJMP 	?C0013
?C0014:
; 	
; 	
; #pragma asm
; 	LJMP 0FA0H;
	  LJMP 0FA0H;
; #pragma endasm
; #endif
; }
			; SOURCE LINE # 100
	RET  	
; END OF SwitchToAppBank

	END

⌨️ 快捷键说明

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