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

Subversion Repositories 8051

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

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

powered by: WebSVN 2.1.0

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