programovanie - kodovy zamok
Moderátor: Moderátoři
http://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html
Kód: Vybrat vše
void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEWE))
;
/* Set up address and data registers */
EEAR = uiAddress;
EEDR = ucData;
/* Write logical one to EEMWE */
EECR |= (1<<EEMWE);
/* Start eeprom write by setting EEWE */
EECR |= (1<<EEWE);
}Kód: Vybrat vše
unsigned char EEPROM_read(unsigned int uiAddress)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEWE))
;
/* Set up address register */
EEAR = uiAddress;
/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);
/* Return data from data register */
return EEDR;
}Co třeba ...
Nebo můžeš testovat rovnou celou bránu,stav uložíš do příznakového bytu,ten můžeš testovat a pokud bude nulový/nebo naopak nenulový(to si zvolíš),může se zavolat rutina obsluhy kláves.Nebo můžeš cyklicky v obsluze přerušení testovat stav vstupů.Obecně klávesnice nevyžaduje extrémní rychlost čtení,navíc mnohdy musíš ošetřit softwarově zákmity tlačítek,takže bych v přerušení obsluhoval raději displej,no je to na tobě:-)
- Přílohy
-
klav.txt- (269 bajtů) Staženo 163 x
Pozn. k C# a čekání na tlačítko a podobně: program ve Windowsích se nikde nezastavuje, nota bene nečeká v nějaké smyčce na stisk tlačítka. On po skončení toho, co měl udělat nakonec volá funkci GetMessage() v okenní funkci hlavního okna, a pokud není žádná zpráva ve frontě, tak se řízení odevzdá do systému. Variantně volá čekání na signalizaci objektu jádra WaitForSingle(Multiple)Object(s) (), kde se také předá řízení systému, pokud tento objekt už nebyl signalizován nebo může volat čekání na socket. Ale nikdy se nehaltuje nebo necyklí na místě. Pokud se to udělá v kódu násilně, tak při nejbližším přerušení od časovače stejně systém řízení sebere.
Nakonec, pokud je potřeba snímat stav tlačítek a přitom také současně potřeba obsluhovat ještě jiné události z okolí - kontakt čipové karty, vypršení časovače (softwarového), příjem pro RS232 a tak dále, je nejlépe výše nastíněné paradigma napodobit. Udělat si hlavní smyčku, která je v roli "systému" a detekuje všechny možné události. Jestliže se daná událost vyskytne, předá se řízení příslušnému obslužnému podprogramu.
No...
Systém při přerušení...
No pokud bude spát...
PIC16F876A...
Mimochodem,tady je ta "kravinka":-)
http://files.kpelektro.webnode.cz/20000 ... A1tor2.jpg
A ještě,jak se to dělá,když se chci vyhnout tomu přerušení,jednoduše zakážu globální přerušení (bit GIE).Sice to procesor vzbudí,ale neprovede se skok do rutiny přerušení(vektor 0004h)