51
单片机与串口通信代码
作者
:
佚名
来源
:
本站原创
点击数
:
9407
更新时间:
2007
年
06
月
17
日
【字体:
大
中
小
】
1.
发送:向总线上发命令
2.
接收:从总线接收命令,并分析是地址还是数据。
3.
定时发送:从内存中取数并向主机发送
.
经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。
程序如下:
//
这是一个单片机
C51
串口接收(中断)和发送例程,可以用来测试
51
单片机的中断接收
//
和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的
#
i nclude
#
i nclude
#
i nclude
#define INBUF_LEN 4
//
数据长度
unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3 , flag,temp,ch;
bit
read_flag=0;
sbit
cp=P1^1;
sbit
DIR=P1^2;
int i;
unsigned int xdata *RAMDATA;
/*
定义
RAM
地址指针
*/
unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ;
void init_serialcomm(void)
{
SCON=0x50;
//
在
11.0592MHz
下,设置串行口波特率为
9600
,方式
1,
并允许接收
PCON=0x00;
ES=1;
TMOD=0x21;
//
定时器工作于方式
2
,自动装载方式
TH0=(65536-1000)%256;
TL0=(65536-1000)/256;
TL1=0xfd;
TH1=0xfd;
ET0=1;
TR0=1;
TR1=1;
//
TI=0;
EA=1;
//
TI=1;
RAMDATA=0x1F45;