📄 os_interrupt.dt
字号:
/*
*********************************************************************************************************
* INTERRUPT PROCESSING
*
* Description : Interrupt processing
* Oscillator : crystal 4.194304 MHz (4MHZ )
* TCC : 1:4
* Interupt Time: 488.28125uS (128uS)
* OSTick : 3.90625 (4mS )
*
*********************************************************************************************************
*/
INT_TCC:
PUSHALL
PAGE 0
bank 0
if OS_IC_TYPE == 1
; jbs rf,0
; jmp int_external ; external interrupt
ENDIF
;--------------------------------------------------------------------- interrupt time 125us
IF (OS_BUZ_TYPE == 1) && (OS_RES_BUZ == 1)
int_buzzer_proc: ; buzzer process
jbs reg_buz_cnt,6
jmp int_buzzer_end
mov a,@BUZ_DAT
xor BUZ_PORT,a
int_buzzer_end:
ENDIF
/*
*********************************************************************************************************
* Critical Task
*
* 功能 : 时间要求非常高的任务,不受任务调度控制,直接用中断计时相应的时间进入。
* 对于其它代码采取互斥信号量解决重入问题,对com_port有操作的不循序执行。
*
* 入口参数 : none 每个大循环执行一次
*
* 出口参数 : none
*********************************************************************************************************
*/
IF OS_CRITICAL_TASK == 1
CriticalTask:
inc RegCritical
mov a,RegCritical
and a,@0x0f
xor a,@4
jbs psw,z
jmp Critical_End
mov a,@0xf0
and RegCritical,a
bs RegCritical,CRITICAL
Critical_End:
jbs RegCritical,CRITICAL
jmp Critical_No_Proc
jbc RegCritical,OCCUPANCY
jmp Critical_No_Proc
jmp scan_dpy
int_dpy_end:
bc RegCritical,CRITICAL
Critical_No_Proc:
nop
ENDIF
/*
*********************************************************************************************************
* Real Time Clock
*
* 功能 : 系统的实时时钟。
*
* 入口参数 : none
*
* 出口参数 : rtc_sec,rtc_min,rtc_hour 系统的实时时钟
* OSTick 系统的节拍
*********************************************************************************************************
*/
rtc_proc:
inc rtc_msec
mov a,@30
xor a,rtc_msec
jbs psw,z
jmp rtc_end
clr rtc_msec
;--------------------------------- 3.90625ms (4ms)
bs OSFlag,TickReflash
inc OSTick
jbs psw,z
jmp rtc_end
;--------------------------------- 1 second OSTick : 256
inc rtc_sec
mov a,rtc_sec
xor a,@60
jbs psw,z
jmp rtc_end
clr rtc_sec
;--------------------------------- 1 minute
inc rtc_min
mov a,rtc_min
xor a,@60
jbs psw,z
jmp rtc_end
clr rtc_min
;--------------------------------- 1 hour
inc rtc_hour
mov a,rtc_hour
xor a,@24
jbs psw,z
jmp rtc_end
clr rtc_hour
rtc_end:
nop
;---------------------------------------------------------------------
int_end:
CLR_TCIF ; Clear TCC interrupt flag
POPALL
reti
/*
**************************************************************************
*
* EMp78258/259/260中断服务程序
*
*
**************************************************************************
*/
IF OS_IC_TYPE == 2
;----------------------------------------------------------------------
int_ad:
bc re,5
reti
;-----------------------------------------------------------------------
int_hig_pulse:
bc rf,6
reti
;-----------------------------------------------------------------------
int_low_pulse:
bc rf,7
reti
;-----------------------------------------------------------------------
int_p5_change:
bc rf,1
reti
;-----------------------------------------------------------------------
int_external:
bc rf,2
reti
;-----------------------------------------------------------------------
int_tcca:
bc rf,3
reti
;-----------------------------------------------------------------------
int_tccb:
bc rf,4
reti
;-----------------------------------------------------------------------
int_tccc:
bc rf,5
reti
ENDIF
/*
**************************************************************************
*
* EMp78P447中断服务程序
*
*
**************************************************************************
*/
IF OS_IC_TYPE == 1
;-----------------------------------------------------------------------
int_external:
bc rf,2
reti
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -