- 14
- 0
- 约2.8千字
- 约 10页
- 2021-10-22 发布于天津
- 举报
51单片机与串口通信代码
作者:佚名 来源:本站原创 点击数:9407 更新时间:2007年06月17日 【字体:大 中 小]
1. 发送:向总线上发命令
2. 接收:从总线接收命令,并分析是地址还是数据。
3. 定时发送:从内存中取数并向主机发送 .
经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。
程序如下:
//这是一个单片机C51串口接收(中断)和发送例程,可以用来测试 51单片机的中断接收
//和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的
# i nclude reg51.h
# i ncludestdio.h
# i nclude string.h
#define INBUF_LEN 4 // 数据长度
unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3 , flag,temp,ch;
bit read_flag=0;
sbit cp=P1A1;
sbit DIR=P1A2;
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=OxOO;
ES=1;
TMOD=0x21; //定时器工作于方式2,自动装载方式
TH0=(65536-1000)%256;
TL0=(65536-1000)/256;
TL1=0xfd;
TH1=0xfd;
ET0=1;
TR0=1;
TR 1 = 1;
// TI=0;
EA=1;
// TI=1;
RAMDATA=0x1F45;
}
void serial () interrupt 4 using 3
{
}
//向串口发送一个字符
void timer0() interrupt 1 using 3{
// char i;
flag++;
TH0=0x00;
TL0=0x00;
if(flag==10)
{// cp=!cp;
// for(i=0;i6;i++)
P2=0x25;
TI=1;
temp=*RAMDATA;
printf(%c,temp);
TI=0;
// RAMDATA--;
flag=0;
}
}
//主程序
main()
{
init_serialcomm();
//向6264中送数据
RAMDATA=0x33;
while(1)
{
*RAMDATA=0x33;;
}
}
调试过程中遇到的问题:
1. 发送过程:在发送时必须保证 TI=1:即发送缓冲器为空,否则将导致数据发不出去,如果想强制发送可以用:
1=1.具体发送数据:利用printf( “akjdfaklfj ”);函数直接发送即可。
2. 接收过程:在接收时多选用中断方式,这样可以节约 CPU勺时间,提高效率,
1 Windows API通信函数方法
与通信有关的 Windows API函数共有26个,但主要有关的有:
CreateFile() 用“comn ( n为串口号)作为文件名就可以打开串口。
ReadFile() 读串口。
WriteFile() 写串口。
CloseHa ndle() 关闭串口句柄。
初始化时应注意CreateFile()函数中串口共享方式应设为 0,串口为不可共享设备,其它与一般文件读写类似。以下给出
实
现的源代码。
1.1发送的例程
//声明全局变量
HANDLE m_hlDComD;v
OVERLAPPED m_OverlappedRead, m_Over lappedWrite;
//初始化串口
void CSerialAPIView::O nlni tialUpdate()
{
CView::O nlni tialUpdate();
Char szComParams[50];
DCB dcb;
Memset(m_OverlappedRead, 0, sizeof (OVERLAPPED));
Memset(m_OverlappedWrite, 0, sizeof (OVERLAPPED));
m_hlDComDev = NULL;
m_hlDComDev = CreateFile( “COM2 , GENERIC_READ GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMALLE_FLAG_OVERLAPPED, NULL);
if (m_hID
原创力文档

文档评论(0)