标题:
关于串口调试的问题,help
[打印本页]
作者:
汰淘气
时间:
2013-8-9 16:33
标题:
关于串口调试的问题,help
#include"c8051f350.h"
#define sysclk 24500000 //系统时钟频率,单位:HZ;
#define baud 9600 //串口通信波特率,单位:bps
void Uart0_Init(void);
void Sysclk_Init(void);
void SysPort_Init(void);
void Uart0_SendChar(unsigned char chr);
void main(void)
{
unsigned char a;
PCA0MD&=~0x40; // 禁止看门狗定时器
Sysclk_Init(); // 配置系统时钟
SysPort_Init(); // 端口配置
Uart0_Init(); // 串口初始化
while(1)
{
a=9;
Uart0_SendChar(a);
}
}
void Uart0_Init(void)
{
SCON0 = 0x10; //允许接收
if (sysclk/baud/2/256 < 12)
{
TH1 = -(sysclk/baud/2/12);
CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 00
}
else
{
TH1 = -(sysclk/baud/2/48);
CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 10
CKCON |= 0x02;
}
TL1 = TH1;
TMOD &= ~0xf0; // 定时器设置
TMOD |= 0x20;
TR1 = 1; // 启动定时器,串口开始工作
TI0 = 0; // 清除中断标志
RI0 = 0;
ES0 = 0;
}
void Sysclk_Init(void)
{
OSCICN = 0x83;
}
void SysPort_Init(void)
{
P0MDOUT = 0x1D;
P0MDIN = 0xFF;
P0 = ~P0MDOUT;
P1MDOUT = 0x38;
P1MDIN = 0x3F;
P1 = ~P1MDOUT;
P0SKIP = 0x00;
P1SKIP = 0x00;
XBR0 = 0x03;
XBR1 = 0xC0;
IE = 0x80;
}
void Uart0_SendChar(unsigned char chr)
{
TI0 = 0;
SBUF0 = chr;
while(!TI0); // 等待发送1个字节数据完成
TI0 = 0; // 清除中断标志
}
这是一段很简单的串口通信程序,但是我用串口调试助手确收不到任何数据。如果将a=9改为a=‘9’,串口调试助手可以正常显示。为什么,那么如何传输数字而不是字符呢
作者:
jjsimida
时间:
2013-8-10 17:40
试试十六进制
作者:
汰淘气
时间:
2013-8-12 10:34
jjsimida 发表于 2013-8-10 17:40
试试十六进制
十六进制也不行
作者:
livingliving
时间:
2015-4-10 09:10
虽然不懂,但还是要顶,毕竟每一位老手都是从新手蜕变而来的,赞一个。。。。。。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1