pic - prikaz retlw

PodhorecM@mod.gov.sk PodhorecM
Středa Březen 17 14:27:03 CET 2004


Zdravim

Prave pracujem na dekodery, ktory prevedie seriovo prijaty (DATA+CLK)
deliaci pomer pre sda3203
na frekvenciu, ktoru zobrazujem na osem miestnom displeji.
(pic16f84,D347D,74LS138)
Dost dlho som sa trapil s problemom ze sa nekorektne dekodovali vyssie bity
z deliaceho pomeru.
Frekvencia sa napriklad korektne zobrazovala iba do 512MHz. (maximum mam 900
MHz)
Na dekodovanie som pouzil nasledujucu konstrukciu :
	.
	movwf BASE		; vypocitana hodnota skoku (podla pozicie
znaku a vahy prave dekodovaneho bitu)
	call decode		; 
	movwf znak0		; odlozim si hodnotu prave dekodovaneho
znaku
	.
decode	movfw BASE		; velkost skoku do W
	andlw b'01111111'	; osetrim pretecenie
	addwf PC,1		; skok
	retlw .5			; 1 ... 8 riadkov pre prvy bit ...
skok 62.5 kHz (0000.0625 MHz)
	retlw .2			; 2
	retlw .6			; 3
	.
	retlw .0			; 121 ... 8 riadkov pre posledny bit
... skok 2.048 GHz (2048.0000 MHz)
	retlw .0			; 122 (iba teoreticky kvoli
preteceniu, 16 bit je pre sda 3302 vzdy 0) 
	retlw .0			; 123
	retlw .0			; 124
	retlw .8			; 125
	retlw .4			; 126
	retlw .0			; 127
	retlw .2			; 128

program sa nahodne 'sekal' podla dlzky pripisovaneho kodu, lebo kodovaciu
tabulku som mal na konci programu , po velmi dlhom badani som
prisiel na to ze chyba je v dekodovacej rutine, lebo tabulka sa posuvala aj
do stranky1 pamati programu, kde addwf PC,1 pricita iba
spodnych 8 bitov a register PCLATH sa nemeni. Program som upravil do
nasledujucej podoby v presvedceni ze bude fungovat :

	org 300h		; tabulka zacina v druhej polke stranky 1,
adresa 300h
decode	call tabulka		; pclath je nastaveny v spravnej stranke
	return			; 
tabulka	movfw BASE		; velkost skoku do W
	andlw b'01111111'	; osetrim pretecenie
	addwf PC,1		; skok (PCLATH nastaveny, PCL nastaveny)
	retlw .5			; 1 ... 8 riadkov pre prvy bit ...
skok 62.5 kHz
	retlw .2			; 2
	retlw .6			; 3

bohuzial uz nefungoval vobec, tak som dal tabulku na zaciatok programu,
vsetko teraz funguje jak ma ,
ale nieje mi jasne preco nefunguje druhy kod :-( 
neviete prosim kde je chyba ?

dakujem     M.

 

pre uplnost dodavam ze vnorenie podprogramu je max 4 uroven, takze stack
nepretecie





Další informace o konferenci Hw-list