120 likes | 247 Views
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.
E N D
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 Test,0=0 MOVLW 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čů • 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? • 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 desetkrat ... GOTO keyb
Program - princip • Klávesnice - zapsání hodnoty • 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 • 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 MOVLW 0 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