سلام وقتتون بخیر
پروژه ساعت با rtc میکرو رو برنامه نوشتم با کدویژن ، توی محیط پرتیوس شبیه سازی کردم برای atmega16 کار می کنه ساعت اما برای atmega 32 کار نمی کنه ، برنامه هر دو را به یمک صورت نوشتم فقط میکرو ها رو عوض کردم کسی میدونه مشکل از چیه؟
اینم برنامه ام
#include <mega16.h>
#include <stdio.h>
#include <alcd.h>
unsigned char Buffer[17];
unsigned char Buffer1[17];
unsigned char second = 20;
unsigned char minute = 20;
unsigned char hour = 20;
unsigned int Y=1389,MO=11,D=11;
void time_write(){
sprintf(Buffer,"%02d:%02d:%02d",hour,minute,second );
sprintf(Buffer1,"%02d:%02d:%02d",Y,MO,D);
//sprintf(buffer,"TIME %d:%d:%d\nDATE %d/%d/%d",H,M,S,Y,MO,D);
lcd_gotoxy(4,0);
lcd_puts(Buffer);
lcd_gotoxy(4,1);
lcd_puts(Buffer1);
}
void date_calc(){
unsigned int d;
if(MO<=6) d=31;
if(MO>=7) d=30;
if(MO==12) d=29;
D++;
if(D>d){
D=1;
MO++;
if(MO==13){
MO=1;
Y++;
}
}
}
void main(void){
///////////////////block 1
lcd_init(16);
lcd_clear();
///////////////////block 2
TIMSK = 0x40;
TIFR = 0x40;
#asm ("sei")
///////////////////block 3
ASSR = 0x08;
TCNT2 = 0x00;
TCCR2 = 0x05;
///////////////////block 4
time_write();
while(1);
}
interrupt[5]void Tik_Tik(void){
second++;
if(second==60){
second = 0;
minute++;
if(minute==60){
minute = 0;
hour++;
if(hour==24) {hour = 0; date_calc();}
}
}
time_write();
}
سوال بعدیم اینه که اگر بخوام قابلیت تنظیم به ساعتم اضافه کنم چکار باید کنم؟
با تشکر از همگی دوستان
پروژه ساعت با rtc میکرو رو برنامه نوشتم با کدویژن ، توی محیط پرتیوس شبیه سازی کردم برای atmega16 کار می کنه ساعت اما برای atmega 32 کار نمی کنه ، برنامه هر دو را به یمک صورت نوشتم فقط میکرو ها رو عوض کردم کسی میدونه مشکل از چیه؟
اینم برنامه ام
#include <mega16.h>
#include <stdio.h>
#include <alcd.h>
unsigned char Buffer[17];
unsigned char Buffer1[17];
unsigned char second = 20;
unsigned char minute = 20;
unsigned char hour = 20;
unsigned int Y=1389,MO=11,D=11;
void time_write(){
sprintf(Buffer,"%02d:%02d:%02d",hour,minute,second );
sprintf(Buffer1,"%02d:%02d:%02d",Y,MO,D);
//sprintf(buffer,"TIME %d:%d:%d\nDATE %d/%d/%d",H,M,S,Y,MO,D);
lcd_gotoxy(4,0);
lcd_puts(Buffer);
lcd_gotoxy(4,1);
lcd_puts(Buffer1);
}
void date_calc(){
unsigned int d;
if(MO<=6) d=31;
if(MO>=7) d=30;
if(MO==12) d=29;
D++;
if(D>d){
D=1;
MO++;
if(MO==13){
MO=1;
Y++;
}
}
}
void main(void){
///////////////////block 1
lcd_init(16);
lcd_clear();
///////////////////block 2
TIMSK = 0x40;
TIFR = 0x40;
#asm ("sei")
///////////////////block 3
ASSR = 0x08;
TCNT2 = 0x00;
TCCR2 = 0x05;
///////////////////block 4
time_write();
while(1);
}
interrupt[5]void Tik_Tik(void){
second++;
if(second==60){
second = 0;
minute++;
if(minute==60){
minute = 0;
hour++;
if(hour==24) {hour = 0; date_calc();}
}
}
time_write();
}
با تشکر از همگی دوستان