📄 bank.c
字号:
#include "reg9e5.h"
#include "PubFunc.h"
#include <absacc.h>
#include "25lc320.h"
#define AppBankEnd 0x0400
void CopyUserProgram(void)
{
WORD data addr;
BYTE data i;
addr = 1024;
//Wait_25LC320_IDLE; //
EECSN=0;
SPI_DATA =_25LC320_READ; // Move read command to SPI data register
while((EXIF & 0x20) == 0x00);
EXIF &= ~0x20;
SPI_DATA =04; // Move hi address to SPI data register
while((EXIF & 0x20) == 0x00);
EXIF &= ~0x20;
SPI_DATA =00; // Move low address to SPI data register
while((EXIF & 0x20) == 0x00);
EXIF &= ~0x20;
do{
SPI_DATA = i; // Move byte to send to SPI data register
while((EXIF & 0x20) == 0x00); // Wait until SPI hs finished transmitting
XBYTE[addr-1024]=SPI_DATA;
EXIF &= ~0x20; // Clear SPI interrupt
addr++;
}while(addr<5024); //4096
EECSN=1;
#pragma asm
LJMP 0000H;
#pragma endasm
}
void SwitchToAppBank(void)
{
#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 = 0x03A0; //AppBank;
target = 0x0FA0; //Local;
while (source != AppBankEnd) {
XBYTE[target] = XBYTE[source];
target++;
source++;
}
#pragma asm
LJMP 0FA0H;
#pragma endasm
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -