#include #include #include #define PORT1 0x3F8 //COM1 0x3F8 //COM2 0x2F8 //COM3 0x3E8 //COM4 0x2E8 void main() { int c; int lock=0; char ch; outportb(PORT1+1,0);//turn off interrupts for port1 outportb(PORT1+3,0x80);//dlab on outportb(PORT1+0,0x0C);//9600bps outportb(PORT1+1,0x00);//for baud rate upper byte outportb(PORT1+3,0x03);//8 bits, no parity, 1 stop bit outportb(PORT1+2,0xC7);//fifo outportb(PORT1+4,0x0B);//DTR,RTS,and OUT2 printf("\n\tRS-232 Interface with robot for obstacle detection and avoidance\n"); printf("\t------------------------------------------------------------------\n"); printf("Usage\n"); printf("W->move front\n"); printf("A->rotate left\n"); printf("D->rotate right\n"); printf("H->Halt\n"); printf("L->Override syncronization\n"); printf("Esc->Quit\n"); printf("________________________________________________________________________________\n"); printf("#"); do { c=inportb(PORT1+5);//check for input if(c&1) { ch=inportb(PORT1);//store in ch if(ch=='Z') { printf("Ack recieved."); lock=0; printf("\n#"); } } if(kbhit()) { ch=getch(); if(ch=='W') printf("Send->Move front"); else if(ch=='A') printf("Send->Rotate Left"); //else if(ch=='S') // printf("Send->Move Backward"); else if(ch=='D') printf("Send->Rotate Right"); else if(ch=='H') printf("Send->Halt"); else if(ch=='L') { lock=0; printf("Syncronization overridden"); } else printf("Invalid input"); if((ch=='W' || ch=='A' /*|| ch=='S'*/ || ch=='D' || ch=='H' ||ch=='Z') && lock==0) { outportb(PORT1,ch);//send ch lock=1; } else if(lock==1) printf("...Waiting for acknowledgement"); printf("\n#"); } }while(ch!=27); }