16f84A to 16f628A


Closed Thread
Results 1 to 9 of 9
  1. #1
    Join Date
    Sep 2009
    Posts
    23

    Default 16f84A to 16f628A

    Hi friends
    I am new user in picbasic
    And need help, for the transformation of this code to work on 16F628A instead of the 16F84A


    Code:
    @ device PIC16F84A, HS_OSC, WDT_OFF, PWRT_ON, PROTECT_OFF
    TrisA = %00000000
    PortA = %00000000
    TrisB = %00000001
    PortB = %00000000
    
    Digit Var Byte
    Time  Var Word
    Tcon Con 245
    Time = Tcon
    Imp   Var Word
    Imp = 0
    RPM   Var Word
    RPM = 0
    OPTION_REG = %10000011  
    TMR0=5
    INTCON = %10110000 
    Pause 1000
    ' ------------------------- [ ---------- ] -------------------------
    
    PortB = $7e  '-
    PortA.0 = 0: PortA.1 = 0: PortA.2 = 1
    Pause 1000
    PortB = $7e  '-
    PortA.0 = 0: PortA.1 = 1: PortA.2 = 0
    Pause 1000
    PortB = $7e  '-
    PortA.0 = 1: PortA.1 = 0: PortA.2 = 0
    Pause 1000
    ' ------------------------- [ Interrupt ] -------------------------
    On Interrupt Goto myint
    ' ------------------------- [ Main ] -------------------------
    Main:
    
    Digit = RPM Dig 0
    PortA.0 = 1: PortA.1 = 0: PortA.2 = 0 
    GoSub Look
    Pause 4
    PortB = $FE
    
    Digit = RPM Dig 1
    PortA.0 = 0: PortA.1 = 1: PortA.2 = 0 
    GoSub Look
    Pause 4
    PortB = $FE
    
    if RPM < 100 then
    Pauseus 300
    Goto Main
    endif
    
    Digit = RPM Dig 2
    PortA.0 = 0: PortA.1 = 0: PortA.2 = 1
    GoSub Look
    Pause 4
    PortB = $FE
    
    Goto Main 
    ' ----------------------- [-------------- ] -----------------------
    
    Disable 
    Myint:
    
    if intcon.1=1 then
    Imp = Imp + 1 
    INTCON.1 = 0 
    endif 
    
    
    if intcon.2=1 then 
    Time = Time - 1 
    if Time = 0 then 
    Time = Tcon 
    RPM = Imp * 60 / 10
    Imp = 0 
    endif 
    TMR0=5 
    intcon.2=0 
    endif 
    
    Resume 
    Enable
    ' --------------------------- [ ------- ] ---------------------------
    Look:
    LookUp Digit, [$80, $F2, $48, $60, $32, $24, $04, $F0, $00, $20], PortB
    Return
    ' ------------------------- [ ----------- ] -------------------------
    End

  2. #2
    Join Date
    May 2009
    Posts
    40


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    Change first line to @ Device PIC16f628A HS_OSC, WDT_OFF, PWRTE_ON, CP_OFF
    That in theory is all that should be needed.

  3. #3
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    Quote Originally Posted by grahamg View Post
    Change first line to @ Device PIC16f628A HS_OSC, WDT_OFF, PWRTE_ON, CP_OFF
    That in theory is all that should be needed.
    nope, 16f628 has comparators too add cmcon = 7
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  4. #4
    Join Date
    Sep 2009
    Posts
    23


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    I made the changes and work henceforth in 16F628
    I thank you for the precious help

  5. #5
    Join Date
    Sep 2009
    Posts
    23


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    I made an addition to the code
    The PortA.3 working properly, the PortA.4 but did not work always remains at a low level
    What I make error, please help



    Code:
    @ device PIC16F84A, HS_OSC, WDT_OFF, PWRT_ON, PROTECT_OFF
    TrisA = %00000000
    PortA = %00000000
    TrisB = %00000001
    PortB = %00000000
    
    Digit Var Byte
    Time  Var Word
    Tcon Con 245
    Time = Tcon
    Imp   Var Word
    Imp = 0
    RPM   Var Word
    RPM = 0
    OPTION_REG = %10000011  
    TMR0=5
    INTCON = %10110000 
    Pause 1000
    ' ------------------------- [ ---------- ] -------------------------
    
    PortB = $7e  '-
    PortA.0 = 0: PortA.1 = 0: PortA.2 = 1
    Pause 1000
    PortB = $7e  '-
    PortA.0 = 0: PortA.1 = 1: PortA.2 = 0
    Pause 1000
    PortB = $7e  '-
    PortA.0 = 1: PortA.1 = 0: PortA.2 = 0
    Pause 1000
    ' ------------------------- [ Interrupt ] -------------------------
    On Interrupt Goto myint
    ' ------------------------- [ Main ] -------------------------
    Main:
    
    Digit = RPM Dig 0
    PortA.0 = 1: PortA.1 = 0: PortA.2 = 0 
    GoSub Look
    Pause 4
    PortB = $FE
    
    Digit = RPM Dig 1
    PortA.0 = 0: PortA.1 = 1: PortA.2 = 0 
    GoSub Look
    Pause 4
    PortB = $FE
    
    if RPM < 100 then
    Pauseus 300
    Goto Main
    endif
    
    Digit = RPM Dig 2
    PortA.0 = 0: PortA.1 = 0: PortA.2 = 1
    GoSub Look
    Pause 4
    PortB = $FE
    
    ' ----------------------- [ HIGH RPM ] -----------------------
    if RPM >= 60 then
    high PortA.3
    else
    low PortA.3 
    endif
    
    if RPM >= 70 then
    high PortA.4
    else
    low PortA.4 
    endif
    
    Goto Main 
    ' ----------------------- [-------------- ] -----------------------
    
    Disable 
    Myint:
    
    if intcon.1=1 then
    Imp = Imp + 1 
    INTCON.1 = 0 
    endif 
    
    
    if intcon.2=1 then 
    Time = Time - 1 
    if Time = 0 then 
    Time = Tcon 
    RPM = Imp * 60 / 10
    Imp = 0 
    endif 
    TMR0=5 
    intcon.2=0 
    endif 
    
    Resume 
    Enable
    ' --------------------------- [ ------- ] ---------------------------
    Look:
    LookUp Digit, [$80, $F2, $48, $60, $32, $24, $04, $F0, $00, $20], PortB
    Return
    ' ------------------------- [ ----------- ] -------------------------
    End

  6. #6
    Join Date
    May 2009
    Posts
    40


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    You have not added Cmcon=7. Put it at the start of the program

  7. #7
    Join Date
    Sep 2009
    Posts
    23


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    grahamg Yes I added cmcon = 7

    *******************************
    @ device PIC16F628A, HS_OSC, WDT_OFF, PWRT_ON, PROTECT_OFF
    TrisA = %00000000
    PortA = %00000000
    TrisB = %00000001
    PortB = %00000000

    cmcon = 7
    Digit Var Byte
    Time Var Word
    Tcon Con 245
    Time = Tcon
    Imp Var Word
    Imp = 0
    RPM Var Word
    RPM = 0
    OPTION_REG = %10000011
    TMR0=5
    INTCON = %10110000
    Pause 1000

    EEPROM 80,[83,46,84,32,69,108,101,99,116,114,111,110,105,99,1 15]
    ' ------------------------- [ ---------- ] -------------------------


    Last edited by dovegroup; - 27th June 2012 at 17:53.

  8. #8
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    RA4 is an open collector pin so it will not turn from zero to 5 volts as all the digital pins.

    If all you need is to turn your led on & off, then connect your 330 ohms resistor to 5 volts and RA4 pin to junction from led and 330 ohms resistor.

    Remember then when pin is on your led will be off.

    Cheers

    Al.
    Last edited by aratti; - 27th June 2012 at 18:06.
    All progress began with an idea

  9. #9
    Join Date
    Sep 2009
    Posts
    23


    Did you find this post helpful? Yes | No

    Default Re: 16f84A to 16f628A

    Friend aratti yes you have absolute right
    Now works also the PortA.4 yessssssssssssssssssss

    Thank you very much

    Last edited by dovegroup; - 27th June 2012 at 19:43.

Members who have read this thread : 1

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