各位大牛,小弟今天编写C51串口中断程序时,遇到了一个问题,就是用SSCOM32串口调试助手发送程序,显示成这样:
请问这是什么原因呢?本人的开发板是普中科技的,数据线也连接得好好的,网上有人说要装虚拟串口。
以下是小弟的代码,还请大家指点!感激不尽!
- #include "reg52.h"
- #define uchar unsigned char
- #define uint unsigned int
- unsigned char flag,a,i;
- uchar code table[] = "I get ";
- void init()
- {
- TMOD = 0x20; //设定T1定时器工作方式2
- TH1 = 0xfd; //T1定时器装初值
- TL1 = 0xfd; //T1定时器装初值
- TR1 = 1; //启动T1定时器
- REN = 1; //允许串口接收位
- SM0 = 0; //设定串口工作方式1
- SM1 = 1; //同上
- EA = 1; //开总中断
- ES = 1; //开串口中断
- }
- void main()
- {
- init();
- while(1)
- {
- if(flag == 1) //当检测到flag为1时,说明程序已经执行过串口中断服务,即受到了数据
- {
- ES = 0; //接下来要发送数据,若不关闭串口中断,当发送完数据后,单片机同样会申请串口中断
- for(i = 0;i < 6;i ++)
- {
- SBUF = table[i]; //发送数据
- while(!TI); //等待发送完毕
- TI = 0;
- }
- SBUF = a; //发送从PC端接收到的数据
- TI = 0;
- ES = 1; //发送完毕后,重新打开串口中断
- flag = 0;
- }
- }
- }
- void ser() interrupt 4
- {
- RI = 0;
- a = SBUF; //接收数据
- flag = 1;
- }
复制代码
|