Programování mikrokontrolerů PIC 16F84A 4-ŘSVS
Program - cíl Zapojení maticové klávesnice (4x4) První stlačení - desítky pulzů Druhé stlačení jednotky pulzů Zapojení krokového motoru Tak aby vykonal tolik kroků, kolik jsme si navolili na klávesnici
KEYB zmacknuto 10/1 Test,0=0 jednotky Desitky Set test,0 krokovat krok1 Pulzy=0 Konec krokovani MOVLW 0 Test,0=0 Pulzy=0 krok1 Pulzy=0 krok1 Pulzy=0 krok1 END
Program - počáteční hodn. Na začátku je nutné vynulovat výstupy a střadač. BCF TEST,0 (jen jednou na začátku programu) MOVLW 0 MOVWF PORTA MOVWF PORTB
Program - princip Klávesnice - matice spínačů BSF PORTB,4 Testujeme postupně jedn. Čísla Test Tl. 2 - pustit signál na výstup RB4 Otestovat RB2 (pokud bylo stlačeno, signál prošel) - Uložení do paměti (temp) BSF PORTB,4 BTFSC PORTB,1 MOVLW 1 BTFSC PORTB,2 MOVLW 2 ... MOVWF temp
Program - princip Klávesnice - bylo zmáčknuto vůbec něco? BTFSC temp,0 Po proběhnutí cyklu zjišťování stisknutých tlačítek Max zapisovaná hodnota do temp - 9 Stačí kontrolovat jen poslední 4 bity Pokud jsou prázdné - znovu na kontrolu tlačítek (keyb) Pokud je na nějakém hodnota - pokračovat dál BTFSC temp,0 GOTO desetkrat BTFSC temp,1 ... GOTO keyb
Program - princip Klávesnice - zapsání hodnoty BTFSC test,0 Zapisujeme hodnoty 1 až 99 pulzů Zapsání desítek - (první stisk) Pokud bylo zmáčknuto - zapsat číslo a vynásobit 10 krát Protože bude následovat připsání desítek, je nutné vytvořit si příznak že desítky již byly zapsány BTFSC test,0 GOTO jednotky BSF test,0 ... Následuje zápis desetinásobku čísla
Program - princip Klávesnice - zapsání hodnoty MOVLW 0 Desetinásobek - n-krát přičíst desítku (n - zmáčknuté číslo uložené v temp) Poté pauza, aby se nenačetlo 2krát stejná hodnota při jednom stisku MOVLW 0 nasobky ADDLW 10 DECFSZ temp,1 GOTO nasobky MOVWF pulzy CALL cekej GOTO keyb
Program - princip Klávesnice - zapsání hodnoty - jednotky Desetinásobek je již zapsán (příznak) Přičtení jednotek (jsou ve střadači) jednotky ADDWF pulzy,1 GOTO ... Jednotky jsou zapsány, pokračujeme k obsluze motoru
Program - princip Motor - pulzování, odečítání pulzů Jako při rozsvěcení LED 0011 - 0110 - 1100 - 1001 - 0011 Stále dokola až do odečtení všech pulzů (DECFSZ...). krokovat krok1 BCF PORTA,2 BSF PORTA,0 CALL cekej DECFSZ pulzy,1 GOTO krok2 GOTO koneckrok Krok2 ....
Program - princip Motor - konec vynulujem pulzy (taktéž CLRF pulzy) vynulujem příznak zapsány desítky návrat na zjišťování zmáčknutých tlačítek koneckrok MOVLW 0 MOVWF pulzy BCF test,0 GOTO keyb Časovač(e) end