SHARE
TWEET

Untitled

a guest Aug 22nd, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. PROCESSOR   16F1718
  3.     RADIX       dec
  4.  
  5.     INCLUDE "p16f1718.inc"
  6.  
  7.     __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _MCLRE_ON & _BOREN_ON & _FCMEN_OFF
  8.     __config _CONFIG2, _PLLEN_OFF & _ZCDDIS_ON & _PPS1WAY_OFF
  9.  
  10.  
  11. S1  EQU 0x74
  12. L1  EQU 0x75
  13. I0  EQU 0x76    ;   interrupt temp
  14.  
  15. C1  EQU 0x77
  16. F1  EQU 0x78    ;   (not) IOCBF flags
  17.  
  18.     ; reset vector
  19.  
  20.     PAGESEL init
  21.     GOTO    init
  22.  
  23.     ; interrupt vector
  24.  
  25.     ORG __VECTOR_INT
  26.  
  27.     BTFSS   INTCON,IOCIF
  28.     BRA _iocx
  29.  
  30.     BANKSEL IOCBF
  31.     MOVLW   0xFF
  32.     XORWF   IOCBF,W
  33.     ANDWF   IOCBF,F
  34.     MOVWF   F1
  35.  
  36.     BTFSC   F1,6
  37.     BRA _iocx       ; bra to the next number
  38.     MOVFW   S1      ; **** number inside S1 (?)
  39.     BNZ _bnc        ; bouncing here
  40.     MOVLW   0x02   
  41.     MOVWF   S1
  42.  
  43.     BTFSS   C1,6
  44.     BRA _rised
  45.  
  46.     ;BANKSEL    PORTB
  47.     ;BTFSS  PORTB,6
  48.  
  49.     BSF IOCBP,IOCBP6
  50.     BCF IOCBN,IOCBN6
  51.     BCF C1,6        ; ******   
  52.  
  53.     MOVLW   'L'
  54.     CALL    dbg
  55.    
  56.     ;MOVLW  0x03       
  57.     ;XORWF  L1,F
  58.     ;BTFSS  L1,0        ; switch led every time button is pushed
  59.     ;BRA    _iocx
  60.     ;BANKSEL    TRISA
  61.     ;MOVLW  0x02
  62.     ;XORWF  TRISA,F
  63.  
  64.     BRA _iocx
  65.  
  66. _rised: BSF IOCBN,IOCBN6
  67.     BCF IOCBP,IOCBP6
  68.     BSF C1,6        ; ******
  69.  
  70.     MOVLW   'H'
  71.     CALL    dbg
  72.  
  73.     ;MOVLW  0x03       
  74.     ;XORWF  L1,F
  75.     ;BTFSS  L1,0        ; switch led every time button is pushed
  76.     ;BRA    _iocx
  77.     ;BANKSEL    TRISA
  78.     ;MOVLW  0x02
  79.     ;XORWF  TRISA,F
  80.  
  81. _iocx:  BANKSEL PIR1
  82.     BTFSS   PIR1,TMR1IF
  83.     BRA _tmr1x
  84.  
  85.     BCF PIR1,TMR1IF
  86.  
  87.     ; time set
  88.  
  89.     BANKSEL TMR1H   ; FFFF - 7 (in hex) ... 31k*225us=7
  90.     MOVLW   0xFF    ; 225us delay
  91.     MOVWF   TMR1H  
  92.     MOVLW   0xF8   
  93.     MOVWF   TMR1L  
  94.    
  95.     MOVFW   S1      ; **** number inside S1 (?)
  96.     BZ  _tmr1x      ; if there is nothing we finish interrupt
  97.     DECF    S1,1
  98.  
  99. _tmr1x: RETFIE
  100.  
  101. _bnc:   MOVLW   'B'
  102.     CALL    dbg
  103.  
  104.     ;BANKSEL    TRISA
  105.     ;MOVLW  0x01    ; switch LED
  106.     ;XORWF  TRISA,F
  107.     BRA _iocx
  108.  
  109. init:   BANKSEL LATA
  110.     CLRF    LATA
  111.     CLRF    LATB
  112.     BSF LATB,7      ; RB7 default high
  113.     CLRF    LATC
  114.  
  115.     BANKSEL TRISA
  116.     MOVLW   10011011b   ; RA2,RA5,RA6 out
  117.     MOVWF   TRISA
  118.     MOVLW   01111111b   ; RB7 out
  119.     MOVWF   TRISB
  120.     MOVLW   11111111b   ; all in
  121.     MOVWF   TRISC
  122.  
  123.     ; setup Pin Properties
  124.  
  125.     BANKSEL ANSELA
  126.     CLRF    ANSELB
  127.  
  128.     BANKSEL OPTION_REG
  129.     BCF OPTION_REG,NOT_WPUEN
  130.  
  131.     ; setup IOC
  132.  
  133.     BANKSEL IOCAP
  134.     MOVLW   01111111b   ; RB0-RB6
  135.     ;MOVWF  IOCBP       ; we check falling edge first (N)
  136.     MOVWF   IOCBN
  137.     MOVLW   0xFF
  138.     MOVWF   C1
  139.  
  140.     ; enable IRQ
  141.  
  142.     BANKSEL INTCON
  143.     BSF INTCON,IOCIE    ; enable IOC IRQ
  144.     BSF INTCON,PEIE ; enable peripheral IRQ--
  145.     BSF INTCON,GIE  ; enable global IRQ
  146.     BANKSEL PIE1
  147.     BSF PIE1,TMR1IE ; enable
  148.  
  149.     ; configure timer1 
  150.  
  151.     BANKSEL T1CON
  152.     BSF T1CON,6    
  153.     BSF T1CON,7
  154.     BSF T1CON,TMR1ON    ; enable Timer1 On bit
  155.     MOVLW   0xFF   
  156.     IORWF   TMR1H,F
  157.     IORWF   TMR1L,F
  158.  
  159.     ; setup EUSART Asynchronous Mode
  160.  
  161.     BANKSEL TX1STA
  162.     MOVLW   0           ; Baud rate 1Mbps
  163.     MOVWF   SPBRG
  164.  
  165.     BSF TX1STA,BRGH ; High speed baud rate
  166.     BSF RC1STA,SPEN
  167.     BSF TX1STA,TXEN ; Configures TX1STA
  168.  
  169.     BANKSEL OSCCON    
  170.     MOVLW   01111000b   ; IRCF to 16MHz
  171.     MOVWF   OSCCON
  172.  
  173.     BANKSEL RB7PPS
  174.     MOVLW   10100b      ; Output Source Selection TX/CK
  175.     MOVWF   RB7PPS
  176.     GOTO    main
  177.  
  178. dbg:    BANKSEL TX1STA
  179. dbgl:   BTFSS   TX1STA,TRMT
  180.     GOTO    dbgl
  181.     MOVWF   TX1REG
  182.     RETURN
  183.  
  184. wait:   BANKSEL OSCSTAT
  185. waitl:  BTFSS   OSCSTAT,HFIOFS
  186.     GOTO    waitl
  187.     RETURN
  188.  
  189. main:   CALL    wait
  190.     MOVLW   'A'
  191.     CALL    dbg
  192.  
  193. stop:   GOTO    stop       
  194.     end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top