打印

单片机的串口通信

[复制链接]
1621|4
手机看帖
扫描二维码
随时随地手机跟帖
沙发
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语言实例浅析》  里面说的比较清楚 我写的  哈哈 多多指点

使用特权

评论回复
5
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

粉丝