-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathflashcopy.asm
More file actions
129 lines (113 loc) · 2.52 KB
/
flashcopy.asm
File metadata and controls
129 lines (113 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
.org 0xff40
.equ DPS,0x92
.equ MPAGE,0x93
.equ FWT,0xab
.equ FADDRL,0xac
.equ FADDRH,0xad
.equ FLC,0xae
.equ FWDATA,0xaf
.equ U0CSR,0x86
.equ U0UCR,0xc4
.equ U0GCR,0xc5
.equ U0DBUF,0xc1
.equ U0BAUD,0xc2
.equ P0DIR,0xfd
.equ P0SEL,0xf3
.equ CLKCON,0xc6
; On entry DPTR is the flash destination byte address
; This is 1K page aligned, so can only be:
; 0x0000
; 0x0400
; 0x8000 etc.
mov FADDRL,#0
mov a,dph
rr a
mov FADDRH,a
; 76543210
mov CLKCON,#0b10001000 ; external crystal
mov FWT,#0x2a ; flash write timer
mov P0SEL, #0b00001100 ; UART0
mov U0CSR, #0b11000000 ; 8N1
mov U0UCR, #0b10000010
mov U0GCR, #12 ; 115200
mov U0BAUD,#34
acall cr
mov a,FADDRH
acall x2
mov MPAGE,#0xf0 ; MPAGE:r0 is RAM address
mov r0,#0
mov r2,#4
compare:
clr a
movc a,@a+dptr
mov r1,a
movx a,@r0
clr c
subb a,r1
jnz mismatch
inc dptr
inc r0
mov a,r0
jnz compare
inc MPAGE
djnz r2,compare
mov a,#0x3d
acall tx
.db 0xa5
mismatch:
mov a,#0x2a
acall tx
erasew0:mov a,FLC
jb acc.7,erasew0
mov FLC,#1 ; erase
nop
nop
erasew: mov a,FLC
jb acc.7,erasew
mov dptr,#0xf000
mov r1,#2
mov r0,#0
mov FLC,#2 ; write
nop
nop
write:
movx a,@dptr
inc dptr
mov FWDATA,a
movx a,@dptr
inc dptr
mov FWDATA,a
writew: mov a,FLC
jb acc.6,writew
djnz r0,write
djnz r1,write
.db 0xa5
cr:
mov a,#0x0a
acall tx
mov a,#0x0d
sjmp tx
x2:
push acc
rr a
rr a
rr a
rr a
acall x1
pop acc
acall x1
space:
mov a,#32
sjmp tx
x1:
anl a,#15
clr c
subb a,#0x0a
jc numeric
add a,#7
numeric: add a,#0x3a
tx:
mov U0DBUF,a
w: mov a,U0CSR
jb acc.0,w
ret