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

Subversion Repositories 8051

[/] [8051/] [tags/] [rel_1/] [asm/] [timer_test.asm] - Blame information for rev 186

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 131 simont
; r0: timer 0 owerflov counter
2
; r1: timer 1 owerflov counter
3
; r2: error code
4
; r3: timer high expected value
5
; r4: timer low expected value
6
; r5: owerflov counter expected value
7
 
8
        ajmp start;
9
 
10
        org 03h         ;external interrupt 0
11
        reti;
12
 
13
        org 0bh         ;t/c 0 interrupt
14
        inc r0;
15
        reti;
16
 
17
        org 13h         ;external interrupt 1
18
        reti;
19
 
20
        org 1bh         ;t/c 1 interrupt
21
        inc r1;
22
        reti;
23
 
24
        org 23h         ;serial interface interrupt
25
        reti;
26
 
27
 
28
test0:
29
        mov a, th0      ;
30
        subb a, r3      ;
31
        jnz error       ;
32
        inc r2          ;
33
        mov a,tl0       ;
34
        subb a, r4      ;
35
        jnz error       ;
36
        inc r2          ;
37
        mov a, r0       ;
38
        subb a, r5      ;
39
        jnz error       ;
40
        ret;
41
 
42
test1:
43
        mov a, th1      ;
44
        subb a, r3      ;
45
        jnz error       ;
46
        inc r2          ;
47
        mov a,tl1       ;
48
        subb a, r4      ;
49
        jnz error       ;
50
        inc r2          ;
51
        mov a, r1       ;
52
        subb a, r5      ;
53
        jnz error       ;
54
        ret;
55
 
56
 
57
error:
58
        mov p0, r2;
59
        nop;
60
        ajmp error;
61
 
62
wait:
63
        dec a           ; 1
64
        nop             ; 1
65
        nop             ; 1
66
        nop             ; 1
67
        nop             ; 1
68
        nop             ; 1
69
        nop             ; 1
70
        nop             ; 1
71
        nop             ; 1
72
        nop             ; 1
73
        jnz wait        ; 2
74
        reti            ; 4
75
 
76
 
77
start:
78
        clr a;
79
        mov r0, a;
80
        mov r1, a;
81
        mov ie, #08ah   ;enable interrupts
82
        clr c;
83
 
84
;
85
; timer 0 test
86
;
87
; mode 0
88
;
89
        mov tmod, #000h ;t/c 0 and t/c 1 in timer mode 0
90
        mov th0, #000h  ;load timer 0
91
        mov tl0, #000h  ;
92
        mov tcon, #010h ;start timer 0;
93
 
94
        mov a, #03h     ; 1
95
        acall wait      ; 2
96
        nop;
97
        nop;
98
        nop;
99
        nop;
100
 
101
 
102
        clr tcon.4      ;stop timer 0
103
        mov r2, #010h   ;
104
        mov r3, #000h   ;
105
        mov r4, #004h   ;
106
        mov r5, #000h   ;
107
        acall test0     ;
108
 
109
        mov tl0, #01ch  ; load timer 0
110
        setb tcon.4     ;start timer 0;
111
 
112
        mov a, #04h     ; 1
113
        acall wait      ; 2
114
        nop;
115
        nop;
116
        nop;
117
        nop;
118
        clr tcon.4      ;stop timer 0;
119
        mov r2, #020h   ;
120
        mov r3, #001h   ;
121
        mov r4, #001h   ;
122
        mov r5, #000h   ;
123
        acall test0     ;
124
 
125
        mov tl0, #01ch  ;
126
        mov th0, #0ffh  ;
127
        setb tcon.4     ;start timer 0
128
        mov a, #05h     ;
129
        acall wait      ;
130
        nop;
131
        nop;
132
        nop;
133
        nop;
134
        clr tcon.4      ;stop timer 0
135
        mov r2, #030h   ;
136
        mov r3, #000h   ;
137
        mov r4, #002h   ;
138
        mov r5, #001h   ;
139
        acall test0     ;
140
;
141
; mode 1
142
;
143
        mov tmod, #001h ; t/c 0 in mode 1
144
        mov th0, #000h  ;load timer 0
145
        mov tl0, #000h  ;
146
        setb tcon.4     ;start timer 0;
147
        mov a, #03h     ;
148
        acall wait      ;
149
        nop;
150
        nop;
151
        nop;
152
        nop;
153
        clr tcon.4      ;stop timer 0
154
        mov r2, #040h   ;
155
        mov r3, #000h   ;
156
        mov r4, #004h   ;
157
        mov r5, #001h   ;
158
        acall test0     ;
159
 
160
        mov tl0, #0fch  ; load timer 0
161
        setb tcon.4     ;start timer 0;
162
        mov a, #04h     ;
163
        acall wait      ;
164
        nop;
165
        nop;
166
        nop;
167
        nop;
168
        clr tcon.4      ;stop timer 0;
169
        mov r2, #050h   ;
170
        mov r3, #001h   ;
171
        mov r4, #001h   ;
172
        mov r5, #001h   ;
173
        acall test0     ;
174
 
175
        mov tl0, #0fch  ;
176
        mov th0, #0ffh  ;
177
        setb tcon.4     ;start timer 0
178
        mov a, #05h     ;
179
        acall wait      ;
180
        nop;
181
        nop;
182
        nop;
183
        nop;
184
        clr tcon.4      ;stop timer 0
185
        mov r2, #060h   ;
186
        mov r3, #000h   ;
187
        mov r4, #002h   ;
188
        mov r5, #002h   ;
189
        acall test0     ;
190
;
191
; mode 2
192
;
193
        mov tmod, #002h ; t/c 0 in mode 2
194
        mov th0, #000h  ;load timer 0
195
        mov tl0, #005h  ;
196
        setb tcon.4     ;start timer 0;
197
        mov a, #03h     ;
198
        acall wait      ;
199
        nop;
200
        nop;
201
        nop;
202
        nop;
203
        clr tcon.4      ;stop timer 0
204
        mov r2, #070h   ;
205
        mov r3, #000h   ;
206
        mov r4, #009h   ;
207
        mov r5, #002h   ;
208
        acall test0     ;
209
 
210
        mov tl0, #0fch  ; load timer 0
211
        mov th0, #050h  ;
212
        setb tcon.4     ;start timer 0;
213
        mov a, #05h     ;
214
        acall wait      ;
215
        nop;
216
        nop;
217
        nop;
218
        nop;
219
;       nop             ; tl0=fd
220
;       nop             ; tl0=fe
221
;       nop             ; tl0=ff
222
;       nop             ; tl0=50
223
        clr tcon.4      ;stop timer 0;
224
        mov r2, #080h   ;
225
        mov r3, #050h   ;
226
        mov r4, #053h   ;
227
        mov r5, #003h   ;
228
        acall test0     ;
229
;
230
; mode 3
231
;
232
        mov tmod, #003h ; t/c 0 in mode 3
233
        mov th0, #000h  ;load timer 0
234
        mov tl0, #000h  ;
235
        setb tcon.4     ;start timer 0;
236
        mov a, #03h     ;
237
        acall wait      ;
238
        nop;
239
        nop;
240
        nop;
241
        nop;
242
        clr tcon.4      ;stop timer 0
243
        mov r2, #090h   ;
244
        mov r3, #000h   ;
245
        mov r4, #004h   ;
246
        mov r5, #003h   ;
247
        acall test0     ;
248
 
249
        mov tl0, #0fch  ; load timer 0
250
        mov th0, #000h  ;
251
        setb tcon.4     ;start timer 0
252
        mov a, #05h     ;
253
        acall wait      ;
254
        nop;
255
        nop;
256
        nop;
257
        nop;
258
        clr tcon.4      ;stop timer 0
259
        mov r2, #0a0h   ;
260
        mov r3, #000h   ;
261
        mov r4, #003h   ;
262
        mov r5, #004h   ;
263
        acall test0     ;
264
 
265
        mov tl0, #000h  ; load timer 0
266
        mov th0, #000h  ;
267
        setb tcon.6     ; start timer 1
268
        mov a, #03h     ;
269
        acall wait      ;
270
        nop;
271
        nop;
272
        nop;
273
        nop;
274
        clr tcon.6      ; stop timer 1
275
        mov r2, #0b0h   ;
276
        mov r3, #004h   ;
277
        mov r4, #000h   ;
278
        mov r5, #004h   ;
279
        acall test0     ;
280
 
281
        mov tl0, #000h  ; load timer 0
282
        mov th0, #0fch  ;
283
        setb tcon.6     ;start timer 1
284
        mov a, #05h     ;
285
        acall wait      ;
286
        nop;
287
        nop;
288
        nop;
289
        nop;
290
        clr tcon.6      ;stop timer 1
291
        mov r2, #0c0h   ;
292
        mov r3, #002h   ;
293
        mov r4, #000h   ;
294
        mov r5, #001h   ;
295
        mov r0, 01h     ;
296
        acall test0     ;
297
 
298
        mov p0, #001h   ; test timer 0 done!
299
        mov r1, #000h   ;
300
 
301
;
302
; timer 1 test
303
;
304
; mode 0
305
;
306
        mov tmod, #000h ;t/c 0 and t/c 1 in timer mode 0
307
        mov th1, #000h  ;load timer 1
308
        mov tl1, #000h  ;
309
        mov tcon, #040h ;start timer 1;
310
        mov a, #03h     ;
311
        acall wait      ;
312
        nop;
313
        nop;
314
        nop;
315
        nop;
316
        clr tcon.6      ;stop timer 1
317
        mov r2, #018h   ;
318
        mov r3, #000h   ;
319
        mov r4, #004h   ;
320
        mov r5, #000h   ;
321
        acall test1     ;
322
 
323
        mov tl1, #01ch  ; load timer 1
324
        setb tcon.6     ;start timer 1
325
        mov a, #04h     ;
326
        acall wait      ;
327
        nop;
328
        nop;
329
        nop;
330
        nop;
331
        clr tcon.6      ;stop timer 1
332
        mov r2, #028h   ;
333
        mov r3, #001h   ;
334
        mov r4, #001h   ;
335
        mov r5, #000h   ;
336
        acall test1     ;
337
 
338
        mov tl1, #01ch  ;
339
        mov th1, #0ffh  ;
340
        setb tcon.6     ;start timer 1
341
        mov a, #05h     ;
342
        acall wait      ;
343
        nop;
344
        nop;
345
        nop;
346
        nop;
347
        clr tcon.6      ;stop timer 1
348
        mov r2, #038h   ;
349
        mov r3, #000h   ;
350
        mov r4, #003h   ;
351
        mov r5, #001h   ;
352
        acall test1     ;
353
;
354
; mode 1
355
;
356
        mov tmod, #010h ; t/c 1 in mode 1
357
        mov th1, #000h  ;load timer 1
358
        mov tl1, #000h  ;
359
        setb tcon.6     ;start timer 1
360
        mov a, #03h     ;
361
        acall wait      ;
362
        nop;
363
        nop;
364
        nop;
365
        nop;
366
        clr tcon.6      ;stop timer 1
367
        mov r2, #048h   ;
368
        mov r3, #000h   ;
369
        mov r4, #004h   ;
370
        mov r5, #001h   ;
371
        acall test1     ;
372
 
373
        mov tl1, #0fch  ; load timer 1
374
        setb tcon.6     ; start timer 1
375
        mov a, #04h     ;
376
        acall wait      ;
377
        nop;
378
        nop;
379
        nop;
380
        nop;
381
        clr tcon.6      ;stop timer 1
382
        mov r2, #058h   ;
383
        mov r3, #001h   ;
384
        mov r4, #001h   ;
385
        mov r5, #001h   ;
386
        acall test1     ;
387
 
388
        mov tl1, #0fch  ;
389
        mov th1, #0ffh  ;
390
        setb tcon.6     ;start timer 1
391
        mov a, #05h     ;
392
        acall wait      ;
393
        nop;
394
        nop;
395
        nop;
396
        nop;
397
        clr tcon.6      ;stop timer 1
398
        mov r2, #068h   ;
399
        mov r3, #000h   ;
400
        mov r4, #003h   ;
401
        mov r5, #002h   ;
402
        acall test1     ;
403
;
404
; mode 2
405
;
406
        mov tmod, #020h ; t/c 1 in mode 2
407
        mov th1, #000h  ;load timer 1
408
        mov tl1, #005h  ;
409
        setb tcon.6     ;start timer 1
410
        mov a, #03h     ;
411
        acall wait      ;
412
        nop;
413
        nop;
414
        nop;
415
        nop;
416
        clr tcon.6      ;stop timer 1
417
        mov r2, #078h   ;
418
        mov r3, #000h   ;
419
        mov r4, #009h   ;
420
        mov r5, #002h   ;
421
        acall test1     ;
422
 
423
        mov tl1, #0fch  ; load timer 1
424
        mov th1, #050h  ;
425
        setb tcon.6     ;start timer 1
426
        mov a, #04h     ;
427
        acall wait      ;
428
        nop;
429
        nop;
430
        nop;
431
        nop;
432
        clr tcon.6      ;stop timer 1
433
        mov r2, #088h   ;
434
        mov r3, #050h   ;
435
        mov r4, #051h   ;
436
        mov r5, #003h   ;
437
        acall test1     ;
438
;
439
; mode 3
440
;
441
        mov tmod, #030h ; t/c 1 in mode 3
442
        mov th1, #000h  ;load timer 1
443
        mov tl1, #000h  ;
444
        setb tcon.6     ;start timer 1
445
        mov a, #03h     ;
446
        acall wait      ;
447
        nop;
448
        nop;
449
        nop;
450
        nop;
451
        clr tcon.6      ;stop timer 1
452
        mov r2, #098h   ;
453
        mov r3, #000h   ;
454
        mov r4, #000h   ;
455
        mov r5, #003h   ;
456
        acall test1     ;
457
 
458
        mov tl1, #0fch  ; load timer 1
459
        mov th1, #0ffh  ;
460
        setb tcon.6     ;start timer 1
461
        mov a, #05h     ;
462
        acall wait      ;
463
        nop;
464
        nop;
465
        nop;
466
        nop;
467
        clr tcon.6      ;stop timer 1
468
        mov r2, #0a8h   ;
469
        mov r3, #0ffh   ;
470
        mov r4, #0fch   ;
471
        mov r5, #003h   ;
472
        acall test1     ;
473
 
474
        mov p0, #002h   ; test timer 1 done!
475
 
476
end
477
 

powered by: WebSVN 2.1.0

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