PIC 16F84 obsluha EEPROM a Časovača
Moderátor: Moderátoři
PIC 16F84 obsluha EEPROM a Časovača
-
Jirka
- Příspěvky: 2034
- Registrován: 01 črc 2005, 00:00
- Bydliště: zbídačený kraj
- Kontaktovat uživatele:
http://www.cmail.cz/doveda/procesory/pgm16f84.htm
( http://www.cmail.cz/doveda/ )
Zápis do EE je lepšie popísaný v 16F818 na str 29.
BANKSEL EECON1 ...........; Select Bank of EECON1
BTFSC EECON1, WR........ ; Wait for write
GOTO $-1 .......................; to complete
BANKSEL EEADR .............; Select Bank of EEADR
;najskôr si pripravíš adresu, kam budeš zapisovať
MOVF ADDR, W ...............; ADDR = moja adresa
MOVWF EEADR................ ; Data Memory Address to write
;potom data, ktoré budeš zapisovať
MOVF VALUE, W ...............; VALUE = moje data
MOVWF EEDATA ...............; Data Memory Value to write
; a potom povinnú sekvenciu, ktorá to tam uloží
BANKSEL EECON1 ...........; Select Bank of EECON1
BCF EECON1, EEPGD ........; Point to DATA memory
BSF EECON1, WREN ........ ; Enable writes
BCF INTCON, GIE ............; Disable INTs.
MOVLW 55h .....................;
MOVWF EECON2 ..............; Write 55h
MOVLW AAh ....................;
MOVWF EECON2 ..............; Write AAh
BSF EECON1, WR .............; Set WR bit to begin write
BSF INTCON, GIE .............; Enable INTs.
BCF EECON1, WREN ..........; Disable writes
galjo píše:máš pravdu - potom pride otázka čo je to ?? ADDR = moja adresa ??? a čo je to VALUE = moje data a nepracuje to... a potom poraď , alebo môžeš mu ten program vyrobiť až máš toľko času..lebo on o tom čítal a malo by to byť funkčné..
No musim Ti dat v necem za pravdu. meno by si mel nejdriv asi poradne precis datasheet a zacit s jednossima vecma. Pokud to uz udelal, tak jedine dobre. Protoze jenom poctivym cvicenim se clovek neco muze dobre nacit. Premyslel jsi ale ze treba uz delal s nekterymi procesory od jineho vyrobce, ma neco uz za sebou a tady jen tape, protoze je to proste jinak nez je zvyklej. Ja sam delam se tremi druhy procesoru a PIC jsem prakticky jeste nikdy nedelal. Proto vim, ze ac mam neco za sebou, budu rad kdyz mi nekdo poradi. Od toho je tu tohle forum a od toho sem chodime. Ne jenom pro rady, ale taky je davat. Predpokladam, ze meno je dost inteligentní na to aby si ViPaliho priklad dobre vylozil...
No a zabudli sme na ten Tmr0.
V registri INTCON nastaviš bit 7 a 5 (gie, t0ie) do 1, čím povolíš prerušenie Global a Timer0.
V OPTION nastaviš bit 0,1,2 (ps0 - ps2) preddelič (napr. 111 = 256) a T0cs 0/1 podľa zdroja impulzov, psa = 0 cez preddelič.
Potom do T0 vložíš FFh.
256(T0) x 256(Ps) = 64k
Ak máš T0cs = 1 a cez RA4 ti vstupuje signál z 32k krištálu, tak každé 2sec ti nastaví bit T0if (intcon) čo vyvolá prerušenie.
Ak máš T0cs = 0 a Fosc 4MHz, tak do preddeliča ti vstupuje frekvencia Fosc/4 = 1MHz. Potom 1MHz / 64k = 16, to znamená, že 16 krát za sekundu ti vyvolá prerušenie, čo ošetríš v nejakom registri, do ktorého na začiatku vložíš 16 a budeš ho každým prerušením dekrementovať.
Rada na záver, zabudni na 16F84 a programuj 16F818, 16F819, 16F88
Ak bude problém, tak sa spýtaj, určite sa tu niekto najde, kto ti poradí.