OpenCores
URL https://opencores.org/ocsvn/8051/8051/trunk

Subversion Repositories 8051

[/] [8051/] [tags/] [rel0/] [asm/] [serial_test.asm] - Blame information for rev 186

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 simont
;
2
; r0 - scon
3
; r1 - sbuf
4
; r2 - transnit test
5
; r3 - receive test
6
; r4 - pcon
7
;
8
        ajmp start;
9
 
10
        .org 03h        ;external interrupt 0
11
        reti;
12
 
13
        .org 0bh        ;t/c 0 interrupt
14
        setb p3.1       ;
15
        clr p3.1        ;
16
        reti;
17
 
18
        .org 13h        ;external interrupt 1
19
        reti;
20
 
21
        .org 1bh        ;t/c 1 interrupt
22
        reti;
23
 
24
        .org 23h        ;serial interface interrupt
25
        clr scon.4              ;
26
        clr scon.0              ;
27
        clr scon.1              ;
28
  inc b         ;
29
        reti;
30
 
31
        nop;
32
        nop;
33
wait:
34
        mov a,b         ;
35
        jz wait         ;
36
        ret             ;
37
 
38
        nop;
39
        nop;
40
 
41
test_txd:
42
        clr c           ;
43
        movx a, @r1     ;
44
        subb a, r2      ;
45
        jnz error       ;
46
        ret             ;
47
 
48
        nop;
49
        nop;
50
 
51
test_rxd:
52
        clr c           ;
53
        mov a, sbuf     ;
54
        subb a, r3      ;
55
        jnz error       ;
56
        ret             ;
57
 
58
        nop;
59
        nop;
60
 
61
 
62
start:
63
        clr a;
64
        mov 7fh, a      ; error 0
65
        clr p3.7        ;
66
        clr p3.0        ;
67
        mov ie, #090h   ; enable interrupts
68
        mov r0, #098h   ; serial control address
69
        mov r1, #099h   ; serial data buffer address
70
        mov dpl, #087h  ; pcon
71
        mov dph, #000h  ;
72
 
73
;
74
; testing mode 0
75
;
76
; transmit
77
;
78
        mov scon, #000h ; mode 0
79
        mov b,#000h     ;
80
        mov a, #010h    ;
81
        mov r2, #06ch   ;
82
        movx @r0, a     ;
83
        mov sbuf, r2    ; transmit 6c
84
        acall wait      ;
85
        acall test_txd  ;
86
        mov c, p3.0     ;
87
        jnc error       ;
88
;
89
; receive
90
;
91
        setb ie.7       ;
92
        mov a, #000h    ;
93
        movx @r0,a      ;
94
        mov 7fh, #001h  ; error 1
95
        nop             ;
96
        nop             ;
97
        mov c, p3.0     ;
98
        jc error        ;
99
        mov 7fh, #002h  ; error 2
100
        mov b,#000h     ;
101
        mov a, #0d3h    ;
102
        mov r3, a               ;
103
        movx @r1, a             ;
104
        mov scon, #010h         ;
105
        acall wait              ;
106
        acall test_rxd          ;
107
        mov c, p3.0     ;
108
        jnc error       ;
109
 
110
        mov p0, #00h            ;
111
        ajmp mode1              ;
112
 
113
error:
114
        mov p2, 7fh             ;
115
loop:
116
        nop                     ;
117
        ajmp loop               ;
118
 
119
;
120
; mode 1
121
;
122
; transmit
123
;
124
mode1:
125
        mov b,#000h             ;
126
        mov ie, #092h           ;
127
        mov 7fh, #003h          ; error 3
128
        clr p3.1                ;
129
        mov a, #050h            ; external mode 1 receive
130
        movx @r0, a             ;
131
        mov scon, #040h         ;
132
        mov th0, #0ech          ;
133
        mov tl0, #0ech          ;
134
        mov th1, #0ech          ;
135
        mov tl1, #0ech          ;
136
        mov tmod, #022h         ;
137
        setb tcon.4             ;
138
        setb tcon.6             ;
139
        mov r2, #095h           ;
140
        mov sbuf, r2            ; start transmition
141
        acall wait              ;
142
        clr tcon.4              ;
143
        clr tcon.6              ;
144
        acall test_txd          ;
145
;
146
; receive
147
;
148
        mov 7fh, #004h          ; error 4
149
        mov b, #000h            ;
150
        mov a, #040h            ;
151
        movx @r0, a             ;
152
        mov scon, #050h         ;
153
        mov a, #0a2h            ;
154
        mov r3, a               ;
155
        setb tcon.4             ;
156
        setb tcon.6             ;
157
        movx @r1, a             ;
158
        acall wait              ;
159
        clr tcon.4              ;
160
        clr tcon.6              ;
161
        acall test_rxd          ;
162
        mov 7fh, #005h          ; error 5
163
        mov c, scon.2           ;
164
        jnc error               ;
165
;
166
; transmit / receive
167
;
168
        mov b,#000h             ;
169
        mov ie, #082h           ;
170
        mov 7fh, #006h          ; error 6
171
        mov a, #050h            ; external mode 1 receive
172
        movx @r0, a             ;
173
        mov scon, #050h         ;
174
        setb tcon.4             ;
175
        setb tcon.6             ;
176
        mov r2, #097h           ;
177
        mov sbuf, r2            ; start transmition
178
        mov a, #0d5h            ;
179
        mov r3, a               ;
180
        movx @r1, a             ;
181
loop0:
182
        mov c, scon.1           ;
183
        jnc loop0               ;
184
        mov c, scon.0           ;
185
        jnc loop0               ;
186
        clr tcon.4              ;
187
        clr tcon.6              ;
188
        clr c           ;
189
        acall test_txd          ;
190
        mov 7fh, #007h          ; error 7
191
        acall test_rxd          ;
192
        clr scon.1              ;
193
        clr scon.0              ;
194
 
195
        mov p0, #01h            ;
196
 
197
 
198
;
199
; mode 2
200
;
201
; transmit
202
;
203
        mov b,#000h     ;
204
        mov ie, #090h           ;
205
        mov 7fh, #008h          ; error 8
206
        mov a, #090h            ; external mode 2 receive
207
        movx @r0, a             ;
208
        mov scon, #080h         ;
209
        mov r2, #095h           ;
210
        mov sbuf, r2            ; start transmition
211
        acall wait              ;
212
        acall test_txd          ;
213
;
214
; receive 1
215
;
216
        mov 7fh, #009h          ; error 9
217
        mov b, #000h            ;
218
        mov a, #088h            ;
219
        movx @r0, a             ;
220
        mov scon, #090h         ;
221
        mov a, #0a2h            ;
222
        mov r3, a               ;
223
        movx @r1, a             ;
224
        acall wait              ;
225
        acall test_rxd          ;
226
        mov 7fh, #00ah          ; error a
227
        mov c, scon.2           ;
228
        jnc error1              ;
229
;
230
; receive 2
231
;
232
        setb ie.7       ;
233
        mov 7fh, #00bh          ; error b
234
        mov b, #000h            ;
235
        mov a, #080h            ;
236
        movx @r0, a             ;
237
        mov scon, #0b0h         ;
238
        mov a, #0b2h            ;
239
        mov r3, a               ;
240
        movx @r1, a             ;
241
loop1:
242
        nop             ;
243
  nop   ;
244
  dec a   ;
245
  jnz   loop1   ;
246
        acall test_rxd          ;
247
        mov 7fh, #00ch          ; error c
248
        mov a, b                ;
249
        jnz error1              ;
250
;
251
; transmit / receive
252
;
253
        mov b,#000h             ;
254
        mov ie, #000h           ;
255
        mov 7fh, #00dh          ; error d
256
        mov a, #090h            ; external mode 2 receive
257
        movx @r0, a             ;
258
        mov a, #080h            ;
259
        movx @dptr, a           ;
260
        mov pcon, a             ;
261
        mov scon, #090h         ;
262
        mov r2, #097h           ;
263
        mov sbuf, r2            ; start transmition
264
        mov a, #0d5h            ;
265
        mov r3, a               ;
266
        movx @r1, a             ;
267
loop2:
268
        mov c, scon.1           ;
269
        jnc loop2               ;
270
        mov c, scon.0           ;
271
        jnc loop2               ;
272
        acall test_txd          ;
273
        mov 7fh, #00eh          ; error e
274
        acall test_rxd          ;
275
        clr scon.1              ;
276
        clr scon.0              ;
277
 
278
        mov p0, #02h            ;
279
        ajmp mode3              ;
280
 
281
error1:
282
        ljmp error              ;
283
 
284
;
285
; mode 3
286
;
287
; transmit
288
;
289
mode3:
290
        mov b,#000h     ;
291
        mov ie, #092h           ;
292
        mov 7fh, #00fh          ; error f
293
        mov a, #0d0h            ; external mode 3 receive
294
        movx @r0, a             ;
295
        mov scon, #0c0h         ;
296
        mov r2, #095h           ;
297
        setb tcon.4             ;
298
        setb tcon.6             ;
299
        mov sbuf, r2            ; start transmition
300
        acall wait              ;
301
        clr tcon.4              ;
302
        clr tcon.6              ;
303
        acall test_txd          ;
304
;
305
; receive
306
;
307
        setb ie.7       ;
308
        mov 7fh, #010h          ; error 10
309
        mov b, #000h            ;
310
        mov a, #0c0h            ;
311
        movx @r0, a             ;
312
        mov scon, #0d4h         ;
313
        mov a, #0a2h            ;
314
        mov r3, a               ;
315
        movx @r1, a             ;
316
        setb tcon.4             ;
317
        setb tcon.6             ;
318
        acall wait              ;
319
        clr tcon.4              ;
320
        clr tcon.6              ;
321
        acall test_rxd          ;
322
        mov 7fh, #011h          ; error 11
323
        mov c, scon.2           ;
324
        jc error1               ;
325
;
326
; transmit / receive
327
;
328
        mov b,#000h             ;
329
        mov ie, #092h           ;
330
        mov 7fh, #012h          ; error 12
331
        mov a, #0d0h            ; external mode 3 receive
332
        movx @r0, a             ;
333
        mov scon, #0d8h         ;
334
        mov r2, #097h           ;
335
        setb tcon.4             ;
336
        setb tcon.6             ;
337
        mov sbuf, r2            ; start transmition
338
        mov a, #0d5h            ;
339
        mov r3, a               ;
340
        movx @r1, a             ;
341
loop3:
342
        mov c, scon.1           ;
343
        jnc loop3               ;
344
        mov c, scon.0           ;
345
        jnc loop3               ;
346
        clr tcon.4              ;
347
        clr tcon.6              ;
348
        acall test_txd          ;
349
        mov 7fh, #013h          ; error 13
350
        acall test_rxd          ;
351
        clr scon.1              ;
352
        clr scon.0              ;
353
        mov 7fh, #014h          ; error 14
354
        mov c, scon.2           ;
355
        jc error1               ;
356
        movx a, @r0             ;
357
        subb a, #0d7h           ;
358
 
359
        mov p0, #03h            ;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.