PİC 16f84A role sürme projesi

yakup_407

Üye
Katılım
16 Ocak 2012
Mesajlar
7
Puanları
1
Yaş
36
Selamın aleyküm.
Öncelikle herkese İyi günler dilerim ben bu pic işlerinde yeniyim 16f84a pic var 4 adet de role var devreyi yaptım fakat ben devreye enerji verdiğimde 1. role sürekli çekili kalsın 2. role de her 1 saniyede 2 defa çekip bıraksın bu işlem 3 saniye sürsün ve roleyi bıraksın 3. role 6 saniye çekili kalıp braksın 4. role 3 saniye çekili kalsın ve bıraksın role aralarındaki geçiş süresi 1 saniye olsun sırayla bunlar olsun istiyorum c kodunu yazıp gönderecek bir babayiğit aranıyor... ustalardan nacizane talebimdir yanlış anlaşılmasın :) ilgilenirseniz sevinirim... tabi üzerinde daha çok çalışacam bu kodların... hayırlı günler emeğini esirgemeyen herkeze teşekkür ederim....


DEVRE BU ŞEKİLDE


devre.jpg



4 adet röleyi 5 saniye aralıkla enerjilendiren örnek PIC programı:

C kodu


// RB0 -> Role1// RB1 -> Role2// RB2 -> Role3// RB3 -> Role4#include <pic.h>#include <delay.c>//4MHz osilator__CONFIG(XT&WDTDIS&PWRTEN);// 5 saniye bekleme alt programivoid bekle(void){unsigned char a;for(a=0;a<50;a++)DelayMs(100);}main(void){unsigned char i;// PortB cikisTRISB=0;PORTB=0;// Resetten sonra 1 saniye beklefor(i=0;i<4;i++)DelayMs(250);// 5'er saniye aralikla roleleri enerjilendirfor(;;){PORTB=1; bekle();PORTB=2; bekle();PORTB=4; bekle();PORTB=8; bekle();}}

Hex kodu


:0C000000830100308A0004288301E62BF5
:10079E008D0164308312D9238D0A32300D02031875
:1007AE000800D02B8E0004308F0053309000900B39
:1007BE00DE2B8F0BDC2B8E0BDA2B831208008316AD
:1007CE008601831286018C01FA308312D9238C0A9A
:1007DE0004300C02031CEB2B01308600CF230230B9
:1007EE008600CF2304308600CF2308308600CF2327
:0207FE00F32BDB
:02400E00F1FFC0
:00000001FF
 
#include <pic.h>
#include <delay.c>
4MHz osilator__CONFIG(XT&WDTDIS&PWRTEN);
unsigned char a;

void bekle(char d) // 10ms bekleme
{
do {(d--);
DelayMs(10);
}
while (d != 0);
}

main(void){
unsigned char i;
TRISB=0;
// PortB cikis
PORTB=0; // Resetten sonra 1 saniye bekle

for( ; ; )
{PORTB=1; // Röle 1 çekti

bekle(100); //1 Sn bekle

for(a=1;a<3;a++) {
bekle(25); // çeyrek saniye bekle
PORTB=3; // Röle 1 ve 2 çekili
bekle(25); // çeyrek saniye bekle
PORTB=1; // röle 1 çekili röle 2 bıraktı
}

bekle(100); //1sn bekle

PORTB=5; // Röle 1 ve 3 çekili
bekle(600); //6sn bekle
PORTB=1; // Röle 1 çekti röle 3 bıraktı

bekle(100); //1sn bekle

PORTB=9; // Röle 1 ve 4 çekili
bekle(300); //3sn bekle
PORTB=1; // Röle 1 çekti röle 3 bıraktı

bekle(100); //1sn bekle
}
}
 
#include <pic.h>
#include <delay.c>
4MHz osilator__CONFIG(XT&WDTDIS&PWRTEN);
unsigned char a;

void bekle(char d) // 10ms bekleme
{
do {(d--);
DelayMs(10);
}
while (d != 0);
}

main(void){
unsigned char i;
TRISB=0;
// PortB cikis
PORTB=0; // Resetten sonra 1 saniye bekle

for( ; ; )
{PORTB=1; // Röle 1 çekti

bekle(100); //1 Sn bekle

for(a=1;a<3;a++) {
bekle(25); // çeyrek saniye bekle
PORTB=3; // Röle 1 ve 2 çekili
bekle(25); // çeyrek saniye bekle
PORTB=1; // röle 1 çekili röle 2 bıraktı
}

bekle(100); //1sn bekle

PORTB=5; // Röle 1 ve 3 çekili
bekle(600); //6sn bekle
PORTB=1; // Röle 1 çekti röle 3 bıraktı

bekle(100); //1sn bekle

PORTB=9; // Röle 1 ve 4 çekili
bekle(300); //3sn bekle
PORTB=1; // Röle 1 çekti röle 3 bıraktı

bekle(100); //1sn bekle
}
}

teşekkür ediyorum Derhal deniyorum
 
CCS C de çalışan kod.


#include <16f84A.h>


#use delay(clock=4000000)


unsigned char a;


main(void){
unsigned char i;
set_tris_b(0x00); // RB0 portu tümüyle çıkış olarak yönlendiriliyor
output_b(0); // Resetten sonra 1 saniye bekle


for( ; ; )
{output_b(1); // Röle 1 çekti


Delay_ms(1000);//1sn bekle


for(a=1;a<6;a++) {
Delay_ms(250); // çeyrek saniye bekle
output_b(3); // Röle 1 ve 2 çekili
Delay_ms(250);// çeyrek saniye bekle
output_b(1); // röle 1 çekili röle 2 bıraktı
}


Delay_ms(1000);//1sn bekle


output_b(5); // Röle 1 ve 3 çekili
Delay_ms(600);//1sn bekle
output_b(1); // Röle 1 çekti röle 3 bıraktı


Delay_ms(1000);//1sn bekle


output_b(9); // Röle 1 ve 4 çekili
Delay_ms(3000);//1sn bekle
output_b(1); // Röle 1 çekti röle 3 bıraktı


Delay_ms(1000);//1sn bekle
output_b(0);
Delay_ms(1000);//1sn bekle
}
}
 
Son düzenleme:
hocam teşekkür ederim emeğin için ama ben bunları Hex koduna dönüştüremedim birde onları atsan zahmet olmazsa
 
CCS C de çalışan kod.


#include <16f84A.h>


#use delay(clock=4000000)


unsigned char a;


main(void){
unsigned char i;
set_tris_b(0x00); // RB0 portu tümüyle çıkış olarak yönlendiriliyor
output_b(0); // Resetten sonra 1 saniye bekle


for( ; ; )
{output_b(1); // Röle 1 çekti


Delay_ms(1000);//1sn bekle


for(a=1;a<6;a++) {
Delay_ms(250); // çeyrek saniye bekle
output_b(3); // Röle 1 ve 2 çekili
Delay_ms(250);// çeyrek saniye bekle
output_b(1); // röle 1 çekili röle 2 bıraktı
}


Delay_ms(1000);//1sn bekle


output_b(5); // Röle 1 ve 3 çekili
Delay_ms(600);//1sn bekle
output_b(1); // Röle 1 çekti röle 3 bıraktı


Delay_ms(1000);//1sn bekle


output_b(9); // Röle 1 ve 4 çekili
Delay_ms(3000);//1sn bekle
output_b(1); // Röle 1 çekti röle 3 bıraktı


Delay_ms(1000);//1sn bekle
output_b(0);
Delay_ms(1000);//1sn bekle
}
}



SÜREKLİ HATA ALIYORUM HER İKİSİNDE DE BİRDE SEN DENESEN MPLAP 8.84 İLE .hex yapmaya çalıştım nerede hata yaptığımı anlayamadım saygılar...
 
DENEDİM FAKAT ŞU ŞEKİLDE HATA ALDIM


----------------------------------------------------------------------
Debug build of project `C:\new\test1.asm.mcp' started.
Language tool versions: MPASMWIN.exe v5.44, mplink.exe v4.42, mplib.exe v4.42
Preprocessor symbol `__DEBUG' is defined.
Tue Mar 20 19:24:45 2012
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\new\test1.asm.mcs".
Clean: Done.
Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "TEST.asm" /l"TEST.lst" /e"TEST.err" /d__DEBUG=1
Error[105] C:\NEW\TEST.ASM 1 : Cannot open file (Include File "pic.h" not found)
Error[105] C:\NEW\TEST.ASM 2 : Cannot open file (Include File "delay.c" not found)
Error[108] C:\NEW\TEST.ASM 3 : Illegal character (4)
Error[122] C:\NEW\TEST.ASM 4 : Illegal opcode (char)
Error[122] C:\NEW\TEST.ASM 6 : Illegal opcode (bekle)
Error[108] C:\NEW\TEST.ASM 7 : Illegal character ({)
Error[108] C:\NEW\TEST.ASM 8 : Illegal character (()
Error[108] C:\NEW\TEST.ASM 9 : Illegal character (})
Warning[205] C:\NEW\TEST.ASM 10 : Found directive in column 1. (while)
Error[129] C:\NEW\TEST.ASM 46 : Expected (ENDW)
Error[129] C:\NEW\TEST.ASM 47 : Expected (END)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\new\test1.asm.mcp' failed.
Language tool versions: MPASMWIN.exe v5.44, mplink.exe v4.42, mplib.exe v4.42
Preprocessor symbol `__DEBUG' is defined.
Tue Mar 20 19:24:47 2012
----------------------------------------------------------------------
BUILD FAILED
 
Ne şanski bugün eve gidemedim.
Ancak yine de burdan yardımcı olmaya çalışacağım...
 
Sen HI-TECH kodu mu istiyorsun yoksa CCS mi?
CCS yazsam sorun olur mu?
Şuan evde olmadığım için, o yüzden...
Burda sadece CCS var.
 

Forum istatistikleri

Konular
129,842
Mesajlar
930,709
Kullanıcılar
452,693
Son üye
sefa241

Yeni konular

Geri
Üst