Guest User

Untitled

a guest
Nov 24th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 2.62 KB | None | 0 0
  1.         list        p=16F887, r=dec, w=-302
  2.         include     <P16F887.INC>
  3.         __config    _CONFIG1,_LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTOSCIO
  4.         __config    _CONFIG2,_WRT_HALF & _BOR21V
  5.  
  6. #define     LED0        PORTD,0
  7.  
  8.                 cblock          0x20
  9.                                 COUNT1
  10.                                 COUNT2
  11.                 endc
  12.  
  13.                 cblock          0x70
  14.                                 W_TEMP
  15.                                 STATUS_TEMP
  16.                                 PCLATH_TEMP
  17.                 endc
  18.  
  19.         org     0x000       ;reset vector
  20.         goto        START
  21.  
  22.                 org             0x004           ;interrupt vector
  23.                 movwf           W_TEMP          ;push W
  24.                 swapf           STATUS,W        ;push STATUS
  25.                 banksel         0x00            ;default to bank 0
  26.                 movwf           STATUS_TEMP
  27.                 movfw           PCLATH          ;push PCLATH
  28.                 movwf           PCLATH_TEMP
  29.  
  30.                 btfsc           INTCON,T0IF     ;is it a tmr0 interrupt?
  31.                 goto            TIMER           ;yes
  32.                 goto            ExitISR         ;no, exit interrupt handler
  33.  
  34. TIMER           movlw           b'00000001'
  35.                 xorwf           PORTD,F
  36.                 clrf            TMR0            ;reset tmr0
  37.                 bcf             INTCON,T0IF     ;clear tmr0 interrupt flag
  38.                 goto            ExitISR
  39.  
  40. ExitISR         movfw           PCLATH_TEMP     ;pop PCLATH
  41.                 movwf           PCLATH
  42.                 swapf           STATUS_TEMP,W   ;pop STATUS
  43.                 movwf           STATUS
  44.                 swapf           W_TEMP,F        ;pop W
  45.                 swapf           W_TEMP,W
  46.                 retfie                          ;done, exit interrupt
  47.  
  48. START       clrf        PORTA       ;init ports
  49.         clrf        PORTB
  50.         clrf        PORTC
  51.         clrf        PORTD
  52.         clrf        PORTE
  53.         banksel     ANSEL       ;bank 3
  54.         movlw       b'00000000' ;all ports digital I/O
  55.         movwf       ANSEL
  56.         movwf       ANSELH
  57.         banksel     TRISA       ;bank 1
  58.         movlw       b'00000000' ;all ports output
  59.         movwf       TRISA
  60.         movwf       TRISB
  61.         movwf       TRISC
  62.         movwf       TRISD
  63.         movwf       TRISE
  64.                 movlw           b'11010111'
  65.                 movwf           OPTION_REG
  66.         banksel     0x00        ;bank 0
  67.  
  68.                 clrf            TMR0            ;init tmr0
  69.                 bcf             INTCON,T0IF     ;clear tmr0 interrupt flag
  70.         bsf             INTCON,T0IE     ;enable tmr0 interrupts
  71.                 bsf             INTCON,GIE      ;enable unmasked interrupts
  72.                 goto            $
  73.  
  74.         end                             ;end of file
Add Comment
Please, Sign In to add comment