Using as many internal peripherals as possible.


Closed Thread
Results 1 to 12 of 12

Hybrid View

  1. #1
    Join Date
    Aug 2011
    Posts
    453


    Did you find this post helpful? Yes | No

    Default Re: Using as many internal peripherals as possible.

    Code:
    bsf Switch                       ; set bit in Switch to 1
    Among other things...
    - that's not the form of an asm 'bsf' instruction
    - you may have issues with the proper bank being selected... you are specifying 'banksel IOCAF', but where is 'Switch' located?

    When writing asm it will do exactly what you specify... correct or not.

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: Using as many internal peripherals as possible.

    Where is the problem?

    Good luck trying to get pbp to set a bit var where you need it be
    use a byte and place it in access space if you have to

    enabling the timer1 interrupt and not servicing it will not work well


    Code:
    #CONFIG  __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
      __config _CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_ON & _BORV_19 & _LVP_OFF
    #ENDCONFIG
    
    
    DEFINE INTHAND INT
    DEFINE NO_CLRWDT 1
    DEFINE OSC 4
    OSCCON = %01101010
    
    
    TRISA   =    %011000   ; RA4 input for battery measurement, RA3 input on change, rest output
    ANSELA  =    0     ; ADC Disable
    OPTION_REG = %10000111 ; Disable internal pull-ups, TMR0 On, prescaller to 256
    
    
    FVRCON  =    %10011000 ; Internal reference to 2048mV
    
    
    CM1CON0 =    %10100110 ; Comparator output to C1OUT, switch on LED if voltage is below ref. 2,048V
    CM1CON1 =    %00100001 ; C1IN1- pin is RA4, comparator voltage input, C1IN1+ positive input to FVR set to 2,048V
    
    
    LATA    =    %000001   ; init state of pin RA0 and RA1, LEDs connected to these pins
    
    
    T1CON = %00110001      ; TMR1 On, prescaller 1:8, Fosc/4
    INTCON = %11001000     ; Enable GIE, PEIE, IOCIE
    PIE1.0 = 0             ; DISable TMR1IE OVerflow interrupt 
    IOCAN.3 = 1            ; Enable RA3 negative edge OnChange interrupt
    
    
    Switch var BYTE  $7f  SYSTEM 
     Switch = 0 
    
    
    
    
    ; ------------  With TMR1 and interrupt, oscilator 4MHz ---------------
    Main:
    if porta.3=0  and switch=1 then         
    LATA = LATA ^ %100000
    pressed:
    pause 20
    if porta.3=0 then pressed   ; if the button is still pressed loop and wait for release
    Switch=0
    endif
    goto main 
    
    
     asm
    INT
     banksel IOCAF
     btfsc IOCAF,3
     bsf Switch,0                      ; set bit0 in Switch to 1
     bcf IOCAF,3
     RETFIE
    endasm
    Warning I'm not a teacher

Similar Threads

  1. New cool PIC peripherals
    By HenrikOlsson in forum General
    Replies: 1
    Last Post: - 21st September 2016, 20:50
  2. Replies: 8
    Last Post: - 21st March 2015, 17:21
  3. Replies: 4
    Last Post: - 11th June 2014, 22:53
  4. Replies: 0
    Last Post: - 7th August 2008, 09:02
  5. Internal Oscillator
    By jhorsburgh in forum General
    Replies: 2
    Last Post: - 10th December 2007, 02:13

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts