سلام دوستان من ماژول EM-18 را خریدم و راش انداختم ولی با برنامم اصلا جواب نمیده و وقتی تگ و میزنم جواب نمی ده این برناممه اگه میشه کمک کنید
کد:
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
#define up PINB.4
#define down PINB.5
#define okey PINB.6
eeprom unsigned char card1[14],card2[14],card3[14],card4[14],card5[14],card6[14],card7[14],card8[14],card9[14],card10[14];
bit whileflag,key;
char cn;
char cno[16];
unsigned char buff[14],buffread[14],usartcounter,counter,cardnumber=1,equal,c,i,l;
void led_green(void);
void led_red(void);
void read_card(void);
void save_card(void);
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
interrupt [14] void get_data()
{
buff[usartcounter]=UDR;
if(usartcounter==13)
{
whileflag=1;
usartcounter=0;
}
else if(usartcounter==!13)usartcounter++;
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
interrupt[2] void saveing()
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("pass new card");
delay_ms(1000);
read_card();
save_card();
//led_green();
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void read_card(void)
{
for(c=0;c<14;c++)buffread[c]=getchar();
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void save_card(void)
{
switch (cardnumber)
{
case 1:
for(c=0;c<14;c++)
{
card1[c]=buffread[c];
}
cardnumber=2;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(1) saved");
led_green();
delay_ms(2000);
break;
case 2:
for(c=0;c<14;c++)
{
card2[c]=buffread[c];
}
cardnumber=3;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(2) saved");
led_green();
delay_ms(2000);
break;
case 3:
for(c=0;c<14;c++)
{
card3[c]=buffread[c];
}
cardnumber=4;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(3) saved");
led_green();
delay_ms(2000);
break;
case 4:
for(c=0;c<14;c++)
{
card4[c]=buffread[c];
}
cardnumber=5;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(4) saved");
led_green();
delay_ms(2000);
break;
case 5:
for(c=0;c<14;c++)
{
card5[c]=buffread[c];
}
cardnumber=6;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(5) saved");
led_green();
delay_ms(2000);
break;
case 6:
for(c=0;c<14;c++)
{
card6[c]=buffread[c];
}
cardnumber=7;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(6) saved");
led_green();
delay_ms(2000);
break;
case 7:
for(c=0;c<14;c++)
{
card7[c]=buffread[c];
}
cardnumber=8;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(7) saved");
led_green();
delay_ms(2000);
break;
case 8:
for(c=0;c<14;c++)
{
card8[c]=buffread[c];
}
cardnumber=9;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(8) saved");
led_green();
delay_ms(2000);
break;
case 9:
for(c=0;c<14;c++)
{
card9[c]=buffread[c];
}
cardnumber=10;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(9) saved");
led_green();
delay_ms(2000);
break;
case 10:
for(c=0;c<14;c++)
{
card10[c]=buffread[c];
}
cardnumber=11;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(10) saved");
led_green();
delay_ms(2000);
break;
case 11:
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card full !!!");
delay_ms(2000);
break;
}
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
interrupt [3] void cleaning()
{
key=1;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("select card NO:");
while(key)
{
if(up==0)
{
while(up==0);
delay_us(30);
cn++;
if(cn>10)cn=0;
delay_us(30);
lcd_clear();
lcd_gotoxy(0,1);
sprintf(cno,"card = %u",cn);
lcd_puts(cno);
}
if(down==0)
{
while(down==0);
delay_us(30);
if(cn<=0)cn=1;
cn--;
delay_us(30);
lcd_clear();
lcd_gotoxy(0,1);
sprintf(cno,"card = %u",cn);
lcd_puts(cno);
}
if(okey==0)
{
while(okey==0);
delay_us(30);
key=0;
}
}
switch(cn)
{
case 1:
for(c=0;c<14;c++)
{
card1[c]=0;
}
cardnumber=1;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(1) earased");
delay_ms(2000);
cn=0;
break;
case 2:
for(c=0;c<14;c++)
{
card2[c]=0;
}
cardnumber=2;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(2) earased");
delay_ms(2000);
cn=0;
break;
case 3:
for(c=0;c<14;c++)
{
card3[c]=0;
}
cardnumber=3;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(3) earased");
delay_ms(2000);
cn=0;
break;
case 4:
for(c=0;c<14;c++)
{
card4[c]=0;
}
cardnumber=4;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(4) earased");
delay_ms(2000);
cn=0;
break;
case 5:
for(c=0;c<14;c++)
{
card5[c]=0;
}
cardnumber=5;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(5) earased");
delay_ms(2000);
cn=0;
break;
case 6:
for(c=0;c<14;c++)
{
card6[c]=0;
}
cardnumber=6;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(6) earased");
delay_ms(2000);
cn=0;
break;
case 7:
for(c=0;c<14;c++)
{
card7[c]=0;
}
cardnumber=7;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(7) earased");
delay_ms(2000);
cn=0;
break;
case 8:
for(c=0;c<14;c++)
{
card8[c]=0;
}
cardnumber=8;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(8) earased");
delay_ms(2000);
cn=0;
break;
case 9:
for(c=0;c<14;c++)
{
card9[c]=0;
}
cardnumber=9;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(9) earased");
delay_ms(2000);
cn=0;
break;
case 10:
for(c=0;c<14;c++)
{
card10[c]=0;
}
cardnumber=10;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card(10) earased");
delay_ms(2000);
cn=0;
break;
}
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void main (void)
{
DDRB=0X8F;
PORTB=0XF0;
DDRD=0X00;
PORTD=0XFF;
UCSRA=0x00;
UCSRB=0x90;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=6;
MCUCR=0X00;
GICR=0XC0;
GIFR=0XC0;
lcd_init(16);
#asm("sei")
resume:
while(whileflag==0)
{
lcd_putsf("Pass Your Card\n>"); //wait for card
delay_ms(50);
lcd_clear();
lcd_putsf("Pass Your Card\n>>");
delay_ms(50);
lcd_clear();
lcd_putsf("Pass Your Card\n>>>");
delay_ms(50);
lcd_clear();
for(i=0;i<16;i++)
{
lcd_putsf("Pass Your Card");
lcd_gotoxy(i,1);
lcd_putsf(">>>>");
delay_ms(50);
lcd_clear();
}
lcd_putsf("Pass Your Card\n <");
delay_ms(50);
for(i=16;i>0;i--)
{
lcd_putsf("Pass Your Card");
lcd_gotoxy(i,1);
lcd_putsf("<<<<");
delay_ms(50);
lcd_clear();
}
lcd_putsf("Pass Your Card\n<<<");
delay_ms(50);
lcd_clear();
lcd_putsf("Pass Your Card\n<<");
delay_ms(50);
lcd_clear();
lcd_putsf("Pass Your Card\n<");
delay_ms(50);
lcd_clear();
}
whileflag=0;
for(counter=0;counter<14;counter++)
{
if(card1[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (1)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card2[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (2)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card3[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (3)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card4[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (4)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card5[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (5)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card6[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (6)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card7[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (7)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card8[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (8)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card9[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (9)");
led_green();
goto resume;
}
equal=0;
for(counter=0;counter<14;counter++)
{
if(card10[counter]==buff[counter])equal++;
}
if(equal==14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card (10)");
led_green();
goto resume;
}
equal=0;
if(equal<14)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("card not matched");
led_red();
}
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void led_green(void)
{
for(l=0;l<4;l++)
{
PORTB.0=~PORTB.0; //led
delay_ms(500);
}
PORTB.2=1;
delay_ms(1000); //buzer
PORTB.2=0;
PORTB.3=1;
delay_ms(1500); //relay
PORTB.3=0;
equal=0;
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void led_red(void)
{
for(l=0;l<4;l++)
{
PORTB.1=~PORTB.1; //led
delay_ms(5000);
}
}




من خودم این مشکلو داشتم.

دیدگاه