找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4667|回复: 1
打印 上一主题 下一主题
收起左侧

[求助]51串口问题

[复制链接]
跳转到指定楼层
楼主
ID:25849 发表于 2010-9-2 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

大侠们,大家好,小弟初来乍道,请教一个问题啊!

我想调试串口,发一个指令出去,收另外一个指令回来,实现握手,但是怎么也实现不了,请指点:


#include <REG52.H>
#include <stdio.h>
unsigned char redata;
void delay( unsigned int m)
{
unsigned char j;
for(m; m > 0; m--)
for(j = 200; j > 0; j--);
}

//握手
void woshou_code(void)
{
 unsigned char woshou_tx[6]={0xaa, 0x00, 0xcc ,0x33, 0xc3, 0x3c};
 unsigned char jieshou[16]={0};
 unsigned char i=0;
  unsigned char woshou_rx[17]={0xaa, 0x00,0x4f,0x4b,0x5f,0x56,0x34,0x2e,0x32,0x0b, 0x02 ,0x00 ,0xcc ,0x33, 0xc3, 0x3c};

 while(woshou_tx!='\0')
 { SBUF=woshou_tx;
  while(!TI);
  TI=0;
   i++;
  }


     if(RI)
  {
          RI=0;
   for(i=0;i<16;i++)
   {
           redata=SBUF;
   jieshou=redata;
   i++;
   }
        }
 for(i=0;i<16;i++)
  {
  if(jieshou!=woshou_rx)
  woshou_code();
  if(jieshou=='0'&&woshou_rx=='0')
  return;
  }
}

void ser_int (void) interrupt 4 using 1
{
if(TI==1)
TI=0;
if(RI)
RI=0;
redata=SBUF;
}


void main (void) 
{
 SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1               
 TMOD|= 0x20;      //定时器工作方式2                    
 PCON|= 0x80;                                                          
 TH1 = 0xF3;     // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
 TL1 = 0xF3;         
 TR1  = 1;                                                             
 ES   = 1;        //开串口中断                  
 EA   = 1;        // 开总中断 
 while(1)
  {
  delay(200);
   woshou_code();
  }
}

 
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:25849 发表于 2010-9-2 11:53 | 只看该作者
帮帮忙啊,哎,怎么没有人啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表