nejede mi program na 16F84
Moderátor: Moderátoři
nejede mi program na 16F84
Zdravím, mám problém s programováním PIC, jsem začátečník (úplný) a nevím co dělám špatně. Snažím se naprogramovat PIC 16F84A tímto programem:
ORG 0x2007
DW _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
ORG 0
GOTO NASTAVENI
NASTAVENI: CLRF PORTB
MOVLW 0x20H
MOVWF STATUS
MOVLW 0x60H
MOVWF OPTION_REG
MOVLW 0x00H
MOVWF TRISB
BCF STATUS,RP0
ZACATEK: BCF PORTB,RB3
BCF PORTB,RB2
BSF PORTB,RB3
BSF PORTB,RB2
GOTO ZACATEK
END
měly by blikat dvě ledky na RB2 a 3, ale nějak neblikaj.
POtřebuju poradit kde je chyba.
předem dík.
ORG 0x2007
DW _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
ORG 0
GOTO NASTAVENI
NASTAVENI: CLRF PORTB
MOVLW 0x20H
MOVWF STATUS
MOVLW 0x60H
MOVWF OPTION_REG
MOVLW 0x00H
MOVWF TRISB
BCF STATUS,RP0
ZACATEK: BCF PORTB,RB3
BCF PORTB,RB2
BSF PORTB,RB3
BSF PORTB,RB2
GOTO ZACATEK
END
měly by blikat dvě ledky na RB2 a 3, ale nějak neblikaj.
POtřebuju poradit kde je chyba.
předem dík.
I když tu nejsi tak úplně nový, místo smazání (za porušení pravidel) jsem ti přejmenoval téma.
Takhle máš větší šanci, že se ti na ten prográmek koukne víc lidí.
Vřele doporučuji
http://www.ebastlirna.cz/modules.php?na ... opic&t=684 , zejména bod 7.
Takhle máš větší šanci, že se ti na ten prográmek koukne víc lidí.
Vřele doporučuji
http://www.ebastlirna.cz/modules.php?na ... opic&t=684 , zejména bod 7.
No moc důkladně jsem se na to nedíval, ale všiml jsem si, že tam nemáš zpožďovací cykly. Takže ty ledky asi blikají, ale tak rychle, že ti to připadá jako by svítily.
Zkust použít tuhle smyčku. Podprogram si zavoláš příkazem CALL CEKEJ v místě kde potřebuješ.
CEKEJ MOVLW 128
MOVWF C2
CEK2 MOVLW 0
MOVWF C1
CEK1 DECFSZ C1,1
GOTO CEK1
DECFSZ C2,1
GOTO CEK2
RETURN
A ještě nezapomeň k tomuto podprogramu na začátku nadefinovat proměnné C1 a C2.
Zkust použít tuhle smyčku. Podprogram si zavoláš příkazem CALL CEKEJ v místě kde potřebuješ.
CEKEJ MOVLW 128
MOVWF C2
CEK2 MOVLW 0
MOVWF C1
CEK1 DECFSZ C1,1
GOTO CEK1
DECFSZ C2,1
GOTO CEK2
RETURN
A ještě nezapomeň k tomuto podprogramu na začátku nadefinovat proměnné C1 a C2.
Myslím, že přesun do banky 1 tam má řešen tímto způsobem:kony2807 píše:někde se mi na začátku programu vytratil přesun do banky 1 , zkus připsat tohle :
BSF STATUS,RP0
nevím jestli se ti povede nastavit TRISB v bance 0 ...
MOVLW 0x20H ;B'00100000'
MOVWF STATUS ;RP0 je 5. bit ve status
Tak tohle by měl mít OK.
j taky to neznám z paměti, jen jsem měl zrovna poruce příručku.kony2807 píše:To Kisa : tak toho sem si nevšim , jen sem si ten program tak narychlo proletěl a první co mě napadlo hned na začátku byl přesun do banky 1.
Přesné rozložení bitů na registru status neznám z paměti ... (ale snaha pomoct byla )