čítač impulzov s PIC16f84 - problém
Moderátor: Moderátoři
čítač impulzov s PIC16f84 - problém
zatial pocita (aspon by mal) od -3 do 9, viem ze je to zlozito, mne ide hlavne prijst nato kde je chyba dik za rady
program je tu http://obkysak.tripod.com/asm.htm pravym treba klknut na odkaz 1.asm a dat ulozit ako
edit: opravena mala chyba v asm subore (nesuvisela s problemom)
ZOBRAZ CLRF PORTB ;vynuluje portb
MOVLW .1 ;
MOVWF PORTA ;zapne displej cislo 1 (port RA0) jednotky
MOVF JED,0 ;zapise cislo ulozene v pomocnom registre do W
MOVWF PORTB ;obsah W na portb - na 7 segmentovku
CALL WAIT10
CLRF PORTB ;vynuluje portb
MOVLW .2 ;
MOVWF PORTA ;zapne displej cislo 2 (port RA1) desiatky
MOVF DES,0 ;zapise cislo ulozene v pomocnom registre do W
MOVWF PORTB ;obsah W na portb - na 7 segmentovku
CALL WAIT10
CLRF PORTB
MOVLW .4 ;zapne displej cislo 3 (port RA2) stovky
MOVWF PORTA
MOVF STO,0
MOVWF PORTB
CALL WAIT10
CLRF PORTB
Label WAIT10
čakanie 10ms
return
MINUS MOVLW B'01000000' ;ulozena binarna hodnota cisla pre 7 segmentovku
RETURN
NULA MOVLW B'00111111'
RETURN
JEDEN MOVLW B'00000110'
RETURN
atď.
Myslím, že jednoduchšie to je takto:
movf CISLO.......; načítané pulzy do W
call _7segment...; idem z čísla vyrobiť znak
GOTO ZOBRAZ
.
.
.
_7segment . . . . .; tu budem vyrábať znaky
addwf pc . . . . . . ; w pripočítam k čítaču inštrukcií (PC registru) poskočí o toľko inštrukcií, aké číslo si priniesol vo W
retlw B'00111111' ; NULA - vráti sa z podprogramu a vo W bude znak
retlw B'00000110' ; JEDEN
retlw B'01011011' ; DVA
retlw B'01001111' ; TRI
retlw B'01100110' ; STYRI
retlw B'01101101' ; PAT
retlw B'01111101' ; SEST
retlw B'00000111' ; SEDEM
retlw B'01111111' ; OSEM
retlw B'01101111' ; DEVAT
retlw B'01000000' ; minus - mmínusu musíš priradiť číslo, alebo ho generovať samostatne
CISLO_1, CISLO_10, CISLO_100.
Keď pripočítaš k CISLO_1 impulz, hneď skontroluješ či je 10, ak áno CISLO_1 = 0 a CISLO_10 = +1, a hneď skontroluješ CISLO_10 či je 10, ak áno tak CISLO_10 = 0 a CISLO_100 = +1
A potom
CISLO_1 do W
CALL TABULKA
GOTO ZOBRAZ_jednotky
CISLO_10 do W
CALL TABULKA
GOTO ZOBRAZ_desiatky
CISLO_100 do W
CALL TABULKA
GOTO ZOBRAZ_stovky
TABULKA
.
retlw 0xXX