//Receive Unit //Includes #include #include #include<.\txrx.c> #include #asm .equ __lcd_port=0x15 #endasm #include //definitions #define begin { #define end } #define MAX_RX_LENGTH 32 #define data_buffer 32 #define threshold 2000 //declarations char my_rx_data[MAX_RX_LENGTH]; unsigned int time; char done, length, i, j, k, current_line, last_replaced; char lcd_buffer[41]; // LCD display buffer char seen_ids[4]; //********************************************************** //timer 0 compare ISR interrupt [TIM0_COMP] void timer0_compare(void) begin if(time<=threshold) time++; end //********************************************************** //initialization void init() begin //Used for LED array, output DDRB = 0xff; PORTB = 0xff; //starting off //PORTD used for TX. //d7 led, d1 TX, d0,d2..6 unused DDRD = 0xff; PORTD.7=0; //turn d7 led on as power-on led //set up timer 0 TIMSK=2; //turn on timer 0 cmp match ISR OCR0 = 250; //set the compare re to 250 time ticks //prescalar to 64 and turn on clear-on-match TCCR0=0b00001011; //LCD Setup, PORTC lcd_init(); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf(" WIRELESS UART RECEIVER "); lcd_gotoxy(0,1); lcd_putsf(" by Meghan Desai, 2005 "); lcd_gotoxy(0,3); lcd_putsf(" ...LOADING... "); delay_ms(1500); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("ID LTH NUM PAYLOAD....................."); //TXRX init txrx_init(0,1,249,1);//RX only - 4000 baud - led on rx_reset(MAX_RX_LENGTH); //initialize variables seen_ids[0] = 0; seen_ids[1] = 0; seen_ids[2] = 0; seen_ids[3] = 0; time=0; done=0; current_line=1; last_replaced=1; #asm ("sei"); end //********************************************************** void main() { init(); while(1) { if(rxdone()==1) { k=0; init_getrx(); while(rx_empty()!=1) { my_rx_data[k] = get_next_rx_data(); k++; } // 0 - 170 // 1 - start_char // 2 - ID // 3 - length // 4 - number // 5 to x - payload rx_reset(MAX_RX_LENGTH); if(current_line>3)) begin current_line=1; end //ID sprintf(lcd_buffer,"%-i",decodeOne(my_rx_data[2])); lcd_gotoxy(0,current_line); lcd_putsf(" "); lcd_gotoxy(0,current_line); lcd_puts(lcd_buffer); //length sprintf(lcd_buffer,"%-i",my_rx_data[3]); lcd_gotoxy(4,current_line); lcd_puts(lcd_buffer); //number sprintf(lcd_buffer,"%-i",my_rx_data[4]); lcd_gotoxy(8,current_line); lcd_puts(lcd_buffer); //payload i=0; j=12; while(i= 40) i = my_rx_data[3]; } current_line++; } if(time==threshold) { time=0; PORTD.7 = 1; } } //while } //main