Sonsivri
 
*
Welcome, Guest. Please login or register.
Did you miss your activation email?
March 29, 2024, 11:50:55 11:50


Login with username, password and session length


Pages: [1]
Print
Author Topic: Modify source code PIC16C84 to PIC16F84A  (Read 9152 times)
0 Members and 1 Guest are viewing this topic.
Korvo
Newbie
*
Offline Offline

Posts: 15

Thank You
-Given: 1
-Receive: 1


« on: January 01, 2010, 02:12:53 14:12 »

Hi, i´m newby on programming pic´s, and i have a question:
It is possible modify the source code of pic16C84 to run on pic16F84A?
I think the only thing to modify on the code is the first´s lines of the progam
Here is the first line of the program of the pic16C84:

LIST            P=16C84
__CONFIG        3FF9H   ;XTAL OSC @4Mhz,NO WATCHDOG,PWRRST,NO CP.
__IDLOCS        1234
ERRORLEVEL      -302

Change the device type is obvious, but is it to modify more anything?

Thanks

Logged
cncbasher
Junior Member
**
Offline Offline

Posts: 91

Thank You
-Given: 107
-Receive: 51


« Reply #1 on: January 01, 2010, 02:36:17 14:36 »

yes
chances are thats all you need to do , then recompile  but without the full code , cannot be certian , as both chips you have selected are in the same base code , then you should be ok
as they are also pin compatable i believe , if not then you may need to change pin assignments etc


Logged
oldvan
Senior Member
****
Offline Offline

Posts: 372

Thank You
-Given: 154
-Receive: 107


If the van is a Rockin'...


WWW
« Reply #2 on: January 01, 2010, 07:27:29 19:27 »

I'd go one up on that and start my work with a 16F88 instead.

Pin compatible, adds internal oscillator and some peripherals.

Post the source code and we can give it a once over.

The CODE tags are important when posting a section of code, they make it look like this:

Code:
LIST            P=16C84
__CONFIG        3FF9H   ; XTAL OSC @4Mhz,NO WATCHDOG,PWRRST,NO CP.
__IDLOCS        1234    ; Fill the ID bits with 1234
ERRORLEVEL      -302    ; Remove annoying warnings about using proper bank


Well, I added the new comments myself.   Grin
Logged

Give a man a fish and you feed him for a day.
Teach a man to fish and he will sit around in a boat drinking beer all day.
Korvo
Newbie
*
Offline Offline

Posts: 15

Thank You
-Given: 1
-Receive: 1


« Reply #3 on: January 02, 2010, 02:58:46 02:58 »

Thanks for the reply people.
I annexed the file of the source code.
If anyone can help i will apreciate very much.
Thanks.

Logged
oldvan
Senior Member
****
Offline Offline

Posts: 372

Thank You
-Given: 154
-Receive: 107


If the van is a Rockin'...


WWW
« Reply #4 on: January 02, 2010, 03:40:48 03:40 »

I did nothing except change the "16c84" to "16f84a" and it compiles fine.

Code:
TITLE "CTCSS Encoder v1.4 for 16F84A "
; Assemble with MPASM
;
        LIST            P=16F84A
        __CONFIG        3FF9H   ;XTAL OSC @4Mhz,NO WATCHDOG,PWRRST,NO CP.
        __IDLOCS        1234
ERRORLEVEL      -302
;
CNT1 EQU 0CH ;PRESCALLER COUNTER REG 1
CNT2 EQU 0DH ;PRESCALLER COUNTER REG 2
CNT3 EQU 0EH ;PRESCALLER COUNTER REG 3
TONREG EQU 0FH ;REGISTER FOR TONE NUMBER
PRES1 EQU 10H ;PRESCALLER STORE 1
PRES2 EQU 11H ;PRESCALLER STORE 2
PRES3 EQU 12H ;PRESCALLER STORE 3
PORTA EQU 5
PORTB EQU 6
TRISA EQU 85H
TRISB EQU 86H
OPTREG EQU 81H
PC EQU 2
PULLUP EQU 7
STATUS EQU 3
INTCON EQU 0BH
GIE EQU 7
RBIE EQU 3
RBIF EQU 0
RP0 EQU 5
OUT EQU 2
PTT EQU 7
;
GOTO START
ORG 00C8
START BSF STATUS,RP0 ;SELECT REG BANK 1
BSF TRISB,PTT ;SETUP RB7 AS INPUT FOR PTT
BCF TRISA,OUT ;SETUP RA2 AS OUTPUT FOR TONE
BCF OPTREG,PULLUP ;SET PULLUP RESISTORS ON PORTB
MOVLW 0xFF ; SET PORTB AS I/Ps
MOVWF TRISB ; RB0-RB5 FOR SWITCH INPUTS
;

BCF STATUS,RP0 ;SELECT REG BANK 0
BCF INTCON,GIE ;DISABLE GIE INTERUPTS
BSF INTCON,RBIE ;ENABLE PORT B CHANGE INTERUPT
MOVF TRISB,W ;READ DIP SWITCHES INTO W
MOVWF TONREG ;STORE IN 0F REG
BCF TONREG,6 ; CLEAR BITS 6&7 AS
BCF TONREG,7 ; THEY ARE IRRELAVANTS
MOVF TONREG,W ;RE-STORE INTO W
ADDWF TONREG,F ; MULTIPLY BY 3
ADDWF TONREG,F ; FOR TONE TABLE OFFSET
;
MOVF TONREG,W ;RELOAD TO W FOR OFFSET
CALL TONTBL ;GOTO TONE LOOKUP TABLE
MOVWF PRES1 ;STORE FIRST VALUE FROM TABLE
;
INCF TONREG,F ;INCREMENT FOR NEXT TABLE VALUE
MOVF TONREG,W ;RELOAD W FOR OFFSET
CALL TONTBL ;GOTO TONE LOOKUP TABLE
MOVWF PRES2 ;STORE SECOND VALUE FROM TABLE
;
INCF TONREG,F ;INCREMENT FOR NEXT TABLE VALUE
MOVF TONREG,W ;RELOAD W FOR OFFSET
CALL TONTBL ;GOTO TONE LOOKUP TABLE
MOVWF PRES3 ;STORE THIRD VALUE FROM TABLE
;
;
RELOAD
MOVF PRES1,W ;LOAD W WITH PRESET FOR 1
MOVWF CNT1 ;PRELOAD PRESCALLER 1
MOVF PRES2,W ;LOAD W WITH PRESET FOR 3
MOVWF CNT3 ;PRELOAD PRESCALLER 3
MOVF PRES3,W ;LOAD W WITH PRESET FOR 2 READY
PTTCHK
BTFSC PORTB,PTT ;TEST PTT LINE
GOTO WAIT ;SLEEP TILL LOW
CALL CHORUS ;DO DIVIDER/PRESCALLER ROUTINE
;
OUTPUT
BTFSS PORTA,OUT ;TEST O/P HI OR LO AT PRESENT
GOTO HI ;IF LO GO SET HI
GOTO LO ;IF HI GO SET LO
;
HI
NOP ;BALANCE OUT CYCLE TIME MARK&SPACE
BSF PORTA,OUT ;MAKE O/P HI
GOTO RELOAD ;RETURN TO START OF CYCLE
;
LO
BCF PORTA,OUT ;MAKE O/P LO
GOTO RELOAD ;RETURN TO START OF CYCLE
;
CHORUS
PRE1
DECFSZ CNT1,F ;DECREMENT PRESCALLER 1
GOTO PRE2
GOTO FINE ;CALL FINE ADJUST SUBROUTINE
PRE2 MOVWF CNT2 ;RELOAD PRESCALLER 2
;
PREE DECFSZ  CNT2,F ;DECREMENT PRESCALLER 2
GOTO PREE ;GO BACK AND DECREMENT PRE2 TILL 00
;
GOTO PRE1 ;GO BACK AND DECREMENT PRE1 TILL 00
;
FINE DECFSZ CNT3,F ;DECREMENT PRESCALLER 3
GOTO FINE ;GO BACK AND DECREMENT PRE3 TILL 00
RETURN ;RETURN TO CHANGE O/P AND CHECK PTT ETC
;
WAIT   
BCF INTCON,RBIF ;CLEAR PORT B CHANGE INT FLAG
SLEEP ;SLEEP AND WAIT FOR PTT
NOP
BCF INTCON,GIE ;DISABLE GLOBAL INTERUPTS AGAIN
GOTO PTTCHK ;CHECK IF PTT PASSES TEST
;
;
;
;TONES TABLE AT 0008H
ORG 0007H
TONTBL
ADDWF PC,F ; W+PC ->PC, JUMP DOWN TABLE
;
;
;    16c84 PIN
;                                                    11  10  9   8   7   6
;   TONE  FREQ        RB5 RB4 RB3 RB2 RB1 RB0
;
DT 02,01,0x9D ; 000   1Khz TEST    0   0   0   0   0   0
DT 86,82,10 ; 001   67.0         0   0   0   0   0   1
DT 81,85,10 ; 002   69.4 *       0   0   0   0   1   0
DT 84,80,0x0F ; 003   71.9         0   0   0   0   1   1
DT 7F,85,0x0F ; 004   74.4         0   0   0   1   0   0
DT 7B,7C,0x0F ; 005   77.0         0   0   0   1   0   1
DT 76,86,0x0F ; 006   79.7         0   0   0   1   1   0
DT 72,82,0x0F ; 007   82.5      0   0   0   1   1   1
DT 74,8F,0x0E ; 008   85.4      0   0   1   0   0   0
DT 63,91,10 ; 009   88.5      0   0   1   0   0   1
DT 5F,9A,10 ; 010   91.5      0   0   1   0   1   0
DT 5B,47,11 ; 011   94.8      0   0   1   0   1   1
DT 55,88,11 ; 012   97.4      0   0   1   1   0   0
DT 56,49,11 ; 013  100.0      0   0   1   1   0   1
DT 09,6E,0xB9 ; 014  103.5      0   0   1   1   1   0
DT 08,81,0xC9 ; 015  107.2      0   0   1   1   1   1
DT 0A,71,98 ; 016  110.9      0   1   0   0   0   0
DT 0B,76,83 ; 017  114.8      0   1   0   0   0   1
DT 0A,0xCA,83 ; 018  118.8      0   1   0   0   1   0
DT 0A,9A,83 ; 019  123.0      0   1   0   0   1   1
DT 09,0xF1,83 ; 020  127.3      0   1   0   1   0   0
DT 08,93,9D ; 021  131.8      0   1   0   1   0   1
DT 07,94,0xB0 ; 022  136.5      0   1   0   1   1   0
DT 07,7C,0xAD ; 023  141.3         0   1   0   1   1   1
DT 07,85,0xA5 ; 024  146.2         0   1   1   0   0   0
DT 08,7B,89 ; 025  151.4         0   1   1   0   0   1
DT 08,80,83 ; 026  156.7         0   1   1   0   1   0
DT 07,0xA2,90 ; 027  159.8 *       0   1   1   0   1   1
DT 08,47,86 ; 028  162.2         0   1   1   1   0   0
DT 07,60,95 ; 029  165.5 *       0   1   1   1   0   1
DT 08,86,78 ; 030  167.9         0   1   1   1   1   0
DT 07,92,87 ; 031  171.3 *       0   1   1   1   1   1
DT 07,90,85 ; 032  173.8         1   0   0   0   0   0
DT 07,7D,85 ; 033  177.3 *       1   0   0   0   0   1
DT 09,5A,66 ; 034  179.9         1   0   0   0   1   0
DT 09,48,66 ; 035  183.5 *       1   0   0   0   1   1
DT 07,9E,78 ; 036  186.2         1   0   0   1   0   0
DT 08,0xBB,60 ; 037  189.9 *       1   0   0   1   0   1
DT 09,4C,60 ; 038  192.8         1   0   0   1   1   0
DT 08,9D,60 ; 039  196.6 *       1   0   0   1   1   1
DT 09,2F,60 ; 040  199.5 *       1   0   1   0   0   0
DT 07,82,70 ; 041  203.5         1   0   1   0   0   1
DT 07,76,70 ; 042  206.5 *       1   0   1   0   1   0
DT 07,66,70 ; 043  210.7         1   0   1   0   1   1
DT 07,6F,6A ; 044  218.1         1   0   1   1   0   0
DT 06,0xA3,70 ; 045  225.7         1   0   1   1   0   1
DT 06,98,70 ; 046  229.1 *       1   0   1   1   1   0
DT 06,8A,70 ; 047  233.6         1   0   1   1   1   1
DT 06,72,70 ; 048  241.8         1   1   0   0   0   0
DT 04,0xC3,99 ; 049  250.3         1   1   0   0   0   1
DT 04,0xB9,99 ; 050  254.1 *       1   1   0   0   1   0
DT 05,1C,99 ; 051  255   *       1   1   0   0   1   1
DT 03,15,20 ; 052  1750 Eu Tone  1   1   0   1   0   0
DT 05,0F,10 ; 053  1800 Eu Tone  1   1   0   1   0   1
DT 01,84,9D ; 054  1200 Packet   1   1   0   1   1   0
DT 02,13,30 ; 055  2200 Packet   1   1   0   1   1   1
DT 03,26,50 ; 056  800   *       1   1   1   0   0   0
DT 03,0F,50 ; 057  900   *       1   1   1   0   0   1
DT 02,3F,50 ; 058  1100  *       1   1   1   0   1   0
DT 03,36,20 ; 059  1300  *       1   1   1   0   1   1
DT 01,68,20 ; 060  1500  *       1   1   1   1   0   0
DT 03,09,20 ; 061  2000  *       1   1   1   1   0   1
DT 02,1A,20 ; 062  2500  *       1   1   1   1   1   0
DT 02,07,20 ; 063  3500  *       1   1   1   1   1   1
;
; * Indicates non EIA standard tone
;
ORG 2100H
DE "CTCSSENC v 1.4  "
        END


Have you built a circuit to test this on yet?
Logged

Give a man a fish and you feed him for a day.
Teach a man to fish and he will sit around in a boat drinking beer all day.
Korvo
Newbie
*
Offline Offline

Posts: 15

Thank You
-Given: 1
-Receive: 1


« Reply #5 on: January 07, 2010, 09:48:08 21:48 »

Yes, I have build the circuit, but don´t work, a friend of mine tell me that this code work on PIC16C84 and PIC16F84, but don´t work in PIC16F84A.
What is the diference in the code? Can I upgrade this code to work on 16F84A or similar microcontroller?
Best regards and thanks again
Logged
oldvan
Senior Member
****
Offline Offline

Posts: 372

Thank You
-Given: 154
-Receive: 107


If the van is a Rockin'...


WWW
« Reply #6 on: January 08, 2010, 03:39:46 03:39 »

Migration information for 16F84 --> 16F84A is here:
http://ww1.microchip.com/downloads/en/DeviceDoc/30072b.pdf
Quote
The PIC16F84A can use crystals up to 20 MHz, resulting in double the execution speed. No changes to the code, other
than for timing concerns, are required. No changes to the configuration word are required. The crystal loading capacitors
may need to be adjusted for the higher speed crystal, but verifying oscillator operation at the same speed is already
recommended for the transition from the PIC16F84 to the PIC16F84A.

The 16F84 is functionally the same as 16C84 except flash memory instead of EPROM.
The 16F84A is functionally the same as 16F84 except is capable of running at 20 MHz instead of 10 MHz.

The code should work unmodified, so if the code works on 16C84 then there is likely a different problem.

Please post schematic of the test circuit so I can duplicate it and double-check for you.

I'd recommend you move to a 16F88 but if you have 16F84A in hand then may as well get use out of it.
Logged

Give a man a fish and you feed him for a day.
Teach a man to fish and he will sit around in a boat drinking beer all day.
Top
Senior Member
****
Offline Offline

Posts: 339

Thank You
-Given: 52
-Receive: 1718


« Reply #7 on: January 08, 2010, 05:24:36 05:24 »

There is another difference between 16C84 and 16F84; the Power-up Timer Enable (PWRTE) bit is reversed.

This is correct for a 16C84:
Code:
        __CONFIG        3FF9H   ;XTAL OSC @4Mhz,NO WATCHDOG,PWRRST,NO CP.

But for a 16F84 it should be:
Code:
        __CONFIG        3FF1H   ;XTAL OSC @4Mhz,NO WATCHDOG,PWRRST,NO CP.

Logged
Rute
Junior Member
**
Offline Offline

Posts: 65

Thank You
-Given: 102
-Receive: 179


« Reply #8 on: January 15, 2010, 04:17:12 16:17 »

Yes, Top I Right, You can use working HEX file for 16f84 to burn 16f84A, but have to set PWRTE  to 1 if is 0 or Yes if is NO  only!
Logged
Pages: [1]
Print
Jump to:  


DISCLAIMER
WE DONT HOST ANY ILLEGAL FILES ON THE SERVER
USE CONTACT US TO REPORT ILLEGAL FILES
ADMINISTRATORS CANNOT BE HELD RESPONSIBLE FOR USERS POSTS AND LINKS

... Copyright © 2003-2999 Sonsivri.to ...
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines LLC | HarzeM Dilber MC