程序有没有错误
#define uchar unsigned char#define uint unsigned int
void PORT_Init (void)
{
XBR0 = 0x01; // Port I/O Crossbar Control 0
XBR1 = 0x40; //Port I/O Crossbar Control 1
P0MDOUT = 0x10; //Port 0 Output Mode Configuration 输出模式配置
}
void UART0_Init (void)
{
SCON0 |= 0x10; // Port I/O Crossbar Control 0
CKCON = 0x01; // Clock Control时钟控制
TH1 = 0x64; //波特率为9600 // Timer/Counter 1 High 计时器一高位
TL1 = TH1; // Timer/Counter 1 Low 计时器一低位
TMOD = 0x20; //Timer/Counter Mode 时间计数模式
TR1 = 1; ///Timer1 on/off control启动time1
TI0 = 1; //Transmit interrupt flag传输中断标示
}
void delay(void)
{
uint i;
for(i=1000;i>0;i--);
}
void main()
{
uchar g;
PCA0MD &= ~0x40; // PCA0 Mode 模式
OSCICN |= 0x03; // Internal Oscillator Control 内部振荡器控制
PORT_Init(); //端口初始化
UART0_Init();//串口初始化
g=9;
while(1)
{
delay();
SBUF0=g;
}
}
向串口间断性发送数据,只发送一个字符'9'
不过PC端读取时 总是很乱的一大堆数
g=9是 读取的是/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r..........
g=a时 读取的是乱码了 但是很多
帮我看下 上面的程序有没有错误~ 你发送0x09,想显示出'9'来?
如果要发出去数字9...要么:
g='9';
要么就g=0x39;或g=57; 还是不对
这次g='9';
去读到的只有MMMMMMMMMMM.....和/0
有/0就说明你输入值有问题
'9'和0x39以及57都是等价的
\0是字符串的结束符,估计你输入的是g="9";
这里"9"实际上等价于'9','\0'两个字符 楼主问题解决了吗?看看时间计数模式有没有什么吧
只看代码的初始化和时延函数本身看不出什么???
只看代码的初始化和时延函数本身看不出什么 单片机的地线和pc端的地线是否可靠连接 看着像是乱码啊 看接收到的数据应该是根本就没有接受到数据,检查一下是否已经发送数据吧 楼主贴出来的代码,包括主函数,都没有见到任何发送数据的功能的函数啊 本帖最后由 labasi 于 2022-11-7 13:24 编辑
帮楼主顶一下 发送机制是什么没有见到在主循环中进行发送啊 上边的程序是没有问题的额 可是上边的程序并不完整,不能支撑起楼主想要的功能 楼主是在哪里发送的字符呀?只看到串口初始化了
页:
[1]