void main()
{
#include "C:\Users\Yasemin\Desktop\deneme\built_in.h"
#define ALARMPORT PORTE
#define ALARM TRISE
#define ALARMCIKIS F0
#define ALARMKURULU F1
#define ALARMKAPAT PORTA.F4
#define LM35 0
#define LDR 1
unsigned short tmp,i;
unsigned char ControlReg, TaskControl, RxBuffer;
unsigned char saat, dakika, san,ye, a_saat, a_dakika, AlarmCnt;
unsigned int isi, isik, epadres, adr;
unsigned short PWMDuty;
const char __RW = 0;
void interrupt(void)
{
if (PIR1.TMR1IF)
{
TaskControl.F3 = 1;
TMR1L = 0x00;
TMR1H = 0XF0;
PIR1.TMR1IF = 0;
}
if (PIR1.RCIF)
{
iF(RCSTA.FERR || RCSTA.OERR)
{
RCSTA.CREN = 0;
asm nop
RCSTA.CREN = 1;
}
PIR1.RCIF = 0;
RxBuffer = RCREG;
ControlReg.F7 = 1;
TaskControl.f0 = 1;
PIR1.RCIF = 0;
}
}
void e2eprom_write(unsigned int adr, unsigned short data)
{
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(Hi(adr));
I2C_Wr(Lo(adr));
I2C_Wr(data);
I2c_Stop();
Delay_ms(100);
}
unsigned short e2eprom_read(unsigned int adr)
{
unsigned short data;
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(Hi(adr));
I2C_Wr(Lo(adr));
I2C_Repeated_Start();
I2C_Wr(0xA1);
data = I2C_Rd(0u);
while (I2C_Is_Idle() == 0);
I2C_Stop();
return data;
}
void e2eprom_erase()
{
unsigned int i;
for (i=0, i< 0xFFF; i++) e2eprom_write(i,0xFF);
}
char GetChar()
{
while(!(ControlReg.F7));
ControlReg.F7 = 0;
return RxBuffer;
}
void sendChar (char c)
{
if(!(TXSTA.TXEN)) TXSTA.TXEN = 1;
while(!(PIR1.TXIF));
PIR1.TXIF = 0;
TXREG = c;
}
void writeString(const char *s)
{
char i=0;
while( s[i]!=0) sendChar(s[i++]);
}
unsigned short Char_to_Hex(unsigned short gec)
{
ControlReg.F6 = 0;
if (gec>47 && gec<58)
{
gec=gec-48;
return gec;
}
else if (gec>64 && gec<71)
{
gec=gec-65;
gec=gec+0x0A;
return gec;
}
else if (gec>96 && gec<103)
{
gec=gec-97;
gec=gec+0x0A;
return gec;
}
ControlReg.F6 = 1;
return 0;
}
unsigned short GetSendHexByte()
{
unsigned short ch;
ch = GetChar();
sendChar(ch);
tmp = Char_to_Hex(ch);
asm swapf _tmp,F
ch = Char_to_Hex(ch);
if (ControlReg.F6) return 0xFF;
tmp = tmp + ch;
return tmp;
}
unsşgned short GetSendDecByte()
{
return Bcd2Dec(GetSendHexByte());
}
void sendDecByte(unsigned short data)
{
unsigned short onlar,birler;
onlar = 0;
birler = 0;
if (data<100)
{
while( data>=100) { onlar++; data = data - 10; }
birler = data;
}
sendChar('0'+ onlar);
sendChar('0'+ birler);
}
void LCD_DecWrite(unsigned short data)
{
unsigned short onlar,birler;
onlar = 0;
birler = 0;
while( data>=10) { onlar++; data = data - 10; }
birler = data;
Lcd_Chr_Cp('0'+ onlar);
Lcd_Chr_Cp('0'+ birler);
}
void IsiOlc()
{
Isi = Adc_Read(LM35) >> 1;
}
void IsiGoruntule()
{
sendDecByte(Isi);sendChar(' ');sendChar('C');
}
void IsikOlc()
{
Isik = Adc_Read(LDR);
}
void IsikGoruntule()
{
sendDecByte(Isik);
}
void ZamanAyarla()
{
saat = GetSendDecByte(); sendChar(':'); dakika = GetSendDecByte();
}
void ZamanGoruntule()
{
SendDecByte(saat);sendChar(':');SendDecByte(Dakika);
}
void AlarmAyarla()
{
a_saat = GetSendDecByte();SendChar(':');a_dakika = GetSendDecByte();
Eeprom_Write(0x10), a_saat);
Eeprom_Write(0x11), a_dakika);
}
void AlarmGoruntule()
{
a_saat = Eeprom_Read(0x10); a_dakika = Eeprom_Read(0x11);
sendDecByte(a_saat); sendChar(':');sendDecByte(a_dakika);
}
void ZamanIsle()
{
saniye++;
if(saniye>59)
{
saniye = 0;
dakika++;
if(dakika>59)
{
dakika = 0;
saat++;
if(saat>23) saat = 0;
IsiOlc();
e2eprom_write(epadres, saat);
epadres++;
e2eprom_write(epadres, Isi);
epadres++;
}
if (ControlReg.ALARMCIKIS)
{ AlarmCnt++;
if (AlarmCnt>=40)
{
ControlReg.ALARMCIKIS = 0;
ControlReg.ALARMKURULU = 0;
ALARMPORT.ALARMCIKIS = 0;
AlarmCnt = 0;
}
}
}
if (ControlReg.ALARMKURULU)
if ((saat == a_saat) && (dakika == a_dakika))
{
ALARMPORT.ALARMCIKIS = 1;
ControlReg.ALARMCIKIS =1;
}
Lcd_Out(1,1,"");
LCD_DecWrite(saat) ;Lcd_Chr_Cp(':');
LCD_DecWrite(dakika) ;Lcd_Chr_Cp(':');
LCD_DecWrite(saniye);
IsiOlc();
Lcd_Out(2,1, "IS: ");
LCD_DecWrite(Isi);
Lcd_Chr_Cp('C');
}
void TerminalProgram()
{
unsigned short ch,tmp,i;
ch=GetChar();
if (ch==13)
while(ch1=48)
{
do
{
writeString("\r\n\r\n PIC DK 2.2 Iletisin Menusune Hosgeldiniz");
writeString("\r\n Copyright Serdar UYAR - 2011 [email][email protected][/email]");
writeString("\r\n\r\n MENU SECENEKLERI:\n\r");
writeString(" <1> Isi goster..\n\r");
writeString(" <2> Isik siddeti goster..\n\r");
writeString(" <3> Saati goster..\n\r");
writeString(" <4> Alarmi goster..\n\r");
writeString(" <5> e2eprom'dan saat-isi bilgilerini listele..\n\r");
writeString(" <6> Saati ayarla..\n\r");
writeString(" <7> Alarmi kur..\n\r");
writeString(" <8> PWM darbe genisligi ayarla..\n\r");
writeString(" <0> Cikis..\n\r\n\r");
writeString(" SECIMINIZ: ");
ch=GetChar();
} while(ch<48 || ch>57);
sendDecByte(ch-48) ;writeString("\n\r ");
switch(ch)
{
case 48:writeString("\n\r Menuye girmek icin ENTER'e basiniz.. \n\r");
case 49:writeString("\n\r Isi degeri: ");
IsiOlc();
sendDecByte(Isi) ;sendChar(' ') ;senChar('C') ;break;
case 50:writeString("\n\r Isik siddeti: ");
Isik = Adc_Read(LDR);
sendDecByte(Isik);
break;
case51:writeString("\n\r Saat: ");
sendDecByte(saat); sendChar(':');
SendDecByte(Dakika);
break;
case 52:if(ControlReg.ALARMKURULU)
{
a_saat = Eeprom_Read(0x10); a_dakika = Eeprom_Read(0x11);
writeString("\n\r Alarm zamani: ");
sendDecByte(a_saat); sendChar(':');
sendDecByte(a_dakika);
} else writeString("\n\r Alarm kurulmamis..");
break;
case 53:writeString("\n\r Saat - Isi \n\r");
writeString("\n\r ----------- \n\r");
i=0; adr = 0; tmp = 1; ch=0;
do {
writeString(" ");
ch = e2eprom_read(adr);
if (ch > 23) { ch = 27; tmp = 0;);
if (tmp)
{
sendDecByte(ch);
writeString(" --- ");
adr++;
ch = e2eprom_read(adr);
sendDecByte(ch);
writeString("\n\r");
adr++;
i=++;
}
if (adr>=0xFF0) ch=27
if (i==10)
}
i=0;
writeString("\n\r Cikis icin ESC tusuna basiniz..\n\r");
ch = GetChar();
} while (ch!=27);
break;
case 54:writeString("\n\r Saat ve dakika giriniz ( HH:MM ) : ");
saat = GetSendDecByte(); sendChar(':'); a_dakika = GetSendDecByte();
Eeprom_Write(0<10, a_saat); Eeprom_Write(0x11, a_dakika);
ControlReg.ALARMKURULU = 1;
break;
case 56:writeString("\n\r PWM darbe genisligini giriniz (00-FF) : ");
PWMDuty = GetSendHexByte();
PWM_Stop();
PWM_Init(1000);
PWM_Change_Duty(PWMDuty);
PWM_Start();
break;
}
}
}
void main_init()
{
TRISC.F1 = 1;
ALARMTRIS.ALARMCIKIS = 0;
ALARMPORT.ALARMCIKIS = 0;
TRISC.F6 = 0;
TRISC.F7 = 1;
TXSTA = 0;
RCSTA = 0;
SPBRG = 25;
TXSTA = 0X26;
RCSTA = 0X90;
PIE1.RCIE = 1;
Lcd_Config(&PORTB,4,5,7,3,2,1,0);
Lcd_Cmd(LCD_CLEAR);
Lcd_Cmd(LCD_CURSOR_OFF);
saat = 0;
dakika = 0;
saniye = 0;
AlarmCnt =0;
I2C_Init(100000);
epadres = 0;
a_saat = Eeprom_Read(0x10);
a_dakika = Eeprom_Read(0x11)İ
T1CON.TMR1ON = 0;
TMR1L = 0X00;
PIE1.TMR1IE = 1;
T1CON.TMR1ON = 1;
PWM_Init(1000);
PWM_Charge_Duty(0X80);
PWM_Start();
ADCON1 = 0X84;
TRISA.F4 = 1;
ControlReg = 0;
TaskControl = 0;
INTCON.PEIE = 1;
INTCON.GIE = 1;
}
void main()
{
main_init();
writeString("\n\r Sistem çalışıyor!...Menüye giriş için ENTER'e basınız");
while(1)
{
if (TaskControl.F0)
{
TerminalProgram();
TaskControl.F0 = 0;
}
if (TaskControl.F1)
{
IsiOlc();
TaskControl.F1 = 0;
}
if (TaskControl.F2)
{
IsikOlc();
TaskControl.F2 = 0;
}
if (TaskControl.F3)
{
ZamanIsle();
TaskControl.F3 = 0;
}
if (!ALARMKAPAT)
{
ControlReg.ALARMCIKIS = 0;
ControlReg.ALARMKURULU = 0;
ALARMPORT:ALARMCIKIS = 0;
AlarmCnt = 0;
writeString("\r\n\r\n Alarm durduruldu..\n\r");
}
Delay_ms(250);
}
}
Hatalar ise;
20 300 Syntax Error: ';' expected, but '{' found deneme.c
27 424 '}' expected '}' found deneme.c
36 402 ; expected, but '.' found deneme.c
36 393 'PIR1' Identifier redefined deneme.c
36 371 Specifier needed deneme.c
36 396 Invalid declarator expected'(' or identifier deneme.c
37 402 ; expected, but '=' found deneme.c
37 371 Specifier needed deneme.c
37 396 Invalid declarator expected'(' or identifier deneme.c
37 393 '' Identifier redefined deneme.c
37 312 Internal error '' deneme.c
0 102 Finished (with errors): 27 May 2011, 17:06:50 deneme.mcppi