Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1964681
  • 博文数量: 356
  • 博客积分: 8284
  • 博客等级: 中将
  • 技术积分: 4580
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-15 20:25
个人简介

天行健,君子以自强不息

文章分类

全部博文(356)

文章存档

2018年(1)

2016年(4)

2015年(13)

2014年(14)

2013年(2)

2012年(25)

2011年(43)

2010年(65)

2009年(189)

分类: C/C++

2010-04-01 14:43:54

1、只发送
//采用方式一:波特率4800,晶振12M。一位起始位,8位数据位,和一位结束位。一帧数据有十位
#include "reg51.h"
#define uchar unsigned char
#define uint  unsigned int
//延时程序//////////////////由Delay参数确定延迟时间*/
void mDelay(unsigned int Delay)
{ unsigned int i;
 for(;Delay>0;Delay--)
 { for(i=0;i<124;i++)
  {;}
 }
}
////////////////////  主程序   ////////////////////
void main()
{ uchar OutDat;  //定义输出变量
 TMOD=0x20;     //TMOD=0
 TH1=0xf3;      //12MHZ   ,BPS:4800,N,8,1,0xf3=243
 TL1=0xf3;
 PCON=0x80;     //方式一,8位数据位,一位起始位和一位结束位
 TR1=1;         //?????????????????????????????
 SCON=0x40;     //串口通信控制寄存器  模式一
 OutDat=0xaa;   //向串口发送固定数据值
 for(;;)        //循环程序
 {
  SBUF=OutDat;//发送数据
  for(;;)    
  { if(TI)  //发送中断位   当发送停止位时置1,表示发送完成
    break;
  }
  mDelay(500);
  TI=0;       //清零中断位   
  //OutDat=~OutDat; //显示内容按位取反
 }
 

2、将接收的数据发送出去

#include "reg51.h"
#define uchar unsigned char
#define uint  unsigned int

//延时程序//////////////////由Delay参数确定延迟时间*/

void mDelay(unsigned int Delay)
{ unsigned int i;
 for(;Delay>0;Delay--)
 { for(i=0;i<124;i++)
  {;}
 }
}
////////////////////  主程序   ////////////////////

void main()
{

 TMOD=0x20;     //TMOD=0
 TH1=0xf3;      //12MHZ   ,BPS:4800,N,8,1,0xf3=243
 TL1=0xf3;
 PCON=0x80;     //方式一,8位数据位,一位起始位和一位结束位
 EA    = 1;                  /*打开总中断*/
 ES    = 1;
 TR1=1;         //?????????????????????????????
 SCON=0x50;     //串口通信控制寄存器  模式一,收发使能


 for(;;)        //循环程序
 {
 }

}      

void UART_SER (void) interrupt 4 //串行中断服务程序
{
    unsigned char Temp;          //定义临时变量
  
   if(RI)                        //判断是接收中断产生
     {
   RI=0;                      //标志位清零
   Temp=SBUF;                 //读入缓冲区的值
   P1=Temp;                   //把值输出到P1口,用于观察
      SBUF=Temp;                 //把接收到的值再发回电脑端
  }
   if(TI)                        //如果是发送标志位,清零
     TI=0;
}

 
阅读(4799) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-06-02 09:23:33

可不可以给我串口的单片机的电路图,编程还是用C语言的比较好,我这边急需要,我的QQ 583 789 402 谢谢!

chinaunix网友2011-06-02 09:23:28

可不可以给我串口的单片机的电路图,编程还是用C语言的比较好,我这边急需要,我的QQ 583 789 402 谢谢!