به نام خدا

سلام دوستان!

دیروز یه پروژه نوشتم گفتم بزارم شاید بدرد کسی بخوره!

در این پروژه بیشتر از وقفه استفاده شده و گفتنیه که ساعت دقیق نیست یعنی از تایمر / کانتر استفاده نکردم...!

خوب من در زیر هم فایل پرتئوس و هم کدویژن رو گذاشتم...!


#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);

}


خوب توضیح زیادی هم لازم نداره اگه لازم داشته توش نوشتم...!


اینم فایل کدویژن و پرتئوس که براتون آماده کردم...!

دانلود با لینک مستقیم


فعلا 

یا علی مدد...