|
|
楼主 |
发表于 2008-7-26 11:01:06
|
显示全部楼层
把MCU程序修改成和例子7差不多的,主要程序如下:
/*******************************************************************/
/* */
/* 单片机在串口接收1字节 */
/* 说明:串口接收中断 */
/* */
/*******************************************************************/
void serial_int(void) interrupt 4
{
if (RI)
{
ES = 0;
pc_command = SBUF;
RI = 0;
ES = 1;
}
}
void data_convert(uint data_to_convert) //把数据折开成四字节,为了方便发送
{
data_conver[0] = 0;
data_conver[1] = (uchar)((data_to_convert & 0x0f00) >> 8);
data_conver[2] = (uchar)((data_to_convert & 0x00f0) >> 4);
data_conver[3] = (uchar)(data_to_convert & 0x000f);
}
void main(void)
{
uchar i;
EA = 1; //开总中断
ES = 1; //开串口中断
SCON = 0x50; //串口方式1工作,8位数据位,1位停止位,无奇偶校验,允许接收
TMOD = 0x20; //定时器1定时方式2(8位自动重装计数器
PCON = 0x80; //波特率加倍控制,SMOD位
TH1 = 0xff; //定时器/计数器T1置初值 波特率115200
TL1 = 0xff; //定时器/计数器T1置重装数
TR1 = 1; //启动定时器T1
while(1)
{
while(pc_command != 0x11); //等待PC发送开始传送指令
pc_command = 0;
read2543(0x30);
delay_10us();
read2543(0x30);
data_convert(ad); //ad是uint类型,
for(i = 0;i < 4;i++) //循环4次,即是发送四次,每次发送一个字节
{
SBUF = data_conver; //发送变换后的4字节数据
while(TI==0); //等待发送完毕
TI = 0; //发送完毕以后清除发送完标志位
}
}
}
还是不行,前面板显示如下:
用其它串口工具却可以看到4个字节的数据:
实在是太郁闷了. |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|