Advertisement
Guest User

16F627

a guest
Nov 6th, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. W                            EQU     H'0000'
  2. F                            EQU     H'0001'
  3.  
  4. ;----- Register Files------------------------------------------------------
  5.  
  6. INDF                         EQU     H'0000'
  7. TMR0                         EQU     H'0001'
  8. PCL                          EQU     H'0002'
  9. STATUS                       EQU     H'0003'
  10. FSR                          EQU     H'0004'
  11. PORTA                        EQU     H'0005'
  12. PORTB                        EQU     H'0006'
  13.  
  14. INTCON                       EQU     H'000B'
  15. OPTION_REG                   EQU     H'0081'
  16. TRISA                        EQU     H'0085'
  17. TRISB                        EQU     H'0086'
  18. CMCON                        EQU     H'001F'
  19.  
  20. ;----- STATUS Bits --------------------------------------------------------
  21. IRP                          EQU     H'0007'
  22. RP1                          EQU     H'0006'
  23. RP0                          EQU     H'0005'
  24. NOT_TO                       EQU     H'0004'
  25. NOT_PD                       EQU     H'0003'
  26. Z                            EQU     H'0002'
  27. DC                           EQU     H'0001'
  28. C                            EQU     H'0000'
  29.  
  30. ;==========================================================================
  31. ;
  32. ;       RAM Definition
  33. ;
  34. ;==========================================================================
  35.  
  36.     __MAXRAM H'01FF'
  37.     __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
  38.     __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
  39.     __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
  40.     __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'
  41.  
  42. ;==========================================================================
  43. ;
  44. ;       Configuration Bits
  45. ;
  46. ;==========================================================================
  47.  
  48. _BODEN_ON                    EQU     H'3FFF'
  49. _BODEN_OFF                   EQU     H'3FBF'
  50. _CP_ALL                      EQU     H'03FF'
  51. _CP_75                       EQU     H'17FF'
  52. _CP_50                       EQU     H'2BFF'
  53. _CP_OFF                      EQU     H'3FFF'
  54. _DATA_CP_ON                  EQU     H'3EFF'
  55. _DATA_CP_OFF                 EQU     H'3FFF'
  56. _PWRTE_OFF                   EQU     H'3FFF'
  57. _PWRTE_ON                    EQU     H'3FF7'
  58. _WDT_ON                      EQU     H'3FFF'
  59. _WDT_OFF                     EQU     H'3FFB'
  60. _LVP_ON                      EQU     H'3FFF'
  61. _LVP_OFF                     EQU     H'3F7F'
  62. _MCLRE_ON                    EQU     H'3FFF'
  63. _MCLRE_OFF                   EQU     H'3FDF'
  64. _ER_OSC_CLKOUT               EQU     H'3FFF'
  65. _ER_OSC_NOCLKOUT             EQU     H'3FFE'
  66. _INTRC_OSC_CLKOUT            EQU     H'3FFD'
  67. _INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
  68. _EXTCLK_OSC                  EQU     H'3FEF'
  69. _LP_OSC                      EQU     H'3FEC'
  70. _XT_OSC                      EQU     H'3FED'
  71. _HS_OSC                      EQU     H'3FEE'
  72.  
  73.     __CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
  74.  
  75. ;==========================================================================
  76. ;       Variable Definition
  77. ;==========================================================================
  78. TIMER1      EQU H'20'       ;Used in delay routine
  79. TIMER2      EQU H'21'       ; " "   "    
  80. PATERN      EQU H'22'       ;Pattern data for effect's
  81. COUNT       EQU H'23'
  82.  
  83.         ORG 0       ;Reset vector address
  84.         GOTO    RESET       ;goto RESET routine when boot.
  85.  
  86.  
  87. ;       *********************************************
  88. ;       *  Example of a delay routine               *
  89. ;       *********************************************
  90.  
  91. DELAY_ROUTINE   MOVLW   D'255'         ;54 Generate approx 10mS delay at 4Mhz CLK
  92.                 MOVWF   TIMER2
  93. DEL_LOOP1       MOVLW   D'255'         ;60 
  94.                 MOVWF   TIMER1
  95. DEL_LOOP2       DECFSZ  TIMER1,F
  96.                 GOTO    DEL_LOOP2
  97.                 DECFSZ  TIMER2,F
  98.                 GOTO    DEL_LOOP1
  99.                 RETLW   0
  100.  
  101.  
  102. ;          **********************************
  103. ;              **  RESET :  main boot routine  **
  104. ;              **********************************
  105.  
  106. RESET       MOVLW   B'00000111' ;Disable Comparator module's
  107.         MOVWF   CMCON
  108.         ;
  109.         BSF STATUS,RP0  ;Switch to register bank 1
  110.                     ;Disable pull-ups
  111.                     ;INT on rising edge
  112.                     ;TMR0 to CLKOUT
  113.                     ;TMR0 Incr low2high trans.
  114.                     ;Prescaler assign to Timer0
  115.                     ;Prescaler rate is 1:256
  116.         MOVLW   B'11010111' ;Set PIC options (See datasheet).
  117.         MOVWF   OPTION_REG  ;Write the OPTION register.
  118.         ;
  119.         CLRF    INTCON      ;Disable interrupts
  120.         MOVLW   B'11000000'
  121.         MOVWF   TRISB       ;RB7 & RB6 are inputs.
  122.                     ;RB5...RB0 are outputs.
  123.         MOVLW   B'11111111' ;all RA ports are inputs
  124.         MOVWF   TRISA
  125.         BCF STATUS,RP0  ;Switch Back to reg. Bank 0
  126.         CLRF    PORTB      
  127.         ;
  128.  
  129.  
  130. ;************************************************************************************************
  131. ;Program Start
  132. ;************************************************************************************************
  133.  
  134. START
  135. SW0             BTFSC   PORTA,0
  136.                 GOTO    ROUTINE_2
  137.                 BCF     PORTB,0
  138.  
  139. SW1             BTFSC   PORTA,1
  140.                 GOTO    ROUTINE_3
  141.                 BCF     PORTB,1            
  142.                
  143. SW2             BTFSC   PORTA,2
  144.                 GOTO    ROUTINE_4
  145.                 BCF     PORTB,2
  146.  
  147. SW3             BTFSC   PORTA,3
  148.                 GOTO    ROUTINE_5
  149.                 BCF     PORTB,3
  150.  
  151. ROUTINE_1       MOVLW   b'00111111'
  152.                 MOVWF   PORTB
  153.                 CALL    DELAY_ROUTINE
  154.                 MOVLW   b'00000000'
  155.                 MOVWF   PORTB
  156.                 CALL    DELAY_ROUTINE
  157.                 GOTO    START
  158.  
  159. ROUTINE_2       MOVLW   .10
  160.                 MOVWF   COUNT
  161. TWO             MOVLW   B'00110011'
  162.                 MOVWF   PORTB
  163.                 CALL    DELAY_ROUTINE
  164.                 MOVLW   B'00000000'
  165.                 MOVWF   PORTB
  166.                 CALL    DELAY_ROUTINE
  167.                 DECFSZ  COUNT
  168.                 GOTO    TWO
  169.                 GOTO    START              
  170.  
  171. ROUTINE_3       MOVLW   .10
  172.                 MOVWF   COUNT
  173. THREE           MOVLW   B'00001100'
  174.                 MOVWF   PORTB
  175.                 CALL    DELAY_ROUTINE
  176.                 MOVLW   B'00000000'
  177.                 MOVWF   PORTB
  178.                 CALL    DELAY_ROUTINE
  179.                 DECFSZ  COUNT
  180.                 GOTO    THREE
  181.                 GOTO    START
  182.  
  183. ROUTINE_4       MOVLW   .10
  184.                 MOVWF   COUNT
  185. FOUR            MOVLW   B'00100001'
  186.                 MOVWF   PORTB
  187.                 CALL    DELAY_ROUTINE
  188.                 MOVLW   B'00000000'
  189.                 MOVWF   PORTB
  190.                 CALL    DELAY_ROUTINE
  191.                 DECFSZ  COUNT
  192.                 GOTO    FOUR
  193.                 GOTO    START
  194.  
  195. ROUTINE_5       MOVLW   .10
  196.                 MOVWF   COUNT
  197. FIVE            MOVLW   B'00101010'
  198.                 MOVWF   PORTB
  199.                 CALL    DELAY_ROUTINE
  200.                 MOVLW   B'00000000'
  201.                 MOVWF   PORTB
  202.                 CALL    DELAY_ROUTINE
  203.                 DECFSZ  COUNT
  204.                 GOTO    FIVE
  205.                 GOTO    START
  206. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement