📄 init.asm
字号:
INCLUDE "PIC_RTOS.ASM"
INCLUDE "DRV.ASM"
;*****************************************************************
; 初始化部分
;*****************************************************************
INIT
;---------------------------------------------------------------------
; Initialize Port_A,Port_B,Port_C
;---------------------------------------------------------------------
BCF INTCON,GIE
BSF STATUS,RP0 ; Select page 1
MOVLW B'00000111'
MOVWF ADCON1
MOVLW B'11110000'
MOVWF TRISA ;
MOVLW B'00001111'
MOVWF TRISB ;PORTB is output
MOVLW B'00000000'
MOVWF TRISC ;PORTC PC1,PC2,PC3 is output other is input
BCF STATUS,RP0 ;Select page 0
CLRF RB
CLRF RA
CLRF RC
;各IO口初始化
;---------------------------------------------------------------------
; Initialize interrupt and time
;---------------------------------------------------------------------
BSF STATUS,RP0 ;select bank 1
MOVLW B'11001111'
MOVWF OPTION_R ;B口无弱上拉,INT0上升沿有效,T0用内部时钟且上升沿使定时器递增
;预分频器用于WDT,且为128分频
BCF STATUS,RP0 ;select bank 0
MOVLW B'00000000'
MOVWF T1CON ;定时器1的初始化,提供1分频 1us递增一次
BCF PIR1,TMR1IF
MOVLW B'00000011'
MOVWF T2CON ;定时器2的初始化,提供16后分频
BCF PIR1,TMR2IF
MOVLW 0H
MOVWF TMR0 ;定时器赋初值为0
CLRF INTCON ;关闭所有中断
BSF INTCON,PEIE ;允许外部扩展部件中断
BSF STATUS,RP0
CLRF PIE1 ;关闭所有中断
BCF STATUS,RP0
MOVLW 20H
MOVWF FSR
CLRRML CLRF INDF
INCF FSR,1
BTFSS FSR,7 ;CLEAR 20H TO 7FH
GOTO CLRRML
CLRWDT
BSF STATUS,RP0 ;select bank 1
MOVLW 0A0H
MOVWF FSR
CLRRMH CLRF INDF
INCF FSR,1
MOVF FSR,0
XORLW 0D0H
BTFSS STATUS,Z ;CLEAR 90H TO FFH
GOTO CLRRMH
BCF STATUS,RP0 ;select bank 0
CLRWDT
BSF INTCON,GIE ;允许总中断
RETURN
;******************************************************
;任务分配,初始化任务
INT_TASK CLRF TIM_OV
CLRF TIM_EN ;禁止任何任务
MOVLW TASKID0
MOVWF TASKID
MOVLW 2H
MOVWF TASKTM
MOVLW 3H ;任务0循环启动
MOVWF TASKTY
CALL BUD_STAK ;建立任务0
MOVLW TASKID1
MOVWF TASKID
MOVLW 01H ;任务1等待
MOVWF TASKTM
MOVLW 00H ;单次周期
MOVWF TASKTY
CALL BUD_STAK ;建立任务1
MOVLW TASKID2
MOVWF TASKID
MOVLW D'100' ;任务2等待
MOVWF TASKTM
MOVLW 01H ;循环周期
MOVWF TASKTY
CALL BUD_STAK ;建立任务2
RETURN
;*****************************************************
; 初始化参数
;*****************************************************
INIT_CS
MOVLW D'100'
MOVWF TIM_HS ;100MS计数值
IF CRY_PL== D'16'
MOVLW D'20'
MOVWF TIM_MS ;MS时间间隔
ENDIF
IF CRY_PL== D'4'
MOVLW D'5'
MOVWF TIM_MS ;MS时间间隔
ENDIF
MOVLW D'10'
MOVWF TIM_S ;S计数值
MOVLW D'60'
MOVWF TIM_M ;S计数值
MOVLW D'5'
MOVWF TIM_SS ;0.5S闪烁标志
BCF DL_LED
BCF DH_LED
BCF ON_OUT
BCF DW_OUT
CLRF DS_COM ;显示开始
BSF SYS_REG,NEW_DAT ;新数据标志
BCF SYS_REG,SYS_TYP
BSF SYS_REG,DS_SS_SY ;显示停止标志
CALL DS_T0 ;禁止输出
BTFSS SYS_REG,SYS_ON ;判别是否输出允许
GOTO INIT_WORK
MOVLW TASKID2 ;允许任务2有效
CALL EN_TASK
CALL EN_T0
RETURN
INIT_WORK
MOVLW D'3'
MOVWF WORK_MIN
CLRF WORK_SEC ;默认3分钟
IF DW_SYB==0
MOVWF W_MIN_S
CLRF W_MIN_T
ENDIF
RETURN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -