使用C语言编程实现单片机与上位机串行通信,其上位机发送数据给单片机,

使用C语言编程实现单片机与上位机串行通信,其上位机发送数据给单片机,单片机接收到后发回给上位机。单片机fosc为11.0592MHz,波特率使用9600,串口工作在方式1... 使用C语言编程实现单片机与上位机串行通信,其上位机发送数据给单片机,单片机接收到后发回给上位机。单片机fosc为11.0592MHz,波特率使用9600,串口工作在方式1。要中断法接收,查询法发送。 展开
 我来答
monengs
2013-12-30 · TA获得超过118个赞
知道小有建树答主
回答量:133
采纳率:80%
帮助的人:93.1万
展开全部
 #include "reg52.h"
 #define  uchar unsigned char
 #define  LLONG 30
 
 //char code table[]="Hello!";
 uchar code table[]={'F','i','r','s','t','C','h','a','r',':',0x0d,0x0a,'W','W','W','.','H','E','B','T','U','.','E','D','U','.','C','N',0x0d,0x0a};
 uchar Flag,FirstChar=0,UARTChar[10]={0};
 
 void uart() interrupt 4
 {
  ES=0;          //---- 中断暂停 ----
  RI=0;          //---- 清标志位 ----
  FirstChar=SBUF;
  Flag=1;
  ES=1;          //---- 中断开启 ----
 }
 
 void main()
 {    
  char i=0;
  TH1=0xFD;
  TL1=0xFD;
  TMOD=0x20;//T1在定时器方式
  TCON=0x40;//TR1=1
  PCON=0x00;//SMOD为0
  SCON=0x50;//串行方式1 REN=1
  IP=0x00;
  IE=0x90;
  
  while(1)
  {  
   if(Flag==1)
   {
    ES=0;          //---- 中断暂停 ----
    Flag=0;        //---- 清标志位 ----
    for(i=0;i<10;i++)
    {
     SBUF=table[i];
     while(!TI);
     TI=0;
    }
    SBUF=FirstChar;
    while(!TI);    //---- 通讯等待 ----
    TI=0;          //---- 清标志位 ----
    for(i=10;i<LLONG;i++)
    {
     SBUF=table[i];
     while(!TI);
     TI=0;
    }
    ES=1;          //---- 中断开启 ----
   }
  }
 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
490540657
2013-12-30 · 超过23用户采纳过TA的回答
知道答主
回答量:61
采纳率:100%
帮助的人:45.5万
展开全部
你是哪款的单片机51,ATMEL,ST,还是TI的,需要程序就出单片机相应官网里去找,会有很多例程的,51的话很多论坛里都有资源,找找就有了
追问
是51单片机,老师留的题目,我不会做,纠结了好久,
追答
这比较麻烦,我手上也没51板子,一般写程序如果比较急都是在别人的程序上自己修改成自己需要的功能,因为很难找到完全符合自己要求得程序,你要不就找一个串口程序让你同学给你改改,或者就看有没有其他网友能给你写个程序,你到一些单片机论坛里去找找看有没有,51玩的人比较多,说不定可以找到。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5591d57
2013-12-30 · TA获得超过124个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:68.7万
展开全部
51的是最基础的了,有什么不明白的?可以问我。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式