📄 sample_a.asm
字号:
; sample for k51 based application
; by geweidong, 2005-11-28
;-------------------------------------------------------------------------------
extrn data (k51_int_nest)
extrn code (k51_tick, k51_int_exit)
extrn code (isr_timer0, isr_timer1)
;-------------------------------------------------------------------------------
; isr frame for timer0-intr
cseg at 0bh
t0_intr_entry:
inc k51_int_nest ; this variable should inc by 1 intr-entry
ljmp t0_intr
; isr frame for timer1 intr.
cseg at 1bh
inc k51_int_nest ; this variable should inc by 1 intr-entry
ljmp t1_intr
;-------------------------------------------------------------------------------
seg_t0_intr segment code
rseg seg_t0_intr
t0_intr:
push psw
push acc
push b
push dpl
push dph ; these registers must push to stack
mov a, r0
push acc
mov a, r1
push acc
mov a, r2
push acc
mov a, r3
push acc
mov a, r4
push acc
mov a, r5
push acc
mov a, r6
push acc
mov a, r7
push acc ; if a c function called,
; r0-r7 should save to stack.
; if use assembly, these may be not necessary
lcall isr_timer0 ; c function called
; lcall k51_tick ; k51_tick() can be called at any level
pop acc
mov r7, a
pop acc
mov r6, a
pop acc
mov r5, a
pop acc
mov r4, a
pop acc
mov r3, a
pop acc
mov r2, a
pop acc
mov r1, a
pop acc
mov r0, a ; restore r0-r7
lcall k51_int_exit ; this function must called at this level
; for correct stack frame.
pop dph
pop dpl
pop b
pop acc
pop psw
reti
seg_t1_intr segment code
rseg seg_t1_intr
t1_intr:
push psw
push acc
push b
push dpl
push dph ; these registers must push to stack
mov a, r0
push acc
mov a, r1
push acc
mov a, r2
push acc
mov a, r3
push acc
mov a, r4
push acc
mov a, r5
push acc
mov a, r6
push acc
mov a, r7
push acc ; if a c function called,
; r0-r7 should save to stack.
; if use assembly, these may be not necessary
lcall isr_timer1 ; c function called
pop acc
mov r7, a
pop acc
mov r6, a
pop acc
mov r5, a
pop acc
mov r4, a
pop acc
mov r3, a
pop acc
mov r2, a
pop acc
mov r1, a
pop acc
mov r0, a ; restore r0-r7
lcall k51_int_exit ; this function should be called before isr exit.
pop dph
pop dpl
pop b
pop acc
pop psw
reti
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -