|
; -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- ; -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- ; *-*- PAGE 0 *-*- ; *-*
------ -*- ; -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- ; -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- ;**************************** ;* Reset Vector * ;**************************** org 00 ;Jump to here on reset goto INIT ;Goto
the Initialisation phase ;**************************** ;* Interrupt Vector * ;****************************
org 04 movwf TEMP_W ;preserve
W reg(in b1 or 0) swapf STATUS,0 ;preserve 0 flag movwf TEMP_STATUS ;save the status reg bcf STATUS,5 ;set
to bank 0 incf HALFSECONDS ;increment time bcf PIR1,0 ;clear interrupt flag movlw h'0b' movwf TMR1H movlw h'a4' movwf TMR1L ;delay
to Timer swapf TEMP_STATUS,0 ;restore
status reg movwf STATUS swapf TEMP_W ;restore
W reg without ;changing
STATUS bits swapf TEMP_W,0 ;(double swap) retfie ;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ;*-*-*-*-*-*-*-*-*-* INITIALISATION PHASE *-*-*-*-*-*-*-*-*-*- ;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* INIT ;Start
of code ;**************************** ;* Set up LCD and PORTC * ;* -------------------- * ;* The LCD display needs * ;* certain delays between * ;* sending control info. * ;* these are specified in * ;* AMTEX - Displays comput- * ;* er systems 1997 * ;**************************** movlw h'1e' ;30
* 0.5mS = 15mS call X_DELAY500 movlw b'00111000'
;set up inputs and outputs tris PORTC ;for
PORTC call LCDINIT movlw h'1e' ;30
* 0.5mS = 15mS call X_DELAY500 movlw 00 call LCDSDDA movlw h'1e' ;30
* 0.5mS = 15mS call X_DELAY500 call LCDBUSY movlw B'00000100' ;cursor
off call LCDDMODE ;**************************** ;* Initialise registers * ;**************************** movlw 00 ;Set
these registers to 0 movwf TIME_SECS movwf TIME_10SECS movwf TIME_MINS movwf TIME_10MINS movwf TIME_HRS movwf TIME_10HRS movwf HALFSECONDS movwf CONTROL2 movwf SECS movwf SECS10 movwf MINS movwf MINS10 movwf HRS movwf HRS10 movwf PAGENUM movwf LIGHT1_ON_10HRS movwf LIGHT1_ON_HRS movwf LIGHT1_ON_10MINS movwf LIGHT1_ON_MINS movwf LIGHT1_OFF_10HRS movwf LIGHT1_OFF_HRS movwf LIGHT1_OFF_10MINS movwf LIGHT1_OFF_MINS movwf TIMER_ON_10HRS movwf TIMER_ON_HRS movwf TIMER_ON_10MINS movwf TIMER_ON_MINS movwf TIMER_OFF_10HRS movwf TIMER_OFF_HRS movwf TIMER_OFF_10MINS movwf TIMER_OFF_MINS movlw d'00' movwf PUMP_ON_100MINS movwf PUMP_ON_10MINS movlw d'01' movwf PUMP_ON_MINS movlw d'00' movwf PUMP_OFF_100MINS movwf PUMP_OFF_10MINS movlw d'01' movwf PUMP_OFF_MINS movlw b'00000000' ;** set up porta as outputs tris PORTA movlw b'00000000' movwf PORTA bsf STATUS,5 ;** access bank 1 of registers ** movlw h'00' movwf PUMP_STAGE movlw h'ff' ;set
up a/d to d movwf ADCON1 movlw h'00' movwf CO2_ON_100MINS movwf CO2_ON_10MINS movlw d'01' movwf CO2_ON_MINS movlw d'00' movwf GAS_ON_100MINS movwf GAS_ON_10MINS movlw d'01' movwf GAS_ON_MINS movlw d'00' movwf CO2_HOLD_100MINS movwf CO2_HOLD_10MINS movlw d'01' movwf CO2_HOLD_MINS movlw d'00' movwf CO2_ON_100MINS_DEC movwf CO2_ON_10MINS_DEC movlw d'01' movwf CO2_ON_MINS_DEC movlw d'00' movwf GAS_ON_100MINS_DEC movwf GAS_ON_10MINS_DEC movlw d'01' movwf GAS_ON_MINS_DEC movlw d'00' movwf CO2_HOLD_100MINS_DEC movwf CO2_HOLD_10MINS_DEC movlw d'01' movwf CO2_HOLD_MINS_DEC movlw d'00' movwf PUMP_ON_100MINS_DEC movwf PUMP_ON_10MINS_DEC movlw d'01' movwf PUMP_ON_MINS_DEC movlw d'00' movwf PUMP_OFF_100MINS_DEC movwf PUMP_OFF_10MINS_DEC movlw d'01' movwf PUMP_OFF_MINS_DEC movlw B'00010000' movwf CO2_STAGE bcf STATUS,5 ;** access bank 0 of registers ** movlw b'00001000' ;Set to b#00001000 movwf CONTROL1 ;set cursor flag movlw 06
;Set to 6 movwf CURSORPOSITION ;**************************** ;* Set CLOCK running * ;**************************** movlw b'11000000' ;Set all interrupts ON movwf INTCON bsf STATUS,5 ;bank1 movlw b'00000001' ;Turn on interrupt (clock) movwf PIE1 bcf STATUS1,5 ;bank0 movlw b'00110001' ;Turn ON clock and prescalar movwf T1CON ;**************************** ;* Jump to main code * ;**************************** bsf PCLATH,3 ;select
PROM page 1 goto MAIN |