; ILLUMINATION WITH ACCELEROMETER ; BY TOSHIE H. LIST P=16F88 #INCLUDE P16F88.INC __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _BODEN_ON & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF & _CPD_OFF __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF CBLOCK 020h cnt70us cnt1ms cnt10ms cnt ad_result pat ENDC ORG 0 CLRF cnt70us CLRF cnt1ms CLRF cnt10ms CLRF cnt CLRF pat BSF STATUS,RP0 MOVLW 01Ch MOVWF TRISA CLRF TRISB MOVLW 080h MOVWF OPTION_REG CLRF INTCON MOVLW 040h MOVWF ADCON1 MOVLW 01Ch MOVWF ANSEL BCF STATUS,RP0 MOVLW 051h MOVWF ADCON0 main_loop CALL wait70us BSF ADCON0,GO ad_loop BTFSC ADCON0,GO GOTO ad_loop MOVF ADRESH,W MOVWF ad_result MOVLW 080h ADDWF ad_result,W ADDWF cnt,F MOVLW 088h MOVWF pat BCF STATUS,C BTFSC cnt,06h RRF pat,F BCF STATUS,C BTFSC cnt,07h RRF pat,F BCF STATUS,C BTFSC cnt,07h RRF pat,F MOVF pat,W MOVWF PORTB CALL wait10ms GOTO main_loop wait70us MOVLW d'56' MOVWF cnt70us NOP NOP wait70us_loop DECFSZ cnt70us, f GOTO wait70us_loop RETURN wait1ms ; Wait for 999.8us MOVLW d'14' MOVWF cnt1ms NOP NOP NOP NOP NOP NOP NOP wait1ms_loop CALL wait70us DECFSZ cnt1ms, f GOTO wait1ms_loop RETURN wait10ms ; Wait for 9999.6us CALL wait1ms CALL wait1ms CALL wait1ms CALL wait1ms CALL wait1ms CALL wait1ms CALL wait1ms CALL wait1ms CALL wait1ms CALL wait1ms RETURN END