Bu sayfadaki yazılar
Sayfanın metni
Sayfa 53
nini de lojik 1 seviyesine çıkartıyor. 8 rölenin hepsi akımı çekiyor ve bağlı oldukları elektronik aletleri çalıştırıyorlar. POKE 56577,0 komutu ise tüm çıkışları lojik 0 veriyor ve rölelerin hepsi birden kesime gidiyor. Bir sonraki aşama ise bu çıkışları bağımsız olarak kontrol edebilmek. Burada işler biraz karışıyor. Bunu bir örnekle açıklayalım: Diğer bit'lere hiç dokunmadan nasıl lojik 1 yaparsınız ve sonra nasıl lojik 0'a çevirirsiniz? Eğer PRB'deki sayıyı desimal 1 ya da 0000 0001 ile “OR”larsanız (veya-larsanız) diğer bitlere hiç dokunmadan 1'e set etmiş olursunuz. POKE 56577, (PEEK (56577) OR 1) komutu bu işi yapar. Bu biti diğerlerine hiç dokunmadan 0 yapmak için yapacağımız iş ise, PRB'yi 254 ya da; Binary 1111 1110 ile “AND'lemek (ve-lemek) olacak.
POKE 56577, (PEEK(56577) AND 254) komutu da bu işi yapar. Özet olarak, POKE 56579,255 komutunu verdikten sonra, PRB'deki değeri;
0000 0001-1 ile OR'lamak PB0'ı 1 yapar. 1111 1110-254 ile AND'lemek PB0'ı 0 yapar. 0000 0010-2 ile OR'lamak PB1'i 1 yapar. 1111 1101-253 ile AND'lemek PB1'i 0 yapar. 0000 0100-4 ile OR'lamak PB2'yi 1 yapar. 1111 1011-251 ile AND'lemek PB2'yi 0 yapar. 0001 0000-16 ile OR'lamak PB4'ü 1 yapar. 1110 1111-239 ile AND'lemek PB4'ü 0 yapar.
0010 0000 - 32 ile OR'lamak PB5'i 1 yapar.
ile AND'lemek
—— en
41404 ile AND'lemek PBS'i O yapar. 0100 0000 - 464 ile OR'lamak PB6'- yı 1 yapar. 10441 144141x127 ile ANDlemek PB7'yi O yapar.
Birkaç örnek verirsek;
POKE 56577.(PEEK(56577)OR16) PB4'ü 1 yapar. POKE AND239) PB4'ü O yapar.
6526 içindeki saati ve alarmını kullanarak sabah radyonuzu açabilir, elektrik fırınınızı zamanlayıp belirli bir süre sonra kapatabilirsiniz.
Bol şanslar sana C.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 52
İlk tabloda altı çizili satırlar 2'nin (U2), 16 adet saklayıcısının $DD00 ve $DDFF Hex ya da 56576-56591 desimal adresleri arasında yer aldığını belirtiyor. Sırasıyla; Adresin Hex değeri Adresin ondalık değeri Saklayıcı DD00 56576 PRA DD01 56577 PRB DD02 56578 DDRA DD03 56579 DDRB DD04 56580 TALO DD05 56581 TAHI DD06 56582 TBLO DD07 56583 TBHI DD08 56584 TOD DD09 56585 TODSEC DD0A 56586 TODMIN DD0B 56587 TODHR DD0C 56588 SDR DD0D 56589 CRA DD0E 56590 DD0F 56591 CRB
User Port çıkışına U2'nin B port'u verilmiş. Dolayısıyla bizi 56579 adresindeki PRB saklayıcısı ilgilendiriyor. Çıkışta PB7'den PB0'a kadar 8 port pini var. Bu bize “aydınlatma” makalesinde önerilen yöntemle 8 değişik röleyi kumanda edebilme imkânı tanıyor. Farzedelim ki 8 değişik röleye kumanda etmek istiyoruz. Bunun için transistörle sürülen 8 röleyi PB7'den PB0'a kadar 8 çıkışa bağladık. (Aman dikkat edin 5 voltluk minyatür rölenin giriş sarımı hemen hemen 100 mA akım çeker ve 8 röle ise 5-6 volt 800 mA'lık bir güç kaynağına sahip olmayı gerektirir. Dolayısıyla 8 röleyi beslemek için ayrı bir güç kaynağına ihtiyacınız olacak.) 8 adet port çıkışını da röleye bağlayacağımız için DDRB'ye;
(11111111) ya da (255) 2 16 10 yazmak gerekir. POKE 56579,255 PB0'dan PB7'ye kadar pinleri çıkış haline getiriyor. POKE 56577,255 komutu 8 çıkış pi-
HEX DECIMAL BITS DESCRIPTION HEX DECIMAL BITS 6-5 Timer B Mode Select: 6 User / RS-232 Clear to 00 — Count System 02 Send Clock Pulses 5 User 01 — Count Positive 4 User / RS-232 Carrier De- CNT Transitions tect 10 — Count Timer A 3 User / RS-232 Ring Indi- Underflow Pulses cator 11 Count Timer A 2 User / RS-232 Data Termi- Underflows While nal Ready CNT Positive 1 User / RS-232 Request to 4-0 Same as CIA Control Reg. Send A—for Timer B (0) User / RS-232 Received DD00—DDFF 56576—56831 MOS 6526 Complex Inter- Data face Adapter (CIA) #2 DD02 56578 Data Direction DD00 56576 Data Port A (Serial Bus, Register — Port A RS-232, VIC Memory DD03 56579 Data Direction Control) Register — Port B Serial Bus Data Input DD04 56580 Timer A: Low-Byte Serial Bus Clock Pulse DD05 56581 Timer A: High-Byte Input DD06 56582 Timer B: Low-Byte Serial Bus Data Output 56583 Timer B: High-Byte Serial Bus Clock Pulse DD08 56584 Time-of-Day Clock: 1/10 Output Seconds Serial Bus ATN Signal DD09 56585 Time-of-Day Clock: Sec- Output onds RS-232 Data Output (User DD0A 56586 Time-of-Day Clock: Min- Port) utes VIC Chip System Memory DD0B 56587 Time-of-Day Clock: Hours Bank Select (Default — 4 AM/PM Flag (Bit 7) nn) DD0C 56588 Synchronous Serial I/O 56577 Data Port B (User Port, Data Buffer RS-232) DD0D 56589 CIA Interrupt Control User / RS-232 Data Set Register (Read NMIs/ Ready Write Mask)