led fader

Discussion in 'Programmer's Corner' started by Foxhunter, Nov 11, 2009.

  1. Foxhunter

    Thread Starter New Member

    Nov 3, 2009
    2
    0
    Hi Everyone
    I would be very grateful if I could have some help I bought a Pic programmer to program the pic16f628a
    this programmer has some examples with it, one example uses 6 leds which sequence through the six leds one at a time
    then starts over again using notepad++ I was able to make the leds do different things by changing the ("0" and "1" in effect 1) what I would like some help with is what code could I add to the attached program that will let the leds fade instead of just turning off
    thanks for all your help
    john

    ;**************************************************************************
    ;* VELLEMAN High-Q KIT K8048/VM111 SAMPLE SOFTWARE *
    ;**************************************************************************
    ;* DEMO1: Simple Running light for testing LD1...LD5 *
    ;* DEMO1: Program for testing K8048/VM111 with PIC16F627! *
    ;**************************************************************************
    ;* (C) VELLEMAN Components,2003 All rights reserved *
    ;**************************************************************************
    ;* Hardw. Rev: P8048'1 Softw. Rev: 1.20 *
    ;* OSC.......: XT 4MHz Max. POWER.....: 12V 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
    ;==========================================================================
    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'255' ;54 Generate approx 10mS delay at 4Mhz CLK
    MOVWF TIMER2
    DEL_LOOP1 MOVLW D'255' ;60
    MOVWF TIMER1
    DEL_LOOP2 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
    ;

    EFFECT_1 MOVLW B'00000001' ;Activate LD1 (RB0)
    MOVWF PORTB
    CALL DELAY_ROUTINE
    MOVLW B'00000010' ;Activate LD2 (RB1)
    MOVWF PORTB
    CALL DELAY_ROUTINE
    MOVLW B'00000100' ;Activate LD3 (RB2)
    MOVWF PORTB
    CALL DELAY_ROUTINE
    MOVLW B'00001000' ;Activate LD4 (RB3)
    MOVWF PORTB
    CALL DELAY_ROUTINE
    MOVLW B'00010000' ;Activate LD5 (RB4)
    MOVWF PORTB
    CALL DELAY_ROUTINE
    MOVLW B'00100000' ;Activate LD6 (RB5)
    MOVWF PORTB
    CALL DELAY_ROUTINE
    GOTO EFFECT_1
    END
     
  2. t06afre

    AAC Fanatic!

    May 11, 2009
    5,939
    1,222
    To fade you may blink the led with a decreasing frequency. Remember the human eye can not se the blinking, if it is fast enough. You can also try PWM. Use a constant frequency and vary the on/off time
     
Loading...