Gondjaim vannak. Az RD0-jelzés érkezését az RB0/Int lábbal akartam érzékelni, és ekkor jött volna a megszakítás. Valami nagyon gyanús volt nekem tegnap, így újra megnéztem a 250Ft-os PIC adatlapját.
Sajnos kiderült, hogy nincs benne Interrupt láb.
Mivel az RB0 jel tényleg csak egy pillanatra jelenik meg, ezt a PIC nem fogja tudni érzékelni sima beolvasom-ellenõrzöm rutinnal. Tehát kell egy törölhetõ tároló.
Azt, hogy párhuzamosan kell adatokat venni, és az IN hívást kiszolgálni, a következõképpen gondoltam megoldani:
Nyilván ahogy te is mondtad Ferro, nincs idõ adatokat fogadni, és kiszolgálni egyszerre, ugyanazon PIC-en.
Erre én azt mondtam neked, hogy akkor beteszek még egy PIC-et, hiszen úgy is olcsó, hely meg van bõven.
A gondolatmenetem a következõ.
Jön az adat a billentyûzet felõl, PIC-1 ezeket veszi, és eltárolja memóriájába, PIC-2 kiszolgálja Z80-at saját memóriájából. PIC-1 szól, hogy kész van, PIC-2 nyugtázza, és cserélnek. PIC-2 veszi az adatokat és tárolja, míg PIC-2 szolgálja ki Z80-at.
A billentyûzet felõl elég csak annyit jelezni, hogy:
1. lenyomták
2. felengedték
Így az adatátvitel csak a lényeges dolgokra korlátozódik. A Z80-nal kommunikáló PIC addig ismétli míg mást nem kap. Így rengeteg idõt megspórolok.
Ez a rendszer - véleményem szerint - addig tökéletes lesz, amíg nem tenyerel rá valaki a billentyûzetre, mert ott lehet hogy lesz már valami késlekedés. Én azonban nem hiszem, hogy valaki úgy játszana, vagy írna egy programot, hogy rátenyerel a billentyûzetre.