原创 单片机串口中断程序,强力推荐!

2008-5-22 14:26 6245 11 15 分类: MCU/ 嵌入式

//=====================================================================================
//  Module Name :  uart.c
//  CreateDate  :  2008-4-1
//  ModifData   :  2008-4-1
//  Description :  串口中断程序,发送接收到的字符,已测试通过。
//  Author      :  LuoWei
//  Version     :  YBD_V1.0
//=====================================================================================
#include "reg51.h"


#define uchar unsigned char
#define uint unsigned int


//--------------------------------------------------------------------------
//函数名称:      UART_Init()
//函数功能:      串口初始化函数,在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
//其他说明:      串口接收中断允许,发送中断禁止
//--------------------------------------------------------------------------


void UART_Init(void)
{
 SCON = 0x50 ;  //SCON: serail mode 1, 8-bit UART, enable ucvr
 TMOD |= 0x20 ;  //TMOD: timer 1, mode 2, 8-bit reload
 PCON |= 0x80 ;  //SMOD=1;
 TH1 = 0xFA ;  //Baud:9600 fosc="11".0592MHz
 ES=1;
 TR1 = 1 ;   // timer 1 run
 EA=1;
}


 


//--------------------------------------------------------------------------
//函数名称:      main(void)
//函数功能:      主函数
//其他说明:      无
//--------------------------------------------------------------------------


void main(void)
{
 UART_Init();
 while(1);
}



//--------------------------------------------------------------------------
//函数名称:      Uart_SendData()
//函数功能:      串口发送一个字节的数据
//其他说明:      此程序供中断调用
//--------------------------------------------------------------------------


void Uart_SendData(uchar dat)
{
 SBUF=dat;  //写SBUF,开始发送
 while(TI==0); //等待发送
  TI="0";   //清发送标志位
}


 


//--------------------------------------------------------------------------
//函数名称:      INT_UartRcv()
//函数功能:      串口接收中断函数
//其他说明:      无
//--------------------------------------------------------------------------


void INT_UartRcv(void) interrupt 4
{
 uchar Rcv="0";
 if(RI)
 {
  RI="0";     //
  Rcv="SBUF";
  Uart_SendData(Rcv);  //返回接收数据,可以改为其他函数 
 }


 }

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户377235 2015-2-6 17:57

中断里的Rcv是个字符变量,不能赋值字符串吧?!能编译通过就神了

用户1590762 2009-12-10 15:28

xue xi le !!!

用户146634 2008-6-7 18:50

我正在做这个是个接收的,用汇编的要,自己编的是采用查询的方式,因为要动态显示,其中得用中断定时的,所以还得定优先级就没考率,现在又想用了,虽然是C的但思路很重要的,谢谢分享了

用户124183 2008-6-1 23:44

顶!
相关推荐阅读
用户1399169 2008-08-16 17:15
电子工程师必上的十大专业网站
在电子产业混,情报能力是相当重要的,具体体现在一要能及早全面地获得最新的设计资讯,二要能认识一些专家级的大虾,当有设计难题时,这些大虾可以伸出热情的手拉你一把,则对你的设计会帮助很大的。小可我在电子产...
用户1399169 2008-07-29 10:31
高速PCB设计指南,喜欢的就收藏吧!
如果你已经设计了足够多的双层板,如果你想往高速PCB方向进军,那么“高速PCB的设计指南”你一定要看!...
用户1399169 2008-07-24 13:04
我的淘宝店
http://shop35826321.taobao.com/本店主营嵌入式开发板,包括单片机开发板,ARM开发板、DSP开发板等,兼营电子元器件及部分接插件。本店承诺,所有开发板均自主研发,如果有质...
用户1399169 2008-06-11 13:48
STC_ISP使用图解
当我们初次使用STC_ISP下载程序时是不是时常出现各种各样的问题呢?这里本人专门写了一个STC_ISP的使用图解,希望能够让初次使用STC_ISP的朋友快速学会STC_ISP的使用,同时也对其他使用...
用户1399169 2008-06-11 13:39
KEIL使用图解-提供给初学者的好东西!
初学者的KEIL快速入门教材!建议:下载时从作到右三个文件分别取名为1、2,之后对1解压缩可以一次性完成!...
用户1399169 2008-05-28 12:26
模拟I2C驱动程序,如果觉得好请支持一下!
//=====================================================================================//  Module Na...
我要评论
4
11
关闭 站长推荐上一条 /3 下一条