PDA

نسخه کامل مشاهده نسخه کامل : مشکل در برنامه avr



judyabott
10-06-2010, 14:17
باسلام.من یه برنامه دارم و میخواستم اگر ممکنه لطفا یه توضیح کامل برای این برنامه و نحوه عملکردش در هر مرحله رو برام بنویسید.اگر امکانش در این پست نیست در صورت امکان برام میل کنید.ممنون از لطفتون.
آدرس ایمیل من: judyabott_johnsmith@yahoo.com (judyabott_johnsmith@yahoo.com)

متن برنامه:
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
int i,j,x,y,z,key,k,b,a[16]={0xee, 0xed, 0xeb, 0xe7,0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e,0x7d, 0x7b, 0x77};
char str[20];
ali();
hamid();
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0xFF;
DDRB=0x00;
DDRD=0x0F;
PORTD=0x00;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
while (1)
{
ali();
//adade dahgan—————————————— —————-
if(j==1){
x=b;
lcd_clear();
lcd_gotoxy(0,0);
sprintf(str,"number a= %u",x);
lcd_puts(str);
delay_ms(2000);
}
//adade yekan——————————————— —————-
else if(j==2){
y=b;
lcd_clear();
lcd_gotoxy(0,0);
sprintf(str,"number b= %u",y);
lcd_puts(str);
delay_ms(2000);
j=0;



}
};
}
//================================================== ==============
ali(){
lcd_clear();
lcd_putsf("press key=");
delay_ms(90);
DDRB=0x0f;
PORTB=0xf0;
delay_ms(4);
k=PINB;
DDRB=0xf0;
PORTB=0x0f;
delay_ms(4);
key=k|PINB;
for(i=0;i<16;i++){
if(key==a[i]){
b=i;
j++;
}


if(key==0xff)ali();
else if(key==0x77) hamid();
}


}
hamid(){



lcd_clear();
lcd_gotoxy(0,0);
z = x*10+y ;
sprintf(str,"adade voridi= %u",z);
lcd_puts(str);
// sprintf(str,"adade voridi= %u",x*10+y);
// lcd_puts(str);
delay_ms(4000);
while(1)
{
PORTD=z;
z=z>>1;
delay_ms(50);
if(z==1)
delay_ms(4000);
}
ali();




}

judyabott
12-06-2010, 07:40
کسی نمی خواد جواب منو بده؟واسه فردا بهش احتیاج دارم:41: