code of RFID for Atmega 16

Embed Size (px)

Citation preview

  • 7/25/2019 code of RFID for Atmega 16

    1/6

    #define F_CPU 1000000UL#include#include

    #define USART_BAUDRATE 9600#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)

    int i;unsigned char card[12];int tags[10][3]={{2,3,1},{2,2,1},{3,3,0},{6,2,1},{1,7,6},{4,5,4},{9,6,0},{5,2,0},{8,4,8},{2,4,3}};

    unsigned int usart_getch(){

    while ((UCSRA & (1

  • 7/25/2019 code of RFID for Atmega 16

    2/6

    if((PINB&0b00010000)==0)z=3;

    PORTB = 0Xfd;_delay_ms(5);if((PINB&0b10000000)==0)z=4;if((PINB&0b01000000)==0)z=5;if((PINB&0b00100000)==0)z=6;if((PINB&0b00010000)==0)z=7;

    PORTB = 0b11111011;_delay_ms(5);if((PINB&0b10000000)==0)z=8;

    }return(z);

    }

    void enq(int size,int map[][size],int curr,int a[],int *i,int f[]){

    int z=0;for(z;z

  • 7/25/2019 code of RFID for Atmega 16

    3/6

    }}

    int rf(){

    usart_init();//PORTB = 3;//_delay_ms(50);getcard_id();

    //PORTB=card[12];//_delay_ms(2000);

    for(i=0;i

  • 7/25/2019 code of RFID for Atmega 16

    4/6

    while(1){

    dest=keypad();PORTB=dest;

    _delay_ms(1000);f_arr(size,map,dest,curr,f);int ndiff,cdiff;next=curr;while(next!=dest){

    next=f[curr];cdiff=curr-prev;ndiff=next-curr;if(cdiff==ndiff){

    //PORTA=0b01111111;PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    }

    else if(cdiff+ndiff==0){

    //PORTA=0b10111111;

    PORTA=0xff;_delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    }else if (cdiff==3 || cdiff==-1){

    if(ndiff>0){

    //PORTA=0b11011111;

    PORTA=0xff;_delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    }else

    {//PORTA=0b11101111;PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);

  • 7/25/2019 code of RFID for Atmega 16

    5/6

    PORTA=0xff;_delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    }}else if(cdiff==-3 || cdiff==1){

    if(ndiff>0){

    //PORTA=0b11101111;PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);

    PORTA=0b00000000;_delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    }else{

    //PORTA=0b11011111;PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);

    PORTA=0xff;_delay_ms(1000);PORTA=0b00000000;

    _delay_ms(1000);PORTA=0xff;

    _delay_ms(1000);PORTA=0b00000000;

    }}prev=curr;curr=next;int x;x=rf();

    while(x!=curr){

    if(x!=prev){

    curr=x;next=x;f_arr(size,map,dest,curr,f);break;

    }

  • 7/25/2019 code of RFID for Atmega 16

    6/6

    x=rf();}if(curr==dest){

    //PORTA=0b11110111;PORTA = 0b11111111;

    _delay_ms(5000);PORTA = 0b00000000;

    }}

    }}