;************************************************************************** ;* (C) Ibanez:) All rights reserved * ;************************************************************************** ;* Hardw. Rev: P8048'1 Softw. Rev: 1.00 * ;* OSC.......: XT 4MHz Max. POWER.....: 5V DC * ;************************************************************************** W EQU H'0000' F EQU H'0001' ;----- Register Files------------------------------------------------------ INDF EQU H'0000' TMR0 EQU H'0001' PCL EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' PORTA EQU H'0005' PORTB EQU H'0006' INTCON EQU H'000B' OPTION_REG EQU H'0081' TRISA EQU H'0085' TRISB EQU H'0086' CMCON EQU H'001F' ;----- STATUS Bits -------------------------------------------------------- IRP EQU H'0007' RP1 EQU H'0006' RP0 EQU H'0005' NOT_TO EQU H'0004' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' ;========================================================================== ; ; RAM Definition ; ;========================================================================== __MAXRAM H'01FF' __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E' __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E' __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F' __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF' ;========================================================================== ; ; Configuration Bits ; ;========================================================================== _BODEN_ON EQU H'3FFF' _BODEN_OFF EQU H'3FBF' _CP_ALL EQU H'03FF' _CP_75 EQU H'17FF' _CP_50 EQU H'2BFF' _CP_OFF EQU H'3FFF' _DATA_CP_ON EQU H'3EFF' _DATA_CP_OFF EQU H'3FFF' _PWRTE_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LVP_ON EQU H'3FFF' _LVP_OFF EQU H'3F7F' _MCLRE_ON EQU H'3FFF' _MCLRE_OFF EQU H'3FDF' _ER_OSC_CLKOUT EQU H'3FFF' _ER_OSC_NOCLKOUT EQU H'3FFE' _INTRC_OSC_CLKOUT EQU H'3FFD' _INTRC_OSC_NOCLKOUT EQU H'3FFC' _EXTCLK_OSC EQU H'3FEF' _LP_OSC EQU H'3FEC' _XT_OSC EQU H'3FED' _HS_OSC EQU H'3FEE' __CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;========================================================================== ; Variable Definition ;========================================================================== ;INPUTS SW1 EQU H'00' ;SW1 is triggering RA0 SW2 EQU H'01' ;SW2 is triggering RA1 SW3 EQU H'02' ;SW3 is triggering RA2 SW4 EQU H'03' ;SW4 is triggering RA3 TIMER1 EQU H'20' ;Used in delay routine TIMER2 EQU H'21' ; " " " PATERN EQU H'22' ;Pattern data for effect's ORG 0 ;Reset vector address GOTO RESET ;goto RESET routine when boot. ; ********************************************* ; * Example of a delay routine * ; ********************************************* DELAY_ROUTINE MOVLW D'100' ;54 Generate approx 10mS delay at 4Mhz CLK MOVWF TIMER2 DEL_LOOP1 MOVLW D'100' ;60 MOVWF TIMER1 DEL_LOOP2 BTFSC PORTA,SW1 GOTO MENU BTFSC PORTA,SW2 GOTO MENU BTFSC PORTA,SW3 GOTO MENU BTFSC PORTA,SW4 GOTO MENU DECFSZ TIMER1,F GOTO DEL_LOOP2 DECFSZ TIMER2,F GOTO DEL_LOOP1 RETLW 0 ; ********************************** ; ** RESET : main boot routine ** ; ********************************** RESET MOVLW B'00000111' ;Disable Comparator module's MOVWF CMCON ; BSF STATUS,RP0 ;Switch to register bank 1 ;Disable pull-ups ;INT on rising edge ;TMR0 to CLKOUT ;TMR0 Incr low2high trans. ;Prescaler assign to Timer0 ;Prescaler rate is 1:256 MOVLW B'11010111' ;Set PIC options (See datasheet). MOVWF OPTION_REG ;Write the OPTION register. ; CLRF INTCON ;Disable interrupts MOVLW B'11000000' MOVWF TRISB ;RB7 & RB6 are inputs. ;RB5...RB0 are outputs. MOVLW B'11111111' ;all RA ports are inputs MOVWF TRISA BCF STATUS,RP0 ;Switch Back to reg. Bank 0 CLRF PORTB GOTO EFFECT_1 ; MENU CLRF PORTB ; BTFSC PORTA,SW1 GOTO EFFECT_1 BTFSC PORTA,SW2 GOTO EFFECT_2 BTFSC PORTA,SW3 GOTO EFFECT_3 BTFSC PORTA,SW4 GOTO EFFECT_4 GOTO MENU EFFECT_1 BTFSC PORTA,SW1 GOTO EFFECT_1 E1 MOVLW B'00000001' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000001' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000010' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000010' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000100' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000100' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00001000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00001000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00010000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00010000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00100000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00100000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE GOTO E1 EFFECT_2 BTFSC PORTA,SW2 GOTO EFFECT_2 E2 MOVLW B'00000111' ;Activate LD1 (RB0) MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'01111000' ;Activate LD2 (RB1) MOVWF PORTB CALL DELAY_ROUTINE GOTO E2 EFFECT_3 BTFSC PORTA,SW3 GOTO EFFECT_3 E3 MOVLW B'00000111' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000111' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00111000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00111000' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00000000' ; MOVWF PORTB CALL DELAY_ROUTINE GOTO E3 EFFECT_4 BTFSC PORTA,SW4 GOTO EFFECT_4 E4 MOVLW B'00100001' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00010010' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00001100' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00001100' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00010010' ; MOVWF PORTB CALL DELAY_ROUTINE MOVLW B'00100001' ; MOVWF PORTB CALL DELAY_ROUTINE GOTO E4 END