Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1186 savelij 1
		ifndef  reg53xinc       ; avoid multiple inclusion
2
reg53xinc       equ     1
3
 
4
                save
5
                listing off   		; no listing over this file
6
 
7
;****************************************************************************
8
;*                                                                          *
9
;*   AS 1.42 - File REG53x.INC                                              *
10
;*   								            *
11
;*   Contains Register and Address Definitions for H8/53x                   *
12
;*                                                                          *
13
;****************************************************************************
14
 
15
                if      (MOMCPUNAME<>"HD6475328")&&(MOMCPUNAME<>"HD6475348")&&(MOMCPUNAME<>"HD6475368")&&(MOMCPUNAME<>"HD6475388")
16
                 fatal  "wrong target selected: only HD6475328, HD6475348, HD6475368, or HD6475388 supported"
17
		endif
18
 
19
 
20
                if      MOMPASS=1
21
		 message "H8/53x Definitions (C) 1995 Alfred Arnold"
22
		endif
23
 
24
__cpunum        equ     MOMCPU-$6475000 ; more comfortable this way...
25
 
26
		if	__cpunum=$328	; For H8/532, register base moves
27
__regbase	 equ	$ff00		; one page upward
28
                elseif
29
__regbase	 equ	$fe00
30
		endif
31
 
32
;----------------------------------------------------------------------------
33
; Adressen:
34
 
35
		if 	__cpunum=$328
36
IRAM		 equ	$fb80		; Internal RAM Start (1 kByte)
37
IRAMEND		 equ	$ff7f		; Internal RAM End
38
                elseif
39
IRAM		 equ	$f680		; Internal RAM Start (2 kByte)
40
IRAMEND		 equ	$fe7f		; Internal RAM End
41
		endif
42
 
43
IROM		equ	$0000		; Internal ROM Start
44
                if	__cpunum=$368
45
IROMEND		 equ	$f67f		; Internal ROM End (62 kByte)
46
                elseif
47
IROMEND		 equ	$7fff		; Internal ROM End (32 kByte)
48
		endif
49
 
50
 
51
;----------------------------------------------------------------------------
52
; CPU Configuration
53
 
54
		if	__cpunum=$328
55
__sysbase	 equ	$fff8
56
                elseif
57
__sysbase	 equ	$ff10
58
		endif
59
 
60
WCR		equ	__sysbase+0	; Wait State Control Register
61
WC0		equ	0		; Number of Wait Cycles (rw)
62
WC1		equ	1
63
WMS0		equ	2		; Wait Mode (rw)
64
WMS1		equ	3
65
 
66
RAMCR		equ	__sysbase+1	; RAM Control Register
67
RAME		equ	7		; Internal RAM Enable
68
 
69
MDCR		equ	__sysbase+2	; Mode Control Register
70
MDS0		equ	0		; Mode Select (r)
71
MDS1		equ	1
72
MDS2		equ	2
73
 
74
SBYCR		equ	__sysbase+3	; Software Standby Control Register
75
SSBY		equ	7		; Sleep/Standby Mode Select (rw)
76
 
77
;----------------------------------------------------------------------------
78
; Interrupt Control
79
 
80
		if	__cpunum=$328
81
IPRA		 equ	$fff0		; IRQ1 / IRQ0 Interrupt Priority (rw)
82
IPRB		 equ	$fff1		; FRT2 / FRT1 Interrupt Priority (rw)
83
IPRC		 equ	$fff2		; 8 Bit Timer Interrupt Priority / FRT3 (rw)
84
IPRD		 equ	$fff3		; AD Converter / SCI Interrupt Priority (rw)
85
                elseif
86
IPRA		 equ	$ff00		; IRQ1 / IRQ0|I.-Timer Interrupt Priority (rw)
87
IPRB		 equ	$ff01		; IRQ5|IRQ4 / IRQ3|IRQ2 Interrupt Priority (rw)
88
IPRC		 equ	$ff02		; FRT2 / FRT1 Interrupt Priority (rw)
89
IPRD		 equ	$ff03		; 8 Bit Timer / FTR3 Interrupt Priority (rw)
90
IPRE		 equ	$ff04		; SCI2 / SCI1 Interrupt Priority (rw)
91
IPRF		 equ	$ff05		; - / AD Converter Interrupt Priority
92
                endif
93
 
94
;----------------------------------------------------------------------------
95
; Data Transfer Controller:
96
 
97
		if	__cpunum=$328
98
DTEA		 equ	$fff4		; Normal/DTC Interrupt Selection
99
DTEB		 equ	$fff5		; (Population of Nibbles analogous to IPRx)
100
DTEC		 equ	$fff6
101
DTED		 equ	$fff7
102
                elseif
103
DTEA		 equ	$ff08
104
DTEB		 equ	$ff09
105
DTEC		 equ	$ff0a
106
DTED		 equ	$ff0b
107
DTEE		 equ	$ff0c
108
DTEF		 equ	$ff0d
109
                endif
110
 
111
;----------------------------------------------------------------------------
112
; Ports:
113
 
114
__portbase	equ	__regbase+$80
115
 
116
P1DR		equ	__portbase+2	; Port 1 Data Register (rw/r)
117
P1DDR		equ	__portbase+0	; Port 1 Data Direction Register (w)
118
		if	__cpunum=$328
119
P1CR		 equ	$fffc		; Port 1 Control Register (rw)
120
                elseif
121
SYSCR1		 equ	$fefc		; System Control Register 1 (rw)
122
		endif
123
BRLE		equ	3		; P1CR/SYSCR1: Bus Release Modus
124
NMIEG		equ	4		;              Edge to trigger NMI Input
125
IRQ0E		equ	5		;              Use P15 as IRQ0 ?
126
IRQ1E		equ	6		;              Use P16 as IRQ1 ?
127
 
128
P2DR		equ	__portbase+3	; Port 2 Data Register (rw)
129
P2DDR		equ	__portbase+1	; Port 2 Data Direction Register (w)
130
 
131
P3DR		equ	__portbase+6	; Port 3 Data Register (rw)
132
P3DDR		equ	__portbase+4	; Port 3 Data Direction Register (w)
133
 
134
P4DR		equ	__portbase+7	; Port 4 Data Register (rw)
135
P4DDR		equ	__portbase+5	; Port 4 Data Direction Register (w)
136
 
137
P5DR		equ	__portbase+10	; Port 5 Data Register (rw)
138
P5DDR		equ	__portbase+8	; Port 5 Data Direction Register (w)
139
 
140
P6DR		equ	__portbase+11	; Port 6 Data Register (rw)
141
P6DDR		equ	__portbase+9	; Port 6 Data Direction Register (w)
142
		if	__cpunum<>$328
143
SYSCR2		 equ	$fefd		; System Control Register 2 (w)
144
P9SCI2E		 equ	0		; Use P92..P94 for SCI2
145
P9PWME		 equ	1		; Use P92..P94 for PWM
146
P6PWME		 equ	2		; Use P61..P63 as PWM Output
147
IRQ2E		 equ	3		; Use P60 as IRQ2 ?
148
IRQ3E		 equ	4		; Use P61 as IRQ3 ?
149
IRQ4E		 equ	5		; Use P62 as IRQ4 ?
150
IRQ5E		 equ	6		; Use P63 as IRQ5 ?
151
                endif
152
 
153
P7DR            equ     __portbase+14   ; Port 7 Data Register (rw)
154
P7DDR		equ	__portbase+12	; Port 7 Data Direction Register (w)
155
 
156
P8DR		equ	__portbase+15	; Port 8 Data Register (r)
157
 
158
                if      __cpunum=$388
159
P9DR             equ    __portbase+18   ; Port 9 Data Register (r)
160
 
161
PADR             equ    __portbase+19   ; Port A Data Register (rw)
162
PADDR            equ    __portbase+17   ; Port A Data Direction Register (w)
163
 
164
PBDR             equ    __portbase+22   ; Port B Data Register (rw)
165
PBDDR            equ    __portbase+20   ; Port B Data Direction Register (w)
166
PBPCR            equ    __portbase+24   ; Port B Pullup Register (w)
167
 
168
PCDR             equ    __portbase+23   ; Port C Data Register (rw)
169
PCDDR            equ    __portbase+21   ; Port C Data Direction Register (w)
170
PCPCR            equ    __portbase+25   ; Port C Pullup Register (w)
171
                elseif  __cpunum=$328
172
P9DR             equ    __portbase+$7f  ; Port 9 Data Register (rw)
173
P9DDR            equ    __portbase+$7e  ; Port 9 Data Direction Register (w)
174
                elseif
175
P9DR             equ    __portbase+$ff  ; Port 9 Data Register (rw)
176
P9DDR            equ    __portbase+$fe  ; Port 9 Data Direction Register (w)
177
                endif
178
 
179
;----------------------------------------------------------------------------
180
; Timer:
181
 
182
__deftimer      macro   Base,NAME
183
TCR{NAME}	equ	Base+0		; Control Register (rw)
184
TCSR{NAME}	equ	Base+1		; Control/Status Register (rw/r)
185
FRC{NAME}	equ	Base+2		; Count Register (rw, 16 Bit)
186
OCRA{NAME}	equ	Base+4		; Comparator A (rw, 16 Bit)
187
OCRB{NAME}	equ	Base+6		; Comparator B (rw, 16 Bit)
188
ICR{NAME}	equ	Base+8		; Input Capture Register (r, 16 Bit)
189
		endm
190
 
191
		__deftimer __regbase+$90,"1"
192
		__deftimer __regbase+$a0,"2"
193
		__deftimer __regbase+$b0,"3"
194
 
195
CKS0		equ	0		; TCRx: Clock Source Select (rw)
196
CKS1		equ	1
197
OEA		equ	2		;       Output Comparison Result OCRA (rw)
198
OEB		equ	3		;       Output Comparison Result OCRB (rw)
199
OVIE		equ	4		;       FRC Overflow Interrupt Enable (rw)
200
OCIEA		equ	5		;       OCRA Compare Match Interrupt Enable (rw)
201
OCIEB		equ	6		;       OCRB Compare Match Interrupt Enable (rw)
202
ICIE		equ	7		;       ICR Capture Interrupt Enable (rw)
203
 
204
CCLRA		equ	0		; TCSRx: Reset FRC upon OCRA Compare Match (rw)
205
IEDG		equ	1		;	 Input Capture Edge Select (rw)
206
OLVLA		equ	2		;	 OCRA Output Signal Polarity Select (rw)
207
OLVLB		equ	3		;	 OCRB Output Signal Polarity Select (rw)
208
OVF		equ	4		;	 FRC Overflow Flag (r)
209
OCFA		equ	5		;        FRC=OCRA ? (r)
210
OCFB		equ	6		;        FRC=OCRB ? (r)
211
ICF		equ	7		;        Input Capture Flag (r)
212
 
213
; 8-Bit-Timer:
214
 
215
__tcntbase	equ	__regbase+$d0
216
 
217
TCR4		equ	__tcntbase+0	; Control Register (rw)
218
CKS2		equ	2		; Clock Select (Remainder identical to FRCx)
219
CCLR0		equ	3		; Reset Mode
220
CCLR1		equ	4
221
OVIE_4		equ	5		; Overflow Interrupt Enable
222
CMIEA		equ	6		; TCNT=TCORA Interrupt Enable
223
CMIEB		equ	7		; TCNT=TCORB Interrupt Enable
224
 
225
TCSR4		equ	__tcntbase+1	; Control/Status Register (rw/r)
226
OS0		equ	0		; TCORA=TCNT -> TMO
227
OS1		equ	1
228
OS2		equ	2		; TCORB=TCNT -> TMO
229
OS3		equ	3
230
OVF_4		equ	5		; Overflow Flag
231
CMFA		equ	6		; TCNT=TCORA Flag
232
CMFB		equ	7		; TCNT=TCORB Flag
233
 
234
TCORA		equ	__tcntbase+2	; Time Constant 1 (rw)
235
TCORB		equ	__tcntbase+3	; Time Constant 2 (rw)
236
TCNT		equ	__tcntbase+4	; Count Value (rw)
237
 
238
;----------------------------------------------------------------------------
239
; Puls Width Modulators:
240
 
241
__defpwm        macro   Base,NAME
242
PW{NAME}_TCR	equ	Base		; Control Register (rw)
243
PW{NAME}_DTR	equ	Base+1		; Pulse Width Register (rw)
244
PW{NAME}_TCNT	equ	Base+2		; Count Value (rw)
245
		endm
246
 
247
		__defpwm __regbase+$c0,"1"
248
		__defpwm __regbase+$c4,"2"
249
		__defpwm __regbase+$c8,"3"
250
 
251
OS		equ	6		; PWx_TCR: Output Logic
252
OE		equ	7		;          Output Enable
253
 
254
;----------------------------------------------------------------------------
255
; Watchdog:
256
 
257
__wdtbase	equ	__regbase+$ec
258
 
259
WDT_TCSR_R	equ	__wdtbase+0	; Control/Status Register (different
260
WDT_TCSR_W	equ	__wdtbase+1	; Write/Read Addresses)
261
TME		equ	5		; Timer Enable
262
WTIT		equ	6		; Watchdog/Timer Mode
263
WDT_OVF		equ	7		; Watchdog Overflow
264
 
265
WDT_TCNT	equ	__wdtbase+1	; Count Register (rw)
266
 
267
		if	__cpunum<>$328
268
RSTCSR_W	 equ	$ff14		; Reset Register (different
269
RSTCSR_R	 equ	$ff15		; Write/Read Addresses)
270
RSTOE		 equ	6		; Output Watchdog Reset
271
WRST		 equ	7               ; Reset by Watchdog ?
272
                endif
273
 
274
;----------------------------------------------------------------------------
275
; serielle Schnittstelle:
276
 
277
__defsci        macro   Base,NAME
278
SMR{NAME}	equ	Base+0		; Mode Register (rw)
279
BRR{NAME}	equ	Base+1		; Bit Raten Register (rw)
280
SCR{NAME}	equ	Base+2		; Control Register (rw)
281
TDR{NAME}	equ	Base+3		; Transmit Data (rw)
282
SSR{NAME}	equ	Base+4		; Status Register (rw)
283
RDR{NAME}	equ	Base+5		; Receive Data (r)
284
		endm
285
 
286
		if	__cpunum=$328
287
		 __defsci __regbase+$d8,""
288
                elseif
289
		 __defsci __regbase+$d8,"1"
290
		 __defsci __regbase+$f0,"2"
291
		endif
292
 
293
STOP		equ	3		; SMRx: Number of Stop Bits
294
O_E		equ	4		;       odd/even Parity
295
PE		equ	5		;       With/Without Parity
296
CHR		equ	6		;       7/8 Data Bits
297
C_A		equ	7		;       synchronous/asynchronous
298
 
299
CKE0		equ	0		; SCRx: Output Clock if communicating synchronously
300
CKE1		equ	1		;       Clock internal/external (-->SCK Input or Output)
301
RE		equ	4		;       Receiver Enable
302
TE		equ	5		;       Transmitter Enable
303
RIE		equ	6		;       Receive Interrupt Enable
304
TIE		equ	7		;       Transmit Interrupt Enable
305
 
306
PER		equ	3		; SSRx: Parity Error
307
FER		equ	4		;       Framing Error
308
ORER		equ	5		;       Receiver Overflow
309
RDRF		equ     6		;       Receiver Full
310
TDRE		equ	7		;       Transmitter Empty
311
 
312
;----------------------------------------------------------------------------
313
; A/D Converter
314
 
315
__adbase	equ	__regbase+$e0
316
 
317
ADDRA		equ	__adbase+0	; Channel A Conversion Result (r, 16Bit)
318
ADDRB		equ	__adbase+2	; Channel B Conversion Result (r, 16Bit)
319
ADDRC		equ	__adbase+4	; Channel C Conversion Result (r, 16Bit)
320
ADDRD		equ	__adbase+6	; Channel D Conversion Result (r, 16Bit)
321
 
322
ADCSR		equ	__adbase+8	; Control/Status Register (rw)
323
CH0		equ	0		; Channel Selection
324
CH1		equ	1
325
CH2		equ	2
326
CKS		equ	3		; 274/138 Clocks Conversion Time
327
SCAN		equ	4		; Single Channel/Scan-Mode
328
ADST		equ	5		; Start/Stop Converter
329
ADIE		equ	6		; End of Conversion Interrupt Enable
330
ADF		equ	7		; End of Conversion Flag
331
 
332
		if	__cpunum<>$328
333
ADCR		 equ	__adbase+9	; Control Register (rw)
334
TRGE             equ    7               ; External Trigger
335
		endif
336
 
337
;----------------------------------------------------------------------------
338
 
339
		restore                 ; re-allow listing
340
 
341
		endif			; reg53xinc