Ahoj pokouším se v assembleru naprogramovat časovač. Bohužel se mi nedaří. Mám 4 displeje na prvních dvou chci minuty a na druhém chci vteřiny, tlačítka zatím neřeším časovat začne odpočítávat od 0 do 59 minut a 59 sekund pak se resetuji. Používám multiplexní režim a BCD dekoder.
Toto se mi podařilo naprogramovat jen kdyby měly displeje vlastní paměť na poslední hodnotu kterou dostaly, to ale nemají, takže potřebuji poradit. Vůbec mě nejde dohromady cyklus pro zpoždění a zároveň vysílat data na display ( když probíhá zpožďovací cyklus tak se na displeji nic nezobrazuje- takže většinu času).
Nějaká nastavení PIC na výstupy, WDT atd. tu řešit nechci. Chci řešit jen program.
Dávám sem zkrácenou ukázku
Vysvětlivky:
zobrazX= vyšle číslo x do BCD překladače který je před displejem.
cekej1= časová smyčka 1 sekunda
PORTA,0 až 3= výstup na tranzistor který aktivuje požadovaný displej.
CALL zobraz0
BSF PORTA,0
CALL zobraz0
BSF PORTA,1
CALL zobraz0
BSF PORTA,2
CALL zobraz0
BSF PORTA,3
cekej1
CALL zobraz1
BSF PORTA,0
CALL zobraz0
BSF PORTA,1
CALL zobraz0
BSF PORTA,2
CALL zobraz0
BSF PORTA,3
cekej1
CALL zobraz2
BSF PORTA,0
CALL zobraz0
BSF PORTA,1
CALL zobraz0
BSF PORTA,2
CALL zobraz0
BSF PORTA,3
cekej1
zobraz0 MOVLW b'00000000'
MOVWF PORTB
RETURN
zobraz1 MOVLW b'00000001'
MOVWF PORTB
RETURN
zobraz2 MOVLW b'00000010'
MOVWF PORTB
RETURN
atd..
Předem děkuji za vaše rady.