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