单片机的串口通信

[复制链接]
2464|4
 楼主| 东南西北风 发表于 2010-7-16 14:43 | 显示全部楼层 |阅读模式
怎样编写单片机的串口通信的程序,一般的步骤是怎么样的?
h292 发表于 2010-7-16 14:47 | 显示全部楼层
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:
确定T1的工作方式(编程TMOD寄存器);
计算T1的初值,装载TH1、TL1;
启动T1(编程TCON中的TR1位);
确定串行口控制(编程SCON寄存器);
串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。
thelovestone 发表于 2010-7-16 20:35 | 显示全部楼层
晚上我就写个串口程序,争取能仿真出来
xlsbz 发表于 2010-7-16 21:45 | 显示全部楼层
你用的51单片机么?

我告诉你怎么弄啊

网上搜索《51单片机C语言实例浅析》  里面说的比较清楚 我写的  哈哈 多多指点
strang 发表于 2010-7-16 23:15 | 显示全部楼层
给你个简单的实例工你参考、

//单片机向PC发送数据
#include<reg51.h>       //包含单片机寄存器的头文件
unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
//流水灯控制码,该数组被定义为全局变量
/*****************************************************
函数功能:向PC发送一个字节数据
***************************************************/
void Send(unsigned char dat)
{
   SBUF=dat;
   while(TI==0)
      ;
    TI=0;
}
/**************************************************************
函数功能:延时约150ms
**************************************************************/
void delay(void)   
{
   unsigned char m,n;
         for(m=0;m<200;m++)
          for(n=0;n<250;n++)          
           ;
}
/*****************************************************
函数功能:主函数
***************************************************/
void main(void)
{
   unsigned char i;
   TMOD=0x20;  //TMOD=0010 0000B,定时器T1工作于方式2
   SCON=0x40;  //SCON=0100 0000B,串口工作方式1
   PCON=0x00;  //PCON=0000 0000B,波特率9600
   TH1=0xfd;    //根据规定给定时器T1赋初值
   TL1=0xfd;    //根据规定给定时器T1赋初值
   TR1=1;      //启动定时器T1   
  while(1)
   {
          for(i=0;i<8;i++)   //模拟检测数据
             {
                    Send(Tab[i]);        //发送数据i
                          delay();   //150ms发送一次数据                          
                  }               
   }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部