سلام من میخوام روی ال سی دیم (16*2) ساعت وتاریخ را نمایش بدهم برای انجام تغییرات روی این موارد باید بتونم به مکانهای مختلفی روی ال سی دی پرش کنم {{مثلا موقعیت ساعت در(0و0)و(0و1) هست موقعیت دقیقه در(0و3) و(0و4) و موقعیت ثانیه در (0و6)و(0و7) است و موقعیت تاریخ:سال در (0و9) و (0و10) ماه در(0و12)و(0و13) وروزدر(0و15)و (0و16)قرار دارند}} برای انجام این پرشها از متغیر kکمک گرفتم یعنی به ازای هربار خوردن کلید یک عدد به k اضافه میشه و بسته به اینکه kچند باشه به یک نقطه روی ال سی دی برای انجام پرش میره. بنظر منطقش درسته اما درست کار نمیکنه و هنگ میکنه از وقفه ها هم قبلا استفاده کردم خیلی اشکال داشت کسی میتونه کمکم کنه؟؟
[tt]
int k,j;
void setting()
{
for(j=0;j<=12;j++){
if(PINB.2==0){
while(!PINB.2);
k++;}
if(k==1){
delay_ms(3000);
sprintf(buf,"_:%d:%d",hours,second);
lcd_puts(buf);
delay_ms(3000);
i=hours;
lcd_gotoxy(0,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<23)
i++;
else if(i>=23)
i=0;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"0%d:%d:%d",i,minute,second) ;
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",i,minute,second);
lcd_puts(buf);
delay_ms(20);
}
hours=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>0)
i--;
else if(i==0)
i=23;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"0%d:%d:%d",i,minute,second) ;
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",i,minute,second);
lcd_puts(buf);
delay_ms(20);
}
}
hours=i;
}
}
if(k==2){
lcd_gotoxy(0,0);
sprintf(buf,"%d:_:%d",hours,second);
lcd_puts(buf);
delay_ms(3000);
i=minute;
delay_ms(1000);
if(PINB.0==0){
while(!PINB.0);
if (i<59)
i++;
else if(i>=59)
i=0; if(i==60) i=0;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"%d:0%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
}
if(PINB.1==0){
while(!PINB.1);
if(i>0)
i--;
else if(i==0)
i=59;
if(i<0) i=59;
i=59;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"%d:0%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
}
minute=i;
}
if(k==4){
delay_ms(3000);
sprintf(buf,"_:%d:%d",month,day);
lcd_puts(buf);
delay_ms(3000);
i=year;
lcd_gotoxy(9,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
i++;
lcd_gotoxy(9,0);
sprintf(buf,"%d:%d:%d",i,month,day);
lcd_puts(buf);
delay_ms(20);
}
year=i;
}
if(PINB.1==0){
while(!PINB.1);
i--;
lcd_gotoxy(9,0);
sprintf(buf,"%d:%d:%d",i,minute,second);
lcd_puts(buf);
delay_ms(20);
}
}
year=i;
if(k==5)
{
delay_ms(3000);
sprintf(buf,"%d:_:%d",year,day);
lcd_puts(buf);
delay_ms(3000);
i=month;
lcd_gotoxy(11,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<12)
i++;
else if(i>=12)
i=1;
if(i<10){
lcd_gotoxy(11,0);
sprintf(buf,"%d:0%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(11,0);
sprintf(buf,"%d:%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
month=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>1)
i--;
else if(i==1)
i=12;
if(i<10){
lcd_gotoxy(11,0);
sprintf(buf,"%d:0%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(11,0);
sprintf(buf,"%d:%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
}
month=i;
}
}
if(k==6){
delay_ms(3000);
sprintf(buf,"%d:%d:_",year,month);
lcd_puts(buf);
delay_ms(3000);
i=day;
lcd_gotoxy(13,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<30)
i++;
else if(i>=30)
i=1;
if(i<10){
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:0%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
day=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>1)
i--;
else if(i==1)
i=30;
if(i<10){
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:0%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
}
day=i;
}
if(k==7){
delay_ms(3000);
sprintf(buf,"_:%d:%d",mst,sst);
lcd_puts(buf);
delay_ms(3000);
i=hst;
lcd_gotoxy(2,1);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<24)
i++;
else if(i>=24)
i=0;
if(i<10){
lcd_gotoxy(2,1);
sprintf(buf,"0%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(2,1);
sprintf(buf,"%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
hst=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>1)
i--;
else if(i==1)
i=24;
if(i<10){
lcd_gotoxy(2,1);
sprintf(buf,"0%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(2,1);
sprintf(buf,"%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
}
hst=i;
}
}
}
}
} [/tt]
int k,j;
void setting()
{
for(j=0;j<=12;j++){
if(PINB.2==0){
while(!PINB.2);
k++;}
if(k==1){
delay_ms(3000);
sprintf(buf,"_:%d:%d",hours,second);
lcd_puts(buf);
delay_ms(3000);
i=hours;
lcd_gotoxy(0,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<23)
i++;
else if(i>=23)
i=0;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"0%d:%d:%d",i,minute,second) ;
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",i,minute,second);
lcd_puts(buf);
delay_ms(20);
}
hours=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>0)
i--;
else if(i==0)
i=23;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"0%d:%d:%d",i,minute,second) ;
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",i,minute,second);
lcd_puts(buf);
delay_ms(20);
}
}
hours=i;
}
}
if(k==2){
lcd_gotoxy(0,0);
sprintf(buf,"%d:_:%d",hours,second);
lcd_puts(buf);
delay_ms(3000);
i=minute;
delay_ms(1000);
if(PINB.0==0){
while(!PINB.0);
if (i<59)
i++;
else if(i>=59)
i=0; if(i==60) i=0;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"%d:0%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
}
if(PINB.1==0){
while(!PINB.1);
if(i>0)
i--;
else if(i==0)
i=59;
if(i<0) i=59;
i=59;
if(i<10){
lcd_gotoxy(0,0);
sprintf(buf,"%d:0%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(0,0);
sprintf(buf,"%d:%d:%d",hours,i,second);
lcd_puts(buf);
delay_ms(20);
}
}
minute=i;
}
if(k==4){
delay_ms(3000);
sprintf(buf,"_:%d:%d",month,day);
lcd_puts(buf);
delay_ms(3000);
i=year;
lcd_gotoxy(9,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
i++;
lcd_gotoxy(9,0);
sprintf(buf,"%d:%d:%d",i,month,day);
lcd_puts(buf);
delay_ms(20);
}
year=i;
}
if(PINB.1==0){
while(!PINB.1);
i--;
lcd_gotoxy(9,0);
sprintf(buf,"%d:%d:%d",i,minute,second);
lcd_puts(buf);
delay_ms(20);
}
}
year=i;
if(k==5)
{
delay_ms(3000);
sprintf(buf,"%d:_:%d",year,day);
lcd_puts(buf);
delay_ms(3000);
i=month;
lcd_gotoxy(11,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<12)
i++;
else if(i>=12)
i=1;
if(i<10){
lcd_gotoxy(11,0);
sprintf(buf,"%d:0%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(11,0);
sprintf(buf,"%d:%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
month=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>1)
i--;
else if(i==1)
i=12;
if(i<10){
lcd_gotoxy(11,0);
sprintf(buf,"%d:0%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(11,0);
sprintf(buf,"%d:%d:%d",year,i,day);
lcd_puts(buf);
delay_ms(20);
}
}
month=i;
}
}
if(k==6){
delay_ms(3000);
sprintf(buf,"%d:%d:_",year,month);
lcd_puts(buf);
delay_ms(3000);
i=day;
lcd_gotoxy(13,0);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<30)
i++;
else if(i>=30)
i=1;
if(i<10){
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:0%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
day=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>1)
i--;
else if(i==1)
i=30;
if(i<10){
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:0%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(13,0);
sprintf(buf,"%d:%d:%d",year,month,i);
lcd_puts(buf);
delay_ms(20);
}
}
day=i;
}
if(k==7){
delay_ms(3000);
sprintf(buf,"_:%d:%d",mst,sst);
lcd_puts(buf);
delay_ms(3000);
i=hst;
lcd_gotoxy(2,1);
delay_ms(300);
while(PINB.2){
if(PINB.0==0){
while(!PINB.0);
if (i<24)
i++;
else if(i>=24)
i=0;
if(i<10){
lcd_gotoxy(2,1);
sprintf(buf,"0%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(2,1);
sprintf(buf,"%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
hst=i;
}
if(PINB.1==0){
while(!PINB.1);
if(i>1)
i--;
else if(i==1)
i=24;
if(i<10){
lcd_gotoxy(2,1);
sprintf(buf,"0%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
else {
lcd_gotoxy(2,1);
sprintf(buf,"%d:%d:%d",i,mst,sst);
lcd_puts(buf);
delay_ms(20);
}
}
hst=i;
}
}
}
}
} [/tt]
دیدگاه