Al eerder heb ik geschreven, bezig te zijn met een stuk assembler code voor een morse-keyer. Oorspronkelijk is het programma ontworpen voor een 12C509(A) en later gemodificeerd voor de 16F84A. Het programma werkt goed in de 16F84A en ik heb daarmee al enige ervaring opgedaan. Omdat de schakeling waarin ik de PIC wil toepassen een 8-pens voetje heeft, ben ik bezig met migratie van de code naar een 12F629. Dit is een modernere PIC met veel meer mogelijkheden dan de 12C509 en ik bestudeer stukje bij beetje de sourcecode voor de vertaling. Met de datasheets van alle drie de PIC's en een dik boek van Myke Predko (Programming and customizing PICmicro microcontrollers) wordt ik steeds wijzer.

Nu kom ik een routine tegen die aangepast is t.b.v de 16F84A en ik kan niet achterhalen of die wijziging ook voor de 12F629 van toepassing is. Het betreft de code tussen de ifdef en endif. Om een, voor mij onbekende reden is deze toevoeging bij de 16F84A nodig voordat de "DEC2CW" conversie werkelijk uitgevoerd wordt.

Kan iemand mij vertellen of deze modificatie ook in de 12F629 nodig is? Overigens komt dit 4-regelig stukje code nog vier keer voor verderop in het programma (>2200 regels).

;===========================================
; Decimal to Morse Conversion Table
;===========================================

DEC2CW
 ifdef __16F84A
	MOVWF	WTEMP
	MOVLW	HIGH($)
	MOVWF	PCLATH
	MOVF	WTEMP,W
 endif
	ADDWF   PC, F   ; Jump through table
DECTBL
	RETLW   M_0
	RETLW   M_1
	RETLW   M_2
	RETLW   M_3
	RETLW   M_4
	RETLW   M_5
	RETLW   M_6
	RETLW   M_7
	RETLW   M_8
	RETLW   M_9

Hmmmm

Dit is een van de lastigste onderwerpen met PICs: code memory paging. De oorspronkelijke code is trouwens fout, tenzij er voor gezorgd wordt dat het hele stuk binnen 1 page valt....

Lees blz 72 e.v. van Predko nog maar eens heel goed door!

Overigens: AlS dit werkte voor een 16x84 dan zal het werken op de 12f, ondanks de '12' is dat nl een 14-bit PIC (de 12c's zijn 12-bit PICs).

Op 5 februari 2003 23:04:51 schreef Carel M.:
en een dik boek van Myke Predko (Programming and customizing PICmicro microcontrollers)

Ik ben erg benieuwd naar je mening over dat boek. Want ik lees graag boeken maar niet als ze simpel zijn en weinig behandelen. Ik ben dit boek vaak tegengekomen via i-net, maar ben bang dat er teveel in staat van wat ik al weet.

[Bericht gewijzigd door Bastiaan op ]

[Ik vind dat het genoemde boek vol staat met dingen die ik al weet (of had moeten weten!) uit de datasheets, maar af en toe is een tweede uitleg toch wel handig. En dan vind ik het een van de beste PIC boeken.

Op 6 februari 2003 00:36:18 schreef Wouter van Ooijen:
.. De oorspronkelijke code is trouwens fout, tenzij er voor gezorgd wordt dat het hele stuk binnen 1 page valt....

Ik begrijp zo even niet wat er fout moet zijn Wouter, maar ik zal vanavond als ik thuis ben de Pretko-bijbel er eens op na slaan. Ik heb hem te leen van een vriend die het boek kocht in de States inclusief CD en printje voor een programmer.

Op 6 februari 2003 00:44:13 schreef Bastiaan:
Ik ben erg benieuwd naar je mening over dat boek.

Ik ben een beginner op dit gebied zoals je weet Bastiaan. Voor mij staat er dus alleen maar onbekende materie in en draagt het voorlopig nog steeds bij aan de kennisverwerving.

[Bericht gewijzigd door Carel M. op ]

Op 6 februari 2003 17:12:36 schreef Carel M.:
Ik begrijp zo even niet wat er fout moet zijn Wouter

Probeert maar eens na te gaan wat er gebeurt als de ADDWF instructie op adres 0x100 staat.

Daarop kan ik heel snel antwoorden Wouter: geen flauw idee, daarvoor weet ik nog veel te weinig van deze materie af. Ik heb inmiddels het stukje over de PC en Stack in Predko gelezen maar dat moet ik nog wel een paar keer doen om te begrijpen wat er bedoeld wordt. Ik start maar eens vooraan in dat hoofdstuk.

Misschien kan je en korte uitleg geven, dat leert sneller.