به نام خدا
سلام دوستان!
دیروز یه پروژه نوشتم گفتم بزارم شاید بدرد کسی بخوره!
در این پروژه بیشتر از وقفه استفاده شده و گفتنیه که ساعت دقیق نیست یعنی از تایمر / کانتر استفاده نکردم...!
خوب من در زیر هم فایل پرتئوس و هم کدویژن رو گذاشتم...!
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
#include <stdlib.h>
int s=0,m=0,h=0,n;
char t[16];
void code (void);
void main(void) {
char p[16];
char d[16];
int u=15;
DDRC=0XFF;
PORTC.0=0;
DDRD=0X00;
PORTD=0xFF;
// کدهای مربوط به وقفه
GICR=0x40;
MCUCR=0x03;
GIFR=0x40;
#asm("sei")
lcd_init(16);
lcd_gotoxy(1,0);
lcd_putsf("THE NAME OF GOD");
delay_ms(1000);
lcd_clear();
//تاریخ
data:
u++;
lcd_gotoxy(0,0);
sprintf(d,"94/05/%d ",u);
lcd_puts(d);
// نمایش ساعت
while (1) {
s++;
if (s>=59) s=0,m++;
if(m>=59) m=0,h++;
if(h>=24) {
h=0;
m=0;
s=0;
goto data;
}
sprintf(p,"%d:%d:%d ",h,m,s);
lcd_gotoxy(0,1);
lcd_puts(p);
delay_ms(850);
};
}
// کدهایی که وقفه باید بعد از فعال شدن انجام بده
interrupt [2] void exit_vagfe_int0 (void)
{
n=0;
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
while (PIND.2==0){
PORTC.1=1;
delay_ms(500);
PORTC.1=0;
while (PIND.2==0)
{
PORTC.2=1;
delay_ms(500);
PORTC.2=0;
while (PIND.2==0)PORTC=111,delay_ms(500),PORTC=000,lcd_gotoxy(0,0),lcd_putsf("ABOUT ME: IM ALI"),lcd_gotoxy(0,1),lcd_putsf("I LIVE IN KASHAN"),delay_ms(2000),lcd_clear(),h=25,m=0,s=-1;
while (PIND.5==0)m=m+5,code();
while (PIND.6==0)m=m-5,code();
}
while (PIND.5==0)m++,code();
while (PIND.6==0)m--,code();
};
while (PIND.5==0)h++,code();
while (PIND.6==0)h--,code();
if (m>=59,m<0) m=0,lcd_gotoxy(13,0),lcd_putsf("Err"),delay_ms(1000);
if (h>=24,h<0) h=0,lcd_gotoxy(13,0),lcd_putsf("Err"),delay_ms(1000);
lcd_gotoxy(13,0);
lcd_putsf(" ");
}
// آرایه
void code (void){
PORTC.3=!PORTC.3;
lcd_gotoxy(14,0);
n++;
itoa(n,t);
lcd_puts(t);
delay_ms(500);
}
خوب توضیح زیادی هم لازم نداره اگه لازم داشته توش نوشتم...!
اینم فایل کدویژن و پرتئوس که براتون آماده کردم...!
فعلا
یا علی مدد...
سلام برادر
لینک دانلود مشکلی داره؟
آخه اجازه دانلود نمیده.