forked from Clownacy/asl-releases
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathregstm8.inc
165 lines (150 loc) · 6.94 KB
/
regstm8.inc
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
ifndef __regstm8inc ; avoid multiple inclusion
__regstm8inc equ 1
save
listing off ; no listing over this file
;****************************************************************************
;* *
;* AS 1.42 - File REGSTM8.INC *
;* *
;* contains SFR and Bit Definitions for STM8 Processors *
;* *
;****************************************************************************
;----------------------------------------------------------------------------
; General Macros
bfield macro {INTLABEL},reg,start,count
__LABEL__ equ ((1<<(count+start))-1)-((1<<start)-1)
endm
__decstr macro DEST,SRC
if (SRC)<10
DEST set "\{SRC}"
elseif
DEST set "\{(SRC)/10}\{(SRC)#10}"
endif
endm
__dec02str macro DEST,SRC
DEST set "\{(SRC)/10}\{(SRC)#10}"
endm
;----------------------------------------------------------------------------
; Include proper CPU-specific register definitions
switch MOMCPUNAME
case "STM8S001J3"
include "stm8/stm8s/reg001j3.inc"
case "STM8S003F3","STM8S003K3"
include "stm8/stm8s/reg003f3.inc"
case "STM8S005C6","STM8S005K6"
include "stm8/stm8s/reg005c6.inc"
case "STM8S007C8"
include "stm8/stm8s/reg007c8.inc"
case "STM8S103F2","STM8S103F3","STM8S103K3"
include "stm8/stm8s/reg103f3.inc"
case "STM8S105C4","STM8S105C6","STM8S105K4","STM8S105K6","STM8S105S4","STM8S105S6"
include "stm8/stm8s/reg105c6.inc"
case "STM8S207MB","STM8S207M8","STM8S207RB","STM8S207R8","STM8S207R6","STM8S207CB","STM8S207C8","STM8S207C6","STM8S207SB","STM8S207S8","STM8S207S6","STM8S207K8","STM8S207K6"
include "stm8/stm8s/reg207mb.inc"
case "STM8S208MB","STM8S208RB","STM8S208R8","STM8S208R6","STM8S208CB","STM8S208C8","STM8S208C6","STM8S208SB","STM8S208S8","STM8S208S6"
include "stm8/stm8s/reg208mb.inc"
case "STM8S903K3","STM8S903F3"
include "stm8/stm8s/reg903f3.inc"
case "STM8L050J3"
include "stm8/stm8l/reg050j3.inc"
case "STM8L051F3"
include "stm8/stm8l/reg051f3.inc"
case "STM8L052C6"
include "stm8/stm8l/reg052c6.inc"
case "STM8L052R8"
include "stm8/stm8l/reg052r8.inc"
case "STM8L001J3"
include "stm8/stm8l/reg001j3.inc"
case "STM8L101F1","STM8L101F2","STM8L101G2","STM8L101F3","STM8L101G3","STM8L101K3"
include "stm8/stm8l/reg101xx.inc"
case "STM8L151C2","STM8L151K2","STM8L151G2","STM8L151F2","STM8L151C3","STM8L151K3","STM8L151G3","STM8L151F3"
include "stm8/stm8l/reg151xx.inc"
case "STM8L151C4","STM8L151C6","STM8L151K4","STM8L151K6","STM8L151G4","STM8L151G6"
include "stm8/stm8l/reg151x4.inc"
case "STM8L152C4","STM8L152C6","STM8L152K4","STM8L152K6"
include "stm8/stm8l/reg152x4.inc"
case "STM8L151R6","STM8L151C8","STM8L151M8","STM8L151R8"
include "stm8/stm8l/reg151x8.inc"
case "STM8L152R6","STM8L152C8","STM8L152K8","STM8L152M8","STM8L152R8"
include "stm8/stm8l/reg152x8.inc"
case "STM8L162M8","STM8L162R8"
include "stm8/stm8l/reg162x8.inc"
case "STM8AF6366"
include "stm8/stm8af/reg6366.inc"
case "STM8AF6388"
include "stm8/stm8af/reg6388.inc"
case "STM8AF6226","STM8AF6223","STM8AF6213"
include "stm8/stm8af/reg62x3.inc"
case "STM8AF6246","STM8AF6248","STM8AF6266","STM8AF6268"
include "stm8/stm8af/reg62x6.inc"
case "STM8AF6269","STM8AF6286","STM8AF6288","STM8AF6289","STM8AF628A","STM8AF62A6","STM8AF62A8","STM8AF62A9","STM8AF62AA"
include "stm8/stm8af/reg62x9.inc"
case "STM8AF5268","STM8AF5269","STM8AF5286","STM8AF5288","STM8AF5289","STM8AF528A","STM8AF52A6","STM8AF52A8","STM8AF52A9","STM8AF52AA"
include "stm8/stm8af/reg52x9.inc"
case "STM8AL3136","STM8AL3138","STM8AL3146","STM8AL3148","STM8AL3166","STM8AL3168"
include "stm8/stm8al/reg31x6.inc"
case "STM8AL3L46","STM8AL3L48","STM8AL3L66","STM8AL3L68"
include "stm8/stm8al/reg3lx6.inc"
case "STM8AL3188","STM8AL3189","STM8AL318A"
include "stm8/stm8al/reg31x8.inc"
case "STM8AL3L88","STM8AL3L89","STM8AL3L8A"
include "stm8/stm8al/reg3lx8.inc"
case "STM8TL52F4", "STM8TL52G4", "STM8TL53C4", "STM8TL53F4", "STM8TL53G4"
include "stm8/stm8t/reg05xx4.inc"
elsecase
error "wrong processor type set: only STM8S001J3, STM8S003F3, STM8S003K3, STM8S005C6, STM8S005K6, STM8S007C8, STM8S103F2, STM8S103F3,STM8S103K3,"
error "STM8S105C4, STM8S105C6, STM8S105K4, STM8S105K6, STM8S105S4, STM8S105S6, STM8L050J3, STM8L051F3, STM8L052C6, STM8L052R8, STM8L001J3,"
error "STM8L101F1, STM8L101F2, STM8L101G2, STM8L101F3, STM8L101G3, STM8L101K3, STM8L151C2, STM8L151K2, STM8L151G2, STM8L151F2, STM8L151C3,"
error "STM8L151K3, STM8L151G3, STM8L151F3, STM8L162M8, STM8L162R8, STM8AF6366, STM8AF6388, STM8AF6213, STM8AF6223, STM8AF6226, STM8AF6246,"
error "STM8AF6248, STM8AF6266, STM8AF6268, STM8AF6269, STM8AF6286, STM8AF6288, STM8AF6289, STM8AF628A, STM8AF62A6, STM8AF62A8, STM8AF62A9,"
error "STM8AF62AA, STM8AF5268, STM8AF5269, STM8AF5286, STM8AF5288, STM8AF5289, STM8AF528A, STM8AF52A6, STM8AF52A8, STM8AF52A9, STM8AF52AA,"
fatal "STM8TL52F4, STM8TL52G4, STM8TL53C4, STM8TL53F4, STM8TL53G4 allowed!"
endcase
if MOMPASS=1
message "STM8 Register Definitions (C) 2019 Alfred Arnold"
endif
;----------------------------------------------------------------------------
; Post Processing
; Flash Size can usually be deduced from the part number:
ifndef FLASHEND
if substr(MOMCPUNAME,4,1)=="A" ; automotive
switch substr(MOMCPUNAME,8,1)
case "1" ; '1' -> 4K
FLASHEND label FLASHSTART+$0fff
case "2","3" ; '2/3' -> 8K
FLASHEND label FLASHSTART+$1fff
case "4" ; '4' -> 16K
FLASHEND label FLASHSTART+$3fff
case "6" ; '6' -> 32K
FLASHEND label FLASHSTART+$7fff
case "8" ; '8' -> 64K
FLASHEND label FLASHSTART+$ffff
case "A" ; 'A' -> 128K
FLASHEND label FLASHSTART+$1ffff
elsecase
fatal "Cannot deduce flash size from device name"
endcase
elseif ; non-automotive
switch substr(MOMCPUNAME,9,1)
case "1" ; '1' -> 2K
FLASHEND label FLASHSTART+$07ff
case "2" ; '2' -> 4K
FLASHEND label FLASHSTART+$0fff
case "3" ; '3' -> 8K
FLASHEND label FLASHSTART+$1fff
case "4" ; '4' -> 16K
FLASHEND label FLASHSTART+$3fff
case "6" ; '6' -> 32K
FLASHEND label FLASHSTART+$7fff
case "8" ; '8' -> 64K
FLASHEND label FLASHSTART+$ffff
case "B" ; 'B' -> 128K
FLASHEND label FLASHSTART+$1ffff
elsecase
fatal "Cannot deduce flash size from device name"
endcase
endif ; automotive
endif
;----------------------------------------------------------------------------
restore ; allow again
endif ; __regstm8inc