51单片机串口接收的函数模块.doc_第1页
51单片机串口接收的函数模块.doc_第2页
51单片机串口接收的函数模块.doc_第3页
51单片机串口接收的函数模块.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

51单片机串口接收的函数模块.txt机会就像秃子头上一根毛,你抓住就抓住了,抓不住就没了。我和你说了10分钟的话,但却没有和你产生任何争论。那么,我们之间一定有个人变得虚伪无比!过错是短暂的遗憾,错过是永远的遗憾。相遇是缘,相知是份,相爱是约定,相守才是真爱。标 题: 51单片机串口接收的函数模块 Zz发信站: 郁金香BBS站 (2006年07月05日13:06:32 星期三), 站内信件/*/本函数模块来自51单片机世界,作者版主丁丁(聂小猛)。/主页地址/本程序为本站推出的MCU51-63K仿真器及DX-51多功能试验板而设计的,详情请到本站查看./51单片机世界版权所有,未经允许,不得抄袭作为商业用途/*/串口中断服务程序,仅需做简单调用即可完成串口输入输出的处理/串口输入设有缓冲区,大小可任意设置。/可供使用的函数名:/*extern char getbyte(void);/从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。extern putbyte(char c);/放入一个字节到发送缓冲区extern putstring(uchar *puts);/发送一个字符串到串口extern puthex(uchar c);/发送一个字节的hex码,分成两个字节发。extern bit inbufsign;#define CR putstring(rn)/发送一个回车换行extern void serial_init (void);extern putint(uint n);*/*#include #define uchar unsigned char#define uint unsigned int#define ILEN 16 /32 /设置串口中断接收缓冲区大小idata uchar inbufILEN;data uchar idata *inlast=inbuf; /最后由中断进入接收缓冲区的字节位置data uchar idata *getlast=inbuf; /最后取走的字节位置bit inbufsign; /接收缓冲区非空标志 有=1bit inbufful; /输入缓冲区满标志 满=1#define CR putstring(rn) /CR=回车换行/*/放入一个字节到发送缓冲区putbyte(unsigned char c)SBUF=c;while(!TI);TI=0;/*/发送一个定义在程序存储区的字符串到串口putstring(uchar *puts)for(;*puts!=0;puts+) /遇到停止符0结束putbyte(*puts);/*/发送一个字节的hex码,分成两个字节发。uchar code hex_=0123456789ABCDEF;puthex(unsigned char c)int ch;ch=(c4)&0x0f;putbyte(hex_ch);ch=c&0x0f;putbyte(hex_ch);/*/从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。uchar getbyte (void)char idata c ;while (!inbufsign); /缓冲区空等待ES=0;c= *getlast; /取数据getlast+; /最后取走的数据位置加一inbufful=0; /输入缓冲区的满标志清零if (getlast=inbuf+ILEN) getlast=inbuf; /地址到顶部回到底部if (getlast=inlast) inbufsign=0; /地址相等置接收缓冲区空空标志,再取数前要检该标志ES=1;return (c); /取回数据/*/*/以十进制的形式输出一个整型数到串口putint(uint n)uchar i6;i0=0x30+n/10000;i1=0x30+(n%10000)/1000;i2=0x30+(n%1000)/100;i3=0x30+(n%100)/10;i4=0x30+n%10;i5=0;putstring(i);/*/模拟接收到一个字符,putinbuf(uchar c)ES=0; if(!inbufful) *inlast= c; inlast+; if (inlast=inbuf+ILEN) inlast=inbuf; if (inlast=getlast) inbufful=1; inbufsign=1;ES=1;*/*/串口中断处理serial () interrupt 4if (RI)RI = 0;if(!inbufful)*inlast= SBUF; /放入数据inlast+; /最后放入的位置加一inbufsign=1;if (inlast=inbuf+ILEN) inlast=inbuf;/地址到顶部回到底部if (inlast=getlast) inbufful=1; /接收缓冲区满置满标志/*/串口初始化 0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200 110592void serial_init (void)/用t1作波特率SCON = 0x50; / mode 1: 8-bit UART, enable receiverTMOD |= 0x21; / timer 1 mode 2: 8-Bit reload th0 1X16PCON |= 0x00; /SMOD =0TH1 = 0xfd; /baud*1 /* reload value 9600 baudTL1 = 0xfd; TR1 = 1; / timer 1 run/用t2作波特率/*T2CON=0x30;RCAP2H=0xFF;RCAP2L=0xb8;/70=4800,b8=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论