SN8P1600
8-bit micro-controller
SONiX TECHNOLOGY CO., LTD
Page 61
Revision 1.94
Example: TC1 interrupt service routine without auto-reload function.
ORG
8
JMP
INT_SERVICE
INT_SERVICE:
B0XCH
A, ACCBUF
B0MOV
A, PFLAG
B0MOV
PFLAGBUF, A
B0BTS1
FTC1IRQ
JMP
EXIT_INT
B0BCLR
FTC1IRQ
MOV
A,#74H
B0MOV
TC1C,A
.
.
.
.
JMP
EXIT_INT
; Interrupt vector
; B0XCH doesn’t change C, Z flag
; Save PFLAG register in a buffer
; Check TC1IRQ
; TC1IRQ = 0, exit interrupt vector
; Reset TC1IRQ
; Reload TC1C
; TC1 interrupt service routine
; End of TC1 interrupt service routine and exit interrupt
vector
; Restore PFLAG register from buffer
; B0XCH doesn’t change C, Z flag
; Exit interrupt vector
EXIT_INT:
Example: TC1 interrupt service routine with auto-reload.
ORG
JMP
INT_SERVICE:
B0XCH
B0MOV
B0MOV
B0BTS1
JMP
B0BCLR
.
.
JMP
.
.
B0MOV
B0MOV
B0XCH
RETI
.
.
A, PFLAGBUF
PFLAG, A
A, ACCBUF
8
INT_SERVICE
A, ACCBUF
A, PFLAG
PFLAGBUF, A
FTC1IRQ
EXIT_INT
FTC1IRQ
.
.
EXIT_INT
; Interrupt vector
; B0XCH doesn’t change C, Z flag
; Save PFLAG register in a buffer
; Check TC1IRQ
; TC1IRQ = 0, exit interrupt vector
; Reset TC1IRQ
; TC1 interrupt service routine
; End of TC1 interrupt service routine and exit interrupt
vector
; Restore PFLAG register from buffer
; B0XCH doesn’t change C, Z flag
; Exit interrupt vector
EXIT_INT:
.
.
B0MOV
B0MOV
B0XCH
RETI
.
.
A, PFLAGBUF
PFLAG, A
A, ACCBUF