⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_interrupt.dt

📁 义隆单片机上实现的任务调度
💻 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 + -