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

Subversion Repositories 8051

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

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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