Tekrar herkese merhaba diyelim . Daha öne paylaşacağım dediğim kodlar bitti ama Pic'i değiştirme kararı aldım bir önceki kullandığımız 16F877A fiyat ve boyut anlamadın buyuk bi Pic'di onun yerine 16F628A kullanarak yeniden bir baskı devre oluşturdum .Eski Pic'de 3 tane boş port kalıyordu . 16F628A nın kendi içinde osilatörü oldugun için bu Pic'e osilatör bağlamamıza gerek kalmadı için dahili olarak 4Mhz bulunmakta. Bu devrede fazla bakırları eritmekle uğraşmamak için boşlukları doldurdum .Sol tarafta gördüğünüz 9 pin butonlar içindir.En üsteki +5v bağlıdır diğerleri iste pic'in inputlarıdır.Sağ usteki 2pin ise +12v DC girişidir( 1. bacak negatif , 2. bacak ise +12 olmalı). Rölelerin cıkısı +12v dir serit Led sürmek veya herhangi başka birşey için kullanılabilirler.
Linkte(
Indir ) kodların hazır olduğu .hex dosyası ve baskı devrenin hazır olduğu .Pdf dosyalı bulunmaktadır . Şimdi kodları verelim o zaman ;
int oldstate[7];
void main() {
PORTA = 0;
PORTB = 0;
TRISA = 0xFF; //A portunun giriş oldugunu beliriler
TRISB = 0x00;
CMCON =0x07; //Anolog portları kapatır
while(1){
if (oldstate[0]==1 && PORTA.F0==0) { // tuş basılı degil ama ilk basmadan sonrada yanmasını sağlar
PORTB.F0=1 ;}
if (oldstate[1]==1 && PORTA.F1==0) {
PORTB.F1=1 ;}
if (oldstate[2]==1 && PORTA.F2==0) {
PORTB.F2=1 ;}
if (oldstate[3]==1 && PORTA.F3==0) {
PORTB.F3=1 ;}
if (oldstate[4]==1 && PORTA.F4==0) {
PORTB.F4=1 ;}
if (oldstate[5]==1 && PORTA.F5==0) {
PORTB.F5=1 ;}
if (oldstate[6]==1 && PORTA.F6==0) {
PORTB=0xFF ;}
if (Button(&PORTA, 0, 1, 1)) { // tuşa basatıktan sonra röle vs ısıgın yanmasını saglar
oldstate[0] = 1; }
if (oldstate[0] && Button(&PORTA, 0, 1, 0)) { //tuşa 2. kez basılınca röle vs ısıgın kapanmasını saglar
PORTB.f0=~PORTB.f0;
oldstate[0]=0;}
if (Button(&PORTA, 1, 1, 1)) {
oldstate[1] = 1; }
if (oldstate[1] && Button(&PORTA, 1, 1, 0)) {
PORTB.f1=~PORTB.f1;
oldstate[1]=0;}
if (Button(&PORTA, 2, 1, 1)) {
oldstate[2] = 1; }
if (oldstate[2] && Button(&PORTA, 2, 1, 0)) {
PORTB.f2=~PORTB.f2;
oldstate[2]=0;}
if (Button(&PORTA, 3, 1, 1)) {
oldstate[3] = 1; }
if (oldstate[3] && Button(&PORTA, 3, 1, 0)) {
PORTB.f3=~PORTB.f3;
oldstate[3]=0;}
if (Button(&PORTA, 4, 1, 1)) {
oldstate[4] = 1; }
if (oldstate[4] && Button(&PORTA, 4, 1, 0)) {
PORTB.f4=~PORTB.f4;
oldstate[4]=0;}
if (Button(&PORTA, 5, 1, 1)) {
oldstate[5] = 1; }
if (oldstate[5] && Button(&PORTA, 5, 1, 0)) {
PORTB.f5=~PORTB.f5;
oldstate[5]=0;}
if (Button(&PORTA, 6, 1, 1)) { //butun ışıkları yakar
oldstate[6] = 1;
PORTB=0xFF; }
if (oldstate[6] && Button(&PORTA, 6, 1, 0)) {
PORTB.f6=~PORTB.f6;
oldstate[6]=0;}
if (Button(&PORTA, 7, 1, 1)) { // hepsini sondurur
oldstate[6] = 0;
PORTB=0x00; }
}
}