這一段代碼它的問題就是我在開頭發送一串字符不能完成串口發送出去,還有就是我電腦第一次發送回顯沒有問題,后來就不能回顯,按一下復位鍵發送正常接收,第二次就不行了
- #include <REGX51.H>
- #include "stdio.h"
- #define u8 unsigned char
- int i=123;
- unsigned char table[10];
- bit flag=0;
- void send_byte(u8 str)
- {
- SBUF=str;
- while(!TI);
- TI=0;
- }
- void send_string(u8 *str)
- {
- while(*str!='\0')
- {
- send_byte(*str);
- str++;
- }
- }
- void main()
- {
- P1=0x00;
- TMOD=0x21; //設T0為方式1,GATE=1;
- SCON=0x50;
- TH1=0xFD;
- TL1=0xFD;
- TR1=1; //開啟定時器
- TI=1;
- EA=1;
- ES=1;
- send_string("asdfg");
- while(1)
- {
- static unsigned char j;
- if(flag==1)
- {
- // printf("%s\r\n",&table);
- send_string(&table);
- flag=0;
- for(j=0;j<10;j++)
- {
- table[j]='\0';
- }
- }
- }
- }
- void zd() interrupt 4
- {
- static unsigned char num=0,temp;
- num=0;
- if(RI==1)
- {
- temp=SBUF;
- if(temp!='\n')
- {
- table[num++]=temp;
- }
- else
- flag=1;
- RI=0;
- }
- }
復制代碼 |