为什么proteus仿真串口通讯时在虚拟终端显示00(十六进制)
上面是电路图源代码如下:#include"reg51.h"unsignedinti;voidinit(void){SCON=0x50;//设置串口工作模式为1,允许接收,...
上面是电路图
源代码如下:
#include"reg51.h" unsigned int i; void init(void){ SCON=0x50;//设置串口工作模式为1,允许接收, TI=0;//发送中断标志位清零 EA=0;//禁止所有中断 TMOD=0x20;//设置定时器T1工作方式为2,即8位重装模式; TH0=0xFD; PCON=0x00; TL0=0xFD; i=1; TR1=1;//启动计时器1; } void delay(){ i=9000; while(i--); } void main(void){ init(); while (1){ if (i==256) i=1; i++; SBUF=0x71; while (TI==0); TI=0; delay(); } }
波特率设置的是9600,程序里面设置的定时器1的初值0xfD,应该没有算错啊,那是哪里错了呢 展开
源代码如下:
#include"reg51.h" unsigned int i; void init(void){ SCON=0x50;//设置串口工作模式为1,允许接收, TI=0;//发送中断标志位清零 EA=0;//禁止所有中断 TMOD=0x20;//设置定时器T1工作方式为2,即8位重装模式; TH0=0xFD; PCON=0x00; TL0=0xFD; i=1; TR1=1;//启动计时器1; } void delay(){ i=9000; while(i--); } void main(void){ init(); while (1){ if (i==256) i=1; i++; SBUF=0x71; while (TI==0); TI=0; delay(); } }
波特率设置的是9600,程序里面设置的定时器1的初值0xfD,应该没有算错啊,那是哪里错了呢 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询