本帖最后由 渔夫的烟斗 于 2016-12-29 12:00 编辑

- #include <reg52.h>
- void Delay1000ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- i = 43;
- j = 6;
- k = 203;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void uart_init()
- { TMOD=0x20;
- PCON=0x00;
- SCON=0x50;
- TL1=0xfd;
- TH1=0xfd;
- TR1=1;
-
- }
- void main()
- {
- //char a;
- uart_init();
-
-
-
- while(1)
- {
- SBUF=0x56;
- Delay1000ms();
- }
-
-
- }
- void uart_int() interrupt 4
- {
-
- if(RI)
- {
- RI=0;
- SBUF=0X11;
-
-
- }
- if(TI)
- {
- TI=0;
- SBUF=0X77;
- }
- }
经过候修改发现PROTUES中的串口应该是直连(相当于是单片机串口的延长线,在vspd软件中默认为两个串口是绞合连接)。修改完这个后,利用STC下载软件上的串口助手调试,发现,只能通过HEX格式进行发送单片机才会有回应。但是接收到的若以文本格式来接收却是显示乱码(?之类的),以HEX来显示,显示的值却不能对上号,比如 在单片机设置在接收到PC发送的数据则回应一个 “o” ,在串口助手中显示FA(以HEX显示,因为文本显示不出来。)
- void uart_itp() interrupt 4
- {
- if(RI)
- {
- RI=0;
- p=SBUF;
-
- if(p==1){P1=0XFF;}//send_str();
- if(p==2){P1=0X00;send_str();}
- if(p==0x03){P1=0XFF;}//send_str();
- if(p==0x04)P1=0X00;
-
-
- }
-
- }
TI在发送函数中进行清零操作
|