Need Help! PIC16F628A-Led effects

Discussion in 'Programmer's Corner' started by semu89, Feb 29, 2012.

  1. semu89

    Thread Starter New Member

    Feb 29, 2012
    1
    0
    Hi. I have to do assignment to make this code work in the PicsimLab. I have tried most options, spended few hours to search in this forums and Google to get some answers how to make it work. Clearly I am too dumb for this. :confused:
    It is Welleman K8048 schemes Demo sample simulation.
    Code ( (Unknown Language)):
    1. ;**************************************************************************
    2. ;*             VELLEMAN   High-Q KIT  K8048/VM111 SAMPLE SOFTWARE         *
    3. ;**************************************************************************
    4. ;*          Microchip PIC(tm) Programmer & experiment board               *
    5. ;*      DEMO2 program for testing K8048 with PIC16F627(A)!            *
    6. ;*   Generate 4 LED light effects, you can select these with  SW1..4      *
    7. ;**************************************************************************
    8. ;*          (C) VELLEMAN Components,2003-2008  All rights reserved        *
    9. ;**************************************************************************
    10. ;*          Hardw. Rev: P8048'1          Softw. Rev:  1.22                *
    11. ;*          OSC.......: XT 4MHz Max.     POWER.....:  12V DC              *
    12. ;**************************************************************************
    13.  
    14. W                            EQU     H'0000'
    15. F                            EQU     H'0001'
    16.  
    17. ;----- Register Files------------------------------------------------------
    18.  
    19. INDF                         EQU     H'0000'
    20. TMR0                         EQU     H'0001'
    21. PCL                          EQU     H'0002'
    22. STATUS                       EQU     H'0003'
    23. FSR                          EQU     H'0004'
    24. PORTA                        EQU     H'0005'
    25. PORTB                        EQU     H'0006'
    26.  
    27. INTCON                       EQU     H'000B'
    28. OPTION_REG                   EQU     H'0081'
    29. TRISA                        EQU     H'0085'
    30. TRISB                        EQU     H'0086'
    31. CMCON                        EQU     H'001F'
    32.  
    33. ;----- STATUS Bits --------------------------------------------------------
    34. IRP                          EQU     H'0007'
    35. RP1                          EQU     H'0006'
    36. RP0                          EQU     H'0005'
    37. NOT_TO                       EQU     H'0004'
    38. NOT_PD                       EQU     H'0003'
    39. Z                            EQU     H'0002'
    40. DC                           EQU     H'0001'
    41. C                            EQU     H'0000'
    42.  
    43. ;==========================================================================
    44. ;
    45. ;       RAM Definition
    46. ;
    47. ;==========================================================================
    48.  
    49.     __MAXRAM H'01FF'
    50.     __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
    51.     __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
    52.     __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
    53.     __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'
    54.  
    55. ;==========================================================================
    56. ;
    57. ;       Configuration Bits
    58. ;
    59. ;==========================================================================
    60.  
    61. _BODEN_ON                    EQU     H'3FFF'
    62. _BODEN_OFF                   EQU     H'3FBF'
    63. _CP_ALL                      EQU     H'03FF'
    64. _CP_75                       EQU     H'17FF'
    65. _CP_50                       EQU     H'2BFF'
    66. _CP_OFF                      EQU     H'3FFF'
    67. _DATA_CP_ON                  EQU     H'3EFF'
    68. _DATA_CP_OFF                 EQU     H'3FFF'
    69. _PWRTE_OFF                   EQU     H'3FFF'
    70. _PWRTE_ON                    EQU     H'3FF7'
    71. _WDT_ON                      EQU     H'3FFF'
    72. _WDT_OFF                     EQU     H'3FFB'
    73. _LVP_ON                      EQU     H'3FFF'
    74. _LVP_OFF                     EQU     H'3F7F'
    75. _MCLRE_ON                    EQU     H'3FFF'
    76. _MCLRE_OFF                   EQU     H'3FDF'
    77. _ER_OSC_CLKOUT               EQU     H'3FFF'
    78. _ER_OSC_NOCLKOUT             EQU     H'3FFE'
    79. _INTRC_OSC_CLKOUT            EQU     H'3FFD'
    80. _INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
    81. _EXTCLK_OSC                  EQU     H'3FEF'
    82. _LP_OSC                      EQU     H'3FEC'
    83. _XT_OSC                      EQU     H'3FED'
    84. _HS_OSC                      EQU     H'3FEE'
    85.  
    86.     __CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
    87.  
    88. ;==========================================================================
    89. ;       Variable Definition
    90. ;==========================================================================
    91. ;INPUTS
    92. SW1     EQU     H'00'       ;SW1 is triggering RA0
    93. SW2     EQU     H'01'       ;SW2 is triggering RA1
    94. SW3     EQU     H'02'       ;SW3 is triggering RA2
    95. SW4     EQU     H'03'       ;SW4 is triggering RA3
    96. TIMER1      EQU H'20'       ;Used in delay routine
    97. TIMER2      EQU H'21'       ; " "   "  
    98. PATERN      EQU H'22'       ;Pattern data for effect's
    99.  
    100.  
    101.         ORG 0       ;Reset vector address
    102.         GOTO    RESET       ;goto RESET routine when boot.
    103.  
    104.  
    105. ;       *********************************************
    106. ;       *  Example of a delay routine               *
    107. ;       *********************************************
    108.  
    109. DELAY_ROUTINE   MOVLW   D'100'         ;54 Generate approx 10mS delay at 4Mhz CLK
    110.                 MOVWF   TIMER2
    111. DEL_LOOP1       MOVLW   D'100'         ;60 
    112.                 MOVWF   TIMER1
    113. DEL_LOOP2       BTFSC   PORTA,SW1
    114.         GOTO    MENU
    115.         BTFSC   PORTA,SW2
    116.         GOTO    MENU
    117.         BTFSC   PORTA,SW3
    118.         GOTO    MENU
    119.         BTFSC   PORTA,SW4
    120.         GOTO    MENU
    121.         DECFSZ  TIMER1,F
    122.                 GOTO    DEL_LOOP2
    123.                 DECFSZ  TIMER2,F
    124.                 GOTO    DEL_LOOP1
    125.         RETLW   0
    126.  
    127.  
    128. ;          **********************************
    129. ;              **  RESET :  main boot routine  **
    130. ;              **********************************
    131.  
    132. RESET       MOVLW   B'00000111' ;Disable Comparator module's
    133.         MOVWF   CMCON
    134.         ;
    135.         BSF STATUS,RP0  ;Switch to register bank 1
    136.                     ;Disable pull-ups
    137.                     ;INT on rising edge
    138.                     ;TMR0 to CLKOUT
    139.                     ;TMR0 Incr low2high trans.
    140.                     ;Prescaler assign to Timer0
    141.                     ;Prescaler rate is 1:256
    142.         MOVLW   B'11010111' ;Set PIC options (See datasheet).
    143.         MOVWF   OPTION_REG  ;Write the OPTION register.
    144.         ;
    145.         CLRF    INTCON      ;Disable interrupts
    146.         MOVLW   B'11000000'
    147.         MOVWF   TRISB       ;RB7 & RB6 are inputs.
    148.                     ;RB5...RB0 are outputs.
    149.         MOVLW   B'11111111' ;all RA ports are inputs
    150.         MOVWF   TRISA
    151.         BCF STATUS,RP0  ;Switch Back to reg. Bank 0
    152.         CLRF    PORTB
    153.         GOTO    EFFECT_4       
    154.         ;
    155.  
    156. MENU        CLRF    PORTB
    157.         ;
    158.         BTFSC   PORTA,SW1
    159.         GOTO    EFFECT_1
    160.         BTFSC   PORTA,SW2
    161.         GOTO    EFFECT_2
    162.         BTFSC   PORTA,SW3
    163.         GOTO    EFFECT_3
    164.         BTFSC   PORTA,SW4
    165.         GOTO    EFFECT_4
    166.         GOTO    MENU
    167.                
    168.  
    169. EFFECT_1    BTFSC   PORTA,SW1
    170.         GOTO    EFFECT_1
    171. E1      MOVLW   B'00100000' ;
    172.         MOVWF   PORTB
    173.         CALL    DELAY_ROUTINE
    174.         MOVLW   B'00110000' ;
    175.         MOVWF   PORTB
    176.         CALL    DELAY_ROUTINE
    177.         MOVLW   B'00111000' ;
    178.         MOVWF   PORTB
    179.         CALL    DELAY_ROUTINE
    180.         MOVLW   B'00111100' ;
    181.         MOVWF   PORTB
    182.         CALL    DELAY_ROUTINE
    183.         MOVLW   B'00111110' ;
    184.         MOVWF   PORTB
    185.         CALL    DELAY_ROUTINE
    186.         MOVLW   B'00111111' ;
    187.         MOVWF   PORTB
    188.         CALL    DELAY_ROUTINE
    189.         MOVLW   B'00111110' ;
    190.         MOVWF   PORTB
    191.         CALL    DELAY_ROUTINE
    192.         MOVLW   B'00111100' ;
    193.         MOVWF   PORTB
    194.         CALL    DELAY_ROUTINE
    195.         MOVLW   B'00111000' ;
    196.         MOVWF   PORTB
    197.         CALL    DELAY_ROUTINE
    198.         MOVLW   B'00110000' ;
    199.         MOVWF   PORTB
    200.         CALL    DELAY_ROUTINE
    201.         GOTO    E1
    202.        
    203.  
    204. EFFECT_2    BTFSC   PORTA,SW2
    205.         GOTO    EFFECT_2
    206. E2      MOVLW   B'00000001' ;
    207.         MOVWF   PORTB
    208.         CALL    DELAY_ROUTINE
    209.         MOVLW   B'00000010' ;
    210.         MOVWF   PORTB
    211.         CALL    DELAY_ROUTINE
    212.         MOVLW   B'00000100' ;
    213.         MOVWF   PORTB
    214.         CALL    DELAY_ROUTINE
    215.         MOVLW   B'00001000' ;
    216.         MOVWF   PORTB
    217.         CALL    DELAY_ROUTINE
    218.         MOVLW   B'00010000' ;
    219.         MOVWF   PORTB
    220.         CALL    DELAY_ROUTINE
    221.         MOVLW   B'00100000' ;
    222.         MOVWF   PORTB
    223.         CALL    DELAY_ROUTINE
    224.         MOVLW   B'00010000' ;
    225.         MOVWF   PORTB
    226.         CALL    DELAY_ROUTINE
    227.         MOVLW   B'00001000' ;
    228.         MOVWF   PORTB
    229.         CALL    DELAY_ROUTINE
    230.         MOVLW   B'00000100' ;
    231.         MOVWF   PORTB
    232.         CALL    DELAY_ROUTINE
    233.         MOVLW   B'00000010' ;
    234.         MOVWF   PORTB
    235.         CALL    DELAY_ROUTINE
    236.         GOTO    E2
    237.  
    238. EFFECT_3    BTFSC   PORTA,SW3
    239.         GOTO    EFFECT_3
    240. E3      MOVLW   B'00000111' ;
    241.         MOVWF   PORTB
    242.         CALL    DELAY_ROUTINE
    243.         CALL    DELAY_ROUTINE
    244.         MOVLW   B'00111000' ;
    245.         MOVWF   PORTB
    246.         CALL    DELAY_ROUTINE
    247.         CALL    DELAY_ROUTINE
    248.         GOTO    E3
    249.  
    250. EFFECT_4    BTFSC   PORTA,SW4
    251.         GOTO    EFFECT_4
    252. E4      MOVLW   B'00001000' ;
    253.         MOVWF   PORTB
    254.         CALL    DELAY_ROUTINE
    255.         CALL    DELAY_ROUTINE
    256.         MOVLW   B'00000000' ;
    257.         MOVWF   PORTB
    258.         CALL    DELAY_ROUTINE
    259.         CALL    DELAY_ROUTINE
    260.         GOTO    E4
    261.  
    262.  
    263.         END
    264.  
    For any assistance i can offer:
    Using PicsimLab simulator: http://sourceforge.net/projects/picsim/. Configure options: Board 1 and 4Mhz.
    and this compilator to HEX file: http://melabs.com/downloads/MPASMWIN520.zip
    I would really appreciate for any help.
     
Loading...