历史上的今天
返回首页

历史上的今天

今天是:2025年01月09日(星期四)

正在发生

2018年01月09日 | 单片机与PC机串口通讯程序

2018-01-09 来源:eefocus

单片机与PC机串口通讯程序

#include 
#define uchar unsigned char 
#define SLAVE 0xF1                    // 单片机 地址

#define BN 10                        //传送一次的字节数 

uchar idata rdata[10]; 
uchar idata tdata[10]={"abcdefghij"}; 
uchar receive(uchar addrs); 
char send(); 

void main(void) 

  uchar i; 
  for(i=0;i<10;i++) 
  TMOD=0x20;                    //定时器T1定义为模式2 
  TL1=0xE6;TH1=0xE6;            //置初值 
  PCON=0x00; 
TR1=1; 
SCON=0xE0;                    //设置串行口控制字,方式3,允许接收 
receive(SLAVE);                    //接收数据函数 
send();                            //发送数据函数 


void error(void) 

  SBUF=0xFF;                    //发给PC机数据出错标志 
  while(TI!=1);                        //等待发送完 
  TI=0; 


uchar receive(uchar addrs) 
{ uchar i,p; 
while(1) 

while(RI!=1);                    //等待PC机的联络信号 
RI=0; 
if(SBUF!=addrs) 
error();                        //若地址出错,发出错标志 
else 

TB8=0;                        //清地址标志位,准备接收数据 
SBUF=0x00;                    //发约定代码00H,说明地址正确 
while(TI!=1);TI=0; 
while(RI!=1);RI=0; 

while(1) 
{p=0; 
for(i=0;i
while(RI!=1);RI=0; 
rdata[i]=SBUF;            // 单片机 接收数据 
p=p+rdata[i]; 

while(RI==0);RI=0; 
if(SBUF==p) 
{SBUF=0x00;                //校验和相同,发0x00给PC机 
 while(TI!=1);TI=0; 

else 
{SBUF=0xFF;                //校验和不同,发0xFF给PC机 
 while(TI!=1);TI=0; 


TB8=1;                    //重置地址标志位 
return(0); 




char send()                    // 单片机 发送数据函数 

uchar i,p; 
do{ 
p=0;                        //清校验和 
for(i=0;i{SBUF=tdata[i];                //发送数据 
 p=p+tdata;                    //计算校验和 
 while(TI!=1);TI=0; 

SBUF=p;                    //发送校验和给PC机 
while(TI!=1);TI=0; 
while(RI!=1);RI=0; 
}while(SBUF!=0);                //PC机接收不正确, 单片机 重新发送 
TB8=1;                    //重置地址标志位 
return(0); 


推荐阅读

史海拾趣

Atlanta Micro公司的发展小趣事

随着技术的不断进步,Atlanta Micro不断推出创新产品,其中最为引人注目的是其开发的一款高性能RF模块。这款产品采用了先进的材料和技术,具有更高的频率稳定性、更低的噪声和更长的使用寿命。这一创新不仅提升了产品的性能,也满足了客户对更高品质产品的需求,进一步巩固了Atlanta Micro在市场上的地位。

Dielectric Laboratories公司的发展小趣事

随着电子行业的不断发展,市场对电子元件的需求也在不断变化。为了适应这一变化,DLI不断调整产品战略,推出了更多符合市场需求的新产品。例如,针对商业和工业领域的需求,DLI研发了具有高性能、高可靠性特点的MLCC产品,并成功打开了市场。此外,公司还不断加大研发投入,探索新的技术领域,以保持其在行业中的领先地位。

Crameda Intersys公司的发展小趣事

Crameda Intersys公司非常重视人才的培养和引进。公司建立了完善的人才培养机制,通过内部培训和外部引进相结合的方式,不断提升员工的专业技能和创新能力。同时,公司还积极营造创新氛围,鼓励员工提出新的想法和解决方案。这些措施有效地激发了员工的创新热情,为公司的发展提供了源源不断的人才支持。

Data Device Corporation公司的发展小趣事

DDC始终坚持以客户为中心的经营理念,不断倾听客户需求,为客户提供优质的产品和服务。为了保持技术领先地位,DDC不断投入研发,推动产品创新。同时,DDC还建立了完善的客户服务体系,确保客户在使用过程中能够得到及时、有效的支持。这些举措使得DDC在客户中赢得了良好的口碑,为公司的发展奠定了坚实的基础。

General Magnetics Inc公司的发展小趣事
绝缘损坏或元件故障可能导致漏电,影响电路的安全性和稳定性。
Defender Security公司的发展小趣事

随着勒索软件的日益猖獗,Defender Security公司迅速调整战略,成立了专门的研究小组来对抗这种威胁。他们深入分析了勒索软件的传播方式和攻击手段,开发出了高效的检测和防御系统。通过不断的技术创新和优化,Defender Security成功帮助多家企业抵御了勒索软件的攻击,赢得了市场的广泛认可。

问答坊 | AI 解惑

开发板申请

LPC1100系列开发板申请…

查看全部问答>

管理新招---员工备份

我们老大出新招---重要的岗位都备份一个员工。防止人走,公司跨!…

查看全部问答>

几款在线输入法评测

流在线输入法评测 在线输入法,是一种以网络为基础的基于WEB浏览器运行的输入法。它无需下载安装,仅需要通过浏览器运行即可输入。它的最大优点是其能够跨平台、跨浏览器,无论是没有汉字输入的操作系统还是不方便安装中文输入的工作环境,都可以通 ...…

查看全部问答>

mega128串口问题求教

请大家帮忙看下这段mega128串口程序有什么问题,ICCAVR下的,没法接收数据啊 [code]#include #include //================================== void port_init(void) { PORTA = 0xFF; DDRA  = 0x00; PORTB = 0xFF; DDRB ...…

查看全部问答>

关于跳槽的一点看法

       昨天发了一个帖子,讲述了下第一份工作的事情,呵呵,看到了朋友们的留言,三年的时间换了三个公司是不是太频繁了呢?是不是对以后的求职造成影响,在面对HR的咄咄逼人的问题时候,会不会不知所措呢?那这里我就谈谈自 ...…

查看全部问答>

mega128 HC595 驱动四位一体数码管

这是我的程序#include #define SS                                0 #define SCK                    &n ...…

查看全部问答>

Hercules 之 GIO的 学习

GIO 模块提供数字输入捕捉和数字输入/输出。 在这个块中没有处理功能。GIO 通常用于静态的或 者很少发生改变的输出,诸如收发器使能信号、报 警光等。GIO 也可被用于提供外部中断输入功能。 GIO 的大体框图如下:(以TMS570系列为例) GIO 主 ...…

查看全部问答>

stc12c5a60s2可以驱动多大的液晶、

stc12c5a60s2可以驱动多大的液晶、…

查看全部问答>

飞思卡尔 MC9S08DZ60 如何写CAN 和 SCI?

飞思卡尔 MC9S08DZ60 如何写CAN 和 SCI? …

查看全部问答>