📄 write_page1.asm
字号:
; E:\file\htd30\asm\write_page.SRC generated from: E:\file\htd30\asm\write_page.c
; COMPILER INVOKED BY:
; E:\file\htd30\asm\KEIL\c51.exe E:\file\htd30\asm\write_page.c
$NOMOD51
NAME WRITE_PAGE
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
AC BIT 0D0H.6
T0 BIT 0B0H.4
T1 BIT 0B0H.5
EA BIT 0A8H.7
T2 BIT 090H.0
IE DATA 0A8H
P0_0 BIT 080H.0
P1_0 BIT 090H.0
P0_1 BIT 080H.1
FL BIT 0D0H.1
P2_0 BIT 0A0H.0
P1_1 BIT 090H.1
P0_2 BIT 080H.2
P3_0 BIT 0B0H.0
P2_1 BIT 0A0H.1
P1_2 BIT 090H.2
P0_3 BIT 080H.3
P3_1 BIT 0B0H.1
P2_2 BIT 0A0H.2
P1_3 BIT 090H.3
P0_4 BIT 080H.4
P3_2 BIT 0B0H.2
P2_3 BIT 0A0H.3
P1_4 BIT 090H.4
P0_5 BIT 080H.5
EXF2 BIT 0C8H.6
RD BIT 0B0H.7
P3_3 BIT 0B0H.3
P2_4 BIT 0A0H.4
P1_5 BIT 090H.5
P0_6 BIT 080H.6
P3_4 BIT 0B0H.4
P2_5 BIT 0A0H.5
P1_6 BIT 090H.6
P0_7 BIT 080H.7
P3_5 BIT 0B0H.5
ES BIT 0A8H.4
P2_6 BIT 0A0H.6
P1_7 BIT 090H.7
P3_6 BIT 0B0H.6
P2_7 BIT 0A0H.7
IP DATA 0B8H
P3_7 BIT 0B0H.7
RI BIT 098H.0
CY BIT 0D0H.7
INT0 BIT 0B0H.2
INT1 BIT 0B0H.3
TI BIT 098H.1
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
OV BIT 0D0H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
RCLK BIT 0C8H.5
TCLK BIT 0C8H.4
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
AUXR DATA 08EH
AUXR1 DATA 0A2H
B DATA 0F0H
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
SEL_OTHER BIT 090H.5
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
TH1 DATA 08DH
EX1 BIT 0A8H.2
TB8 BIT 098H.3
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
PT0 BIT 0B8H.1
RS0 BIT 0D0H.3
PT1 BIT 0B8H.3
RS1 BIT 0D0H.4
PT2 BIT 0B8H.5
TR0 BIT 088H.4
TR1 BIT 088H.6
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
EXEN2 BIT 0C8H.3
REN BIT 098H.4
T2MOD DATA 0C9H
T2CON DATA 0C8H
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?write_page?WRITE_PAGE SEGMENT CODE
?DT?write_page?WRITE_PAGE SEGMENT DATA OVERLAYABLE
EXTRN CODE (_write_flash_byte)
EXTRN IDATA (flash_high_add)
EXTRN DATA (mirror_377)
EXTRN XDATA (flash_buf)
EXTRN CODE (read_flash_srd)
EXTRN CODE (delay_50us)
; EXTRN IDATA (flash_low_add)
; EXTRN IDATA (flash_mid_add)
EXTRN DATA (low_word_flash)
EXTRN DATA (flash_address)
EXTRN BIT (ext_ram)
PUBLIC write_page
RSEG ?DT?write_page?WRITE_PAGE
?write_page?BYTE:
i?040: DS 1
temp?042: DS 1
address_flash?043: DS 2
; #pragma src
;
; //write flash page 1
; #include "at89x52.h"
; #include "keil\absacc.h"
; sfr AUXR=0x8e;
; #define sel_hc377 XBYTE[0xa000]
; #define set_extram AUXR|=0x02
; #define clr_extram AUXR&=0xfd
;
; #define uchar unsigned char
; #define uint unsigned int
; extern uchar idata flash_high_add;
; extern uchar idata flash_mid_add;
; extern uchar idata flash_low_add;
; extern uchar bdata mirror_377;
; extern uchar xdata flash_buf[128];
;
; extern bit ext_ram;
;
; sbit SEL_OTHER=P1^5;
;
; extern data union
; {
; uint flash_page;
; uchar flash_arr[2];
; struct
; {
; uchar page_MSB;
; uchar page_LSB;
; }flash_byte;
; }flash_address;
;
; extern void write_flash_byte(uchar write_byte);
; extern void delay_50us(void);
; extern uchar read_flash_srd(void);
; void write_page(void)
RSEG ?PR?write_page?WRITE_PAGE
write_page:
USING 0
; SOURCE LINE # 37
; {
; SOURCE LINE # 38
; uchar i,k,temp;
; data union
; {
; uchar target_byte[2];
; uint target_word;
; }address_flash;
; i=0;
; SOURCE LINE # 45
CLR A
MOV i?040,A
; temp=IE;
; SOURCE LINE # 46
MOV temp?042,IE
; EA=0;
; SOURCE LINE # 47
CLR EA
?C0001:
; while(i<128)
; SOURCE LINE # 48
MOV A,i?040
CLR C
SUBB A,#080H
JC $ + 5H
LJMP ?C0002
; {
; SOURCE LINE # 49
; flash_high_add=0;
; SOURCE LINE # 50
CLR A
MOV R0,#LOW (flash_high_add)
MOV @R0,A
; flash_mid_add=0xaa;
; SOURCE LINE # 51
; MOV R0,#LOW (flash_mid_add)
; MOV @R0,#0AAH
MOV low_word_flash,#0AAH
; flash_low_add=0xaa;
; SOURCE LINE # 52
; MOV R0,#LOW (flash_low_add)
; MOV @R0,#0AAH
MOV low_word_flash+01H,#0AAH
; write_flash_byte(0xaa);
; SOURCE LINE # 53
MOV R7,#0AAH
LCALL _write_flash_byte
; flash_high_add=0;
; SOURCE LINE # 54
CLR A
MOV R0,#LOW (flash_high_add)
MOV @R0,A
; flash_mid_add=0x55;
; SOURCE LINE # 55
; MOV R0,#LOW (flash_mid_add)
; MOV @R0,#055H
MOV low_word_flash,#55H
; flash_low_add=0x54;
; SOURCE LINE # 56
; MOV R0,#LOW (flash_low_add)
; MOV @R0,#054H
MOV low_word_flash+01H,#54H
; write_flash_byte(0x55);
; SOURCE LINE # 57
MOV R7,#055H
LCALL _write_flash_byte
; flash_high_add=0;
; SOURCE LINE # 58
CLR A
MOV R0,#LOW (flash_high_add)
MOV @R0,A
; flash_mid_add=0xaa;
; SOURCE LINE # 59
; MOV R0,#LOW (flash_mid_add)
; MOV @R0,#0AAH
MOV low_word_flash,#0AAH
; flash_low_add=0xaa;
; SOURCE LINE # 60
; MOV R0,#LOW (flash_low_add)
; MOV @R0,#0AAH
MOV low_word_flash+01H,#0AAH
; write_flash_byte(0xa0);
; SOURCE LINE # 61
MOV R7,#0A0H
LCALL _write_flash_byte
; flash_high_add=flash_address.flash_byte.page_MSB/2;
; SOURCE LINE # 62
MOV A,flash_address
CLR C
RRC A
MOV R0,#LOW (flash_high_add)
MOV @R0,A
; flash_mid_add=(flash_address.flash_byte.page_MSB<<7)+(flash_address.flash_byte.page_LSB/2);
; SOURCE LINE # 63
MOV A,flash_address
SWAP A
RLC A
RLC A
RLC A
ANL A,#080H
MOV R7,A
MOV A,flash_address+01H
CLR C
RRC A
ADD A,R7
; MOV R0,#LOW (flash_mid_add)
; MOV @R0,A
MOV low_word_flash,A
; flash_low_add=(flash_address.flash_byte.page_LSB<<7);
; SOURCE LINE # 64
MOV A,flash_address+01H
SWAP A
RLC A
RLC A
RLC A
ANL A,#080H
; MOV R0,#LOW (flash_low_add)
; MOV @R0,A
MOV low_word_flash+01H,A
; SEL_OTHER=1;
; SOURCE LINE # 65
; SETB SEL_OTHER
; mirror_377&=0xe0;
; SOURCE LINE # 66
ANL mirror_377,#0E0H
; mirror_377+=flash_high_add;
; SOURCE LINE # 67
MOV R0,#LOW (flash_high_add)
MOV A,@R0
ADD A,mirror_377
MOV mirror_377,A
; sel_hc377=mirror_377;
; SOURCE LINE # 68
MOV DPTR,#0A000H
MOVX @DPTR,A
; SEL_OTHER=0;
; SOURCE LINE # 69
; CLR SEL_OTHER
; address_flash.target_byte[0]=flash_mid_add;
; SOURCE LINE # 70
; MOV R0,#LOW (flash_mid_add)
; MOV A,@R0
MOV A,low_word_flash
MOV address_flash?043,A
; address_flash.target_byte[1]=flash_low_add;
; SOURCE LINE # 71
; MOV R0,#LOW (flash_low_add)
; MOV A,@R0
MOV A,low_word_flash+01H
MOV address_flash?043+01H,A
; ext_ram=0;
; SOURCE LINE # 72
CLR ext_ram
; address_flash.target_word+=i;
; SOURCE LINE # 73
MOV A,i?040
ADD A,address_flash?043+01H
MOV address_flash?043+01H,A
CLR A
ADDC A,address_flash?043
MOV address_flash?043,A
MOV A,#LOW (flash_buf) ;将DPTR的数值准备好,索引flash_buf
ADD A,i?040
MOV DPL,A
CLR A
ADDC A,#HIGH (flash_buf)
MOV DPH,A
INC AUXR1 ;切换到DPTR1,索引address_flash
MOV R4,address_flash?043
MOV R5,address_flash?043+01H
MOV DPL,R5
MOV DPH,R4
INC AUXR1 ;切换回DPTR
?C0003:
; while(i<128)
; SOURCE LINE # 74
MOV A,i?040
CLR C
SUBB A,#080H
JNC ?C0004
; {
; SOURCE LINE # 75
; k=flash_buf[i];
; SOURCE LINE # 76
MOVX A,@DPTR ;取出DPTR的指向的内容
INC DPTR ;DPTR地址自增
INC AUXR1 ;切换到DPTR1
; ORL AUXR,#02H
CLR SEL_OTHER
MOVX @DPTR,A ;放到DPTR1指向的地址
INC DPTR ;DPTR1地址自增
SETB SEL_OTHER
; clr_extram;
; SOURCE LINE # 83
; ANL AUXR,#0FDH
INC AUXR1 ;切换回DPTR
; EA=1;
; i++;
; SOURCE LINE # 85
INC i?040
; }
; SOURCE LINE # 86
SJMP ?C0003
?C0004:
; delay_100us();
; SOURCE LINE # 86
MOV IE,temp?042
LCALL delay_50us
?C0005:
; while(read_flash_srd()!=0x80)
; SOURCE LINE # 87
LCALL read_flash_srd
MOV A,R7
XRL A,#080H
JNZ $ + 5H
LJMP ?C0001
; {
; SOURCE LINE # 88
; }
; SOURCE LINE # 89
SJMP ?C0005
; }
; SOURCE LINE # 90
?C0002:
; IE=temp;
; SOURCE LINE # 91
MOV IE,temp?042
; } ; SOURCE LINE # 92
RET
; END OF write_page
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -