Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

migrating asm code 16C84 to 16C710

Status
Not open for further replies.
Got this after compiling:

Error[152] E:\CTCSS17C710\CTCSSC710.ASM 34 : Executable code and data must be defined in an appropriate section
Error[113] E:\CTCSS17C710\CTCSSC710.ASM 42 : Symbol not previously defined (ADCON1)
 
Code:
TITLE	"CTCSS Encoder v1.4 for 16c84 Tony Hunt VK5AH"
; 14-4-99
;	Assemble with MPASM
;   See below for wiring details
;
        LIST            P=16C710
        __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
ADCON1	EQU	88H
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
	CLRF	ADCON1
;

	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 "TonyHunt  VK5AH CTCSSENC v 1.4  "
      END


		All CTCSS tones are within EIA standard of .08% .
   		Use a 4Mhz crystal with 2x18pF capacitors. 
		PTT line is active LOW. PTT is RB7 Pin 13.
		OUTPUT tone is on RA2 Pin1 ,see Low pass filter diag.
		Lines RB0-RB5 can be fitted with DIP switches to set
		tone frequencies as per table above. A 1 on the table
		indicates the RB pin is logic HI . All RB port pins have
		been programmed with internal pullup resistors and will
		float HI if left open. The binary inputs are read only on
		power up and not each time the PTT is keyed.

		For CTCSS tones use a Low pass filter as shown here as the
		output waveform is square. RO is an padding resistor to
		allow for level adjustment typically 20k.


		RA2--------2k2----------RO----Output
		Pin1		  |
				  |
				  1uF
				  |
				  GND

It assembles for me...
 
Thanks but I'm still getting an error in line 35. It says: Executable code and data must be defined in an appropriate section and this holds it from compiling.

Do you compile with MPASM? Wich version?
 
Upgraded to the MPASM version to v5.47 and now it compiles but does not ask for what you mention. I'm going to try in a new processor tonight! Thanks for all your help!
 
Just assembled and simulated it in MPLAB v8.8 and it assembles without a spot, just like a 16F84 setting and does the same thing but I can't see what happens on pin 1, what to do?
 
Ive just been playing with your program in MPLAB.. As there is mostly delays it spends too much of its time in a delay loop..

When I get a bit of time I'll get it on ISIS and simulate it properly... I'll let you know how I get on....
 
Thanks for your help, really appreciate that!

What I cannot understand is why the C84 works properly with the program and the C710 does not. Timing?
 
Not to sound Funny here but how many of them 16C710 did you have because if you tested the code on them you can only program one time. And if it's UV type CERDIP packaged It's not a good idea to use that but for code testing.
 
I have some......like 40+ or so. Got them from a friend who said they were too antique for him but I want to make some people happy in our club with a ctcss encoder to reach some repeaters.

Tested it already on F84 and it works fine with an extra lowpass filter.
 
Upgraded to the MPASM version to v5.47 and now it compiles but does not ask for what you mention. I'm going to try in a new processor tonight! Thanks for all your help!
Are you sure about the version?

Curent one is 8.88
 
Are you sure about the version?

Curent one is 8.88

Are you sure about him being sure... MPASM = v5.47.... Whereas MPLAB = v8.88..


@Brute... It simulates fine....
 
Last edited:
Oh, yes. Even if he had it wrong, I am even wronger! :( Sorry for the confusion!

Had I to do this I would RTFM first of all.

And then do a complete comparison of the CONFIG procedure.

And then a list of the registers involved noting the bank where they are.

And then a simulation just skipping the loops for brevity and sanity.

It is not brain surgery but it takes a bit to make useless another C710. How many by now?

Oh yes God. Thanks for those flash micros and the convivial environment of the 18F family.
 
MPLAB indeed v8.88 MPASM is a module from MPLAB. I used MPLAB V8.88 also.

Just spoiled two of them.
 
Hi Ian, any news?

@Brute... It simulates fine....
post #36

I can't check it on a real chip as I only have flash devices... a button press on RB7 sends a tone on RA2. I guess that's what its supposed to do.

The other thing is... Simulation doesn't simulate the oscillator... So if here is where your problem is... I can't help..
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top