;********************************************************************** ; * ; Filename: lamp.asm * ; Date: * ; File Version: * ; * ; Author: el@jap.hu * ; Company: http://jap.hu/electronic/ * ; * ; * ;********************************************************************** ; ; 001-20031024 first version ; 002-2003101026 implement watchdog ; 003-2003121130 ; ; two lamp timers with led indicators ; list p=12F629 #include __CONFIG _CP_OFF & _WDT_ON & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_ON MHZ EQU 4 dly_a EQU .3 * .60 * .100 ; delay in 10 ms (seconds *100) dly_b EQU .10 * .60 * .100; delay in 10 ms (seconds *100) ; port bits BT_A EQU 2 BT_B EQU 3 LD_A EQU 0 LD_B EQU 1 CT_A EQU 4 CT_B EQU 5 ; control state bits DE_A EQU 0 ON_A EQU 1 DE_B EQU 2 ON_B EQU 3 ;***** VARIABLE DEFINITIONS CBLOCK 0x20 dly0 ; delay counter 0 dly1 ; delay counter 1 ct_states ; control state register port_state ; next port state bt_a ; button states prev_bt_a ; prevous button states bt_a_cnt ; counter for hold time bt_a_holdtime ; min hold time - from EEPROM ct_a_time : 2 ; timer delay time - from EEPROM ct_a_cnt : 2 ; timer delay counter bt_b prev_bt_b bt_b_cnt ; counter for hold time bt_b_holdtime ; from EEPROM ct_b_time : 2 ; timer delay time - from EEPROM ct_b_cnt : 2 ; timer delay counter ENDC org 0x2120 de low dly_a, high dly_a ; delay time de 0x03 ; button hold time org 0x2130 de low dly_b, high dly_b ; delay time de 0x03 ; button hold time org 0 goto main nop nop retfie eeread bsf STATUS, RP0 movwf EEADR bsf EECON1, RD movf EEDATA, W bcf STATUS, RP0 return delay10 ; delay 10 ms movlw .192 movwf dly0 delay_a movlw .4 * MHZ movwf dly1 delay_b decfsz dly1, F goto delay_b decfsz dly0, F goto delay_a return main bsf STATUS, RP0 bcf STATUS, RP1 call 0x3ff movwf OSCCAL clrwdt clrf TMR0 movlw 0x0f ; watchdog prescaler 1:128 movwf OPTION_REG clrwdt movlw (1<