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

Subversion Repositories 8051

[/] [8051/] [trunk/] [asm/] [interrupt_test.asm] - Rev 186

Compare with Previous | Blame | View Log

;
; bank 0  - counters
; bank 1  - expected values
;
; @7f error code
;

        ajmp start;
        
        .org 03h        ;external interrupt 0
        ajmp ei0        ;

        .org 0bh        ;t/c 0 interrupt
        ajmp tc0        ;

        .org 13h        ;external interrupt 1
        ajmp ei1        ;

        .org 1bh        ;t/c 1 interrupt
        ajmp tc1        ;

        .org 23h        ;serial interface interrupt
        setb b.4        ;
        clr scon.0              ;
        clr scon.1              ;
        reti;

ei0:
        setb b.0;
        mov c, 0                ;
        jc stop0                ;
        clr 2           ;
        reti;

tc0:
        setb b.1;
        mov c, 1                ;
        jc stop1        ;
        clr 3           ;
        reti;

ei1:
        setb b.2;
        mov c, 2                ;
        jc stop2        ;
        clr 0           ;
        reti;

tc1:
        setb b.3;
        mov c, 3                ;
        jc stop3        ;
        clr 1           ;
        reti;


stop0:
        nop;
        mov c, 0        ;
        jc stop0        ;
        reti            ;
stop1:
        nop;
        mov c, 1        ;
        jc stop1        ;
        reti            ;
stop2:
        nop;
        mov c, 2        ;
        jc stop2        ;
        reti            ;
stop3:
        nop;
        mov c, 3        ;
        jc stop3        ;
        reti            ;

wait:
        nop             ;
        nop             ;
        dec a           ;
        jnz wait        ;
        ret;

error:
        mov psw, #00h           ;
        mov p1, 7fh             ;
loop0:
        nop             ;
        ajmp loop0              ;

test:
        subb a, b               ;
        jnz error               ;
        ret             ;
        
test_tcon:
        subb a, tcon            ;
        jnz error               ;
        ret             ;

start:
        clr a
        mov r0, a               ;
        mov r1, a               ;
        mov r2, a               ;
        mov r3, a               ;
        mov r4, a               ;
        mov 7fh, a              ; error 0
        mov 20h, a              ; 
        mov sp, #02fh           ;
;
; testing interrupt enable interrupt enable register
;
; ea (ie.7)
;
        mov ie, #00fh           ;
        mov sbuf, #00h          ;
        mov tmod, #033h ; t/c 0 and 1 in mode 3
        mov th0, #0fdh          ;load timer 0
        mov tl0, #0fch          ;
        mov tcon, #050h         ;
        clr p3.4                ;
        clr p3.3                ;
        mov 7fh, #001h          ; error 1
        mov a, #010h            ;
        acall wait              ;
        clr tcon.6              ;
        clr tcon.4              ;
        clr a           ;
        acall test              ;
        mov a, #0aah            ;
        mov 7fh, #002h          ; error 2
        acall test_tcon         ;
        mov tcon, #00h          ;
        mov a, #00ah            ;
        acall test_tcon         ;
        setb p3.4               ;
        setb p3.3               ;
        mov a, #00h             ;
        acall test_tcon         ;
        clr scon.0              ;
        clr scon.1              ;

;
; ie
;
        mov tcon, #005h         ; external interrupts are edge sensitive
        mov ie, #099h           ;
        mov th0, #0fdh          ;load timer 0
        mov tl0, #0fch          ;
        mov tcon, #055h         ;
        mov sbuf, #098h         ;
        clr p3.4                ;
        clr p3.3                ;
        setb p3.4               ;
        setb p3.3               ;
        mov 7fh, #003h          ; error 3
        mov a, #010h            ;
        acall wait              ;
        clr tcon.6              ;
        clr tcon.4              ;
        mov a, #019h            ;
        acall test              ;
        mov 7fh, #004h          ; error 4
        mov a, #02dh            ;
        acall test_tcon         ;

        mov b,#000h             ;
        mov ie, #09fh           ;
        mov 7fh, #005h          ; error 5
        mov a, #010h            ;
        acall wait              ;
        clr tcon.6              ;
        clr tcon.4              ;
        mov a, #006h            ;
        acall test              ;
        mov 7fh, #006h          ; error 6
        mov a, #005h            ;
        acall test_tcon         ;
;
; software interrupts
;
        mov b,#000h             ;
        mov tcon, #0afh         ;
        setb scon.0             ;
        mov 7fh, #007h          ; error 7
        mov a, #005h            ;
        acall wait              ;
        mov a, #01fh            ;
        acall test              ;
        mov 7fh, #008h          ; error 8
        mov a, #005h            ;
        acall test_tcon         ;

        mov p0, #001h           ;
;
; interrupt prioriti test
;
        mov b,#000h             ;
        mov ie, #08fh           ;
        mov ip, #003h           ;
        mov 20, #00ch           ;
        mov tcon, #0afh         ;
        mov 7fh, #009h          ; error 9
        mov a, #005h            ;
        acall wait              ;
        mov a, #00fh            ;
        acall test              ;
        mov 7fh, #00ah          ; error a
        mov a, #005h            ;
        acall test_tcon         ;

        mov b,#000h             ;
        mov ip, #00ch           ;
        mov 20, #003h           ;
        mov tcon, #0afh         ;
        mov 7fh, #00bh          ; error b
        mov a, #005h            ;
        acall wait              ;
        mov a, #00fh            ;
        acall test              ;
        mov 7fh, #00ch          ; error c
        mov a, #005h            ;
        acall test_tcon         ;

        mov p0, #002h           ;

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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