使用C语言编程实现单片机与上位机串行通信,其上位机发送数据给单片机,
使用C语言编程实现单片机与上位机串行通信,其上位机发送数据给单片机,单片机接收到后发回给上位机。单片机fosc为11.0592MHz,波特率使用9600,串口工作在方式1...
使用C语言编程实现单片机与上位机串行通信,其上位机发送数据给单片机,单片机接收到后发回给上位机。单片机fosc为11.0592MHz,波特率使用9600,串口工作在方式1。要中断法接收,查询法发送。
展开
3个回答
展开全部
#include "reg52.h"
#define uchar unsigned char
#define LLONG 30
//char code table[]="Hello!";
uchar code table[]={'F','i','r','s','t','C','h','a','r',':',0x0d,0x0a,'W','W','W','.','H','E','B','T','U','.','E','D','U','.','C','N',0x0d,0x0a};
uchar Flag,FirstChar=0,UARTChar[10]={0};
void uart() interrupt 4
{
ES=0; //---- 中断暂停 ----
RI=0; //---- 清标志位 ----
FirstChar=SBUF;
Flag=1;
ES=1; //---- 中断开启 ----
}
void main()
{
char i=0;
TH1=0xFD;
TL1=0xFD;
TMOD=0x20;//T1在定时器方式
TCON=0x40;//TR1=1
PCON=0x00;//SMOD为0
SCON=0x50;//串行方式1 REN=1
IP=0x00;
IE=0x90;
while(1)
{
if(Flag==1)
{
ES=0; //---- 中断暂停 ----
Flag=0; //---- 清标志位 ----
for(i=0;i<10;i++)
{
SBUF=table[i];
while(!TI);
TI=0;
}
SBUF=FirstChar;
while(!TI); //---- 通讯等待 ----
TI=0; //---- 清标志位 ----
for(i=10;i<LLONG;i++)
{
SBUF=table[i];
while(!TI);
TI=0;
}
ES=1; //---- 中断开启 ----
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是哪款的单片机51,ATMEL,ST,还是TI的,需要程序就出单片机相应官网里去找,会有很多例程的,51的话很多论坛里都有资源,找找就有了
追问
是51单片机,老师留的题目,我不会做,纠结了好久,
追答
这比较麻烦,我手上也没51板子,一般写程序如果比较急都是在别人的程序上自己修改成自己需要的功能,因为很难找到完全符合自己要求得程序,你要不就找一个串口程序让你同学给你改改,或者就看有没有其他网友能给你写个程序,你到一些单片机论坛里去找找看有没有,51玩的人比较多,说不定可以找到。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
51的是最基础的了,有什么不明白的?可以问我。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询