|
test.c 程序功能为从键盘收到字符从串行口1发送出去,从串行口接受的字符在屏幕上显示。(上位机程序,TURBO C编写) #include #include #define PROTOCAL 0xe3 #define PROT 0 #define TX 1 #define RX 2 #define STATUS 3 int port= 0 ; main() { int s; unsigned char c; bioscom(PROT, PROTOCAL, port); clrscr(); puts("-------------"); puts("test.ext PC RS232 COM1 <9,600 N 8 1>"); puts("-------------"); while(1) { s= bioscom (STATUS,0,port)&0x100; if(s) { c= bioscom (RX, 0,port); printf("%c",c); } if(kbhit()) { c= getch (); switch(c) {case ' ': clrscr(); puts("-------------"); puts("test.ext PC RS232 COM1 <9,600 N 8 1>"); puts("-------------"); break; case 27: exit(0); break; default: printf("%c",c); bioscom(TX, c, port); break; } } } }
test_send.c 程序功能为每发送一串“HELLO”延时一段时间后重复发送,上位机可以在屏幕上显示。(下位机程序,C51编写) #include #define BYTE unsigned char #define WORD unsigned int BYTE idata txdata[7]={"HELLO\n"}; void main() { BYTE i; WORD j; TMOD= 0x20 ; TL1=0xfd; TH1=0xfd; SCON= 0xd8 ; PCON= 0x00 ; TR1=1; while(1) { i= 0 ; while(txdata[i]!=0x00) { SBUF= txdata [i]; while(TI= =0); TI= 0 ; i++; } for(j=0;j<10000;j++); } }
test_tr.c 程序功能为收到字节后即刻发送出去,微机输入的字符回显在屏幕上。(下位机程序,C51编写) #include void main(void) { unsigned char a; TMOD= 0x20 ; TL1=0xfd; TH1=0xfd; SCON= 0xd8 ; PCON= 0x00 ; TR1=1; while(1) { while(RI= =0); a= SBUF ; RI= 0 ; SBUF= a ; while(TI= =0); TI= 0 ; } } 问题描述: test_send.c 程序功能为每发送一串“HELLO”延时一段时间后重复发送,上位机可以在屏幕上显示,这个功能我已经实现了。但是test_tr.c 程序功能即下位机收到字节后即刻发送出去,微机输入的字符回显在屏幕上。比如键盘输入“A”,屏幕上应显示“AA”。这个功能没有能实现,不知道test_tr.c 程序哪里出现问题了。我调了好久也没搞定,请教各位了!!!补充:我下位机用的是edn51的板子。 |
|