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

Subversion Repositories 8051

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 simont
;
2
; bank 0  - counters
3
; bank 1  - expected values
4
;
5
; @7f error code
6
;
7
 
8
        ajmp start;
9
 
10
        .org 03h        ;external interrupt 0
11
        ajmp ei0        ;
12
 
13
        .org 0bh        ;t/c 0 interrupt
14
        ajmp tc0        ;
15
 
16
        .org 13h        ;external interrupt 1
17
        ajmp ei1        ;
18
 
19
        .org 1bh        ;t/c 1 interrupt
20
        ajmp tc1        ;
21
 
22
        .org 23h        ;serial interface interrupt
23
        setb b.4        ;
24
        clr scon.0              ;
25
        clr scon.1              ;
26
        reti;
27
 
28
ei0:
29
        setb b.0;
30
        mov c, 0                ;
31
        jc stop0                ;
32
        clr 2           ;
33
        reti;
34
 
35
tc0:
36
        setb b.1;
37
        mov c, 1                ;
38
        jc stop1        ;
39
        clr 3           ;
40
        reti;
41
 
42
ei1:
43
        setb b.2;
44
        mov c, 2                ;
45
        jc stop2        ;
46
        clr 0           ;
47
        reti;
48
 
49
tc1:
50
        setb b.3;
51
        mov c, 3                ;
52
        jc stop3        ;
53
        clr 1           ;
54
        reti;
55
 
56
 
57
stop0:
58
        nop;
59
        mov c, 0        ;
60
        jc stop0        ;
61
        reti            ;
62
stop1:
63
        nop;
64
        mov c, 1        ;
65
        jc stop1        ;
66
        reti            ;
67
stop2:
68
        nop;
69
        mov c, 2        ;
70
        jc stop2        ;
71
        reti            ;
72
stop3:
73
        nop;
74
        mov c, 3        ;
75
        jc stop3        ;
76
        reti            ;
77
 
78
wait:
79
        nop             ;
80
        nop             ;
81
        dec a           ;
82
        jnz wait        ;
83
        ret;
84
 
85
error:
86
        mov psw, #00h           ;
87
        mov p1, 7fh             ;
88
loop0:
89
        nop             ;
90
        ajmp loop0              ;
91
 
92
test:
93
        subb a, b               ;
94
        jnz error               ;
95
        ret             ;
96
 
97
test_tcon:
98
        subb a, tcon            ;
99
        jnz error               ;
100
        ret             ;
101
 
102
start:
103
        clr a
104
        mov r0, a               ;
105
        mov r1, a               ;
106
        mov r2, a               ;
107
        mov r3, a               ;
108
        mov r4, a               ;
109
        mov 7fh, a              ; error 0
110
        mov 20h, a              ;
111
        mov sp, #02fh           ;
112
;
113
; testing interrupt enable interrupt enable register
114
;
115
; ea (ie.7)
116
;
117
        mov ie, #00fh           ;
118
        mov sbuf, #00h          ;
119
        mov tmod, #033h ; t/c 0 and 1 in mode 3
120
        mov th0, #0fdh          ;load timer 0
121
        mov tl0, #0fch          ;
122
        mov tcon, #050h         ;
123
        clr p3.4                ;
124
        clr p3.3                ;
125
        mov 7fh, #001h          ; error 1
126
        mov a, #010h            ;
127
        acall wait              ;
128
        clr tcon.6              ;
129
        clr tcon.4              ;
130
        clr a           ;
131
        acall test              ;
132
        mov a, #0aah            ;
133
        mov 7fh, #002h          ; error 2
134
        acall test_tcon         ;
135
        mov tcon, #00h          ;
136
        mov a, #00ah            ;
137
        acall test_tcon         ;
138
        setb p3.4               ;
139
        setb p3.3               ;
140
        mov a, #00h             ;
141
        acall test_tcon         ;
142
        clr scon.0              ;
143
        clr scon.1              ;
144
 
145
;
146
; ie
147
;
148
        mov tcon, #005h         ; external interrupts are edge sensitive
149
        mov ie, #099h           ;
150
        mov th0, #0fdh          ;load timer 0
151
        mov tl0, #0fch          ;
152
        mov tcon, #055h         ;
153
        mov sbuf, #098h         ;
154
        clr p3.4                ;
155
        clr p3.3                ;
156
        setb p3.4               ;
157
        setb p3.3               ;
158
        mov 7fh, #003h          ; error 3
159
        mov a, #010h            ;
160
        acall wait              ;
161
        clr tcon.6              ;
162
        clr tcon.4              ;
163
        mov a, #019h            ;
164
        acall test              ;
165
        mov 7fh, #004h          ; error 4
166
        mov a, #02dh            ;
167
        acall test_tcon         ;
168
 
169
        mov b,#000h             ;
170
        mov ie, #09fh           ;
171
        mov 7fh, #005h          ; error 5
172
        mov a, #010h            ;
173
        acall wait              ;
174
        clr tcon.6              ;
175
        clr tcon.4              ;
176
        mov a, #006h            ;
177
        acall test              ;
178
        mov 7fh, #006h          ; error 6
179
        mov a, #005h            ;
180
        acall test_tcon         ;
181
;
182
; software interrupts
183
;
184
        mov b,#000h             ;
185
        mov tcon, #0afh         ;
186
        setb scon.0             ;
187
        mov 7fh, #007h          ; error 7
188
        mov a, #005h            ;
189
        acall wait              ;
190
        mov a, #01fh            ;
191
        acall test              ;
192
        mov 7fh, #008h          ; error 8
193
        mov a, #005h            ;
194
        acall test_tcon         ;
195
 
196
        mov p0, #001h           ;
197
;
198
; interrupt prioriti test
199
;
200
        mov b,#000h             ;
201
        mov ie, #08fh           ;
202
        mov ip, #003h           ;
203
        mov 20, #00ch           ;
204
        mov tcon, #0afh         ;
205
        mov 7fh, #009h          ; error 9
206
        mov a, #005h            ;
207
        acall wait              ;
208
        mov a, #00fh            ;
209
        acall test              ;
210
        mov 7fh, #00ah          ; error a
211
        mov a, #005h            ;
212
        acall test_tcon         ;
213
 
214
        mov b,#000h             ;
215
        mov ip, #00ch           ;
216
        mov 20, #003h           ;
217
        mov tcon, #0afh         ;
218
        mov 7fh, #00bh          ; error b
219
        mov a, #005h            ;
220
        acall wait              ;
221
        mov a, #00fh            ;
222
        acall test              ;
223
        mov 7fh, #00ch          ; error c
224
        mov a, #005h            ;
225
        acall test_tcon         ;
226
 
227
        mov p0, #002h           ;

powered by: WebSVN 2.1.0

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