历史上的今天
返回首页

历史上的今天

今天是:2025年01月06日(星期一)

正在发生

2018年01月06日 | 单片机及单片机通讯程序

2018-01-06 来源:eefocus

单片机及单片机通讯程序

#include 
#define uchar unsigned char 
#define SLAVE 0x00 
#define BN 16 

uchar idata tdata[16]; 
uchar idata rdata[16];

bit trdy; 
bit rrdy; 
void main(void) 

  TMOD=0x20;                        //定时器T1为模式2 
  TL1=0xfd;                        //定时器初值 
  TH1=0xfd; 
  PCON=0x00; 
  TR1=1; 
  SCON=0xf0;                        //串行口方式3 
  ES=1;EA=1;                        //开串行口中断 
  while(1){trdy=1;rrdy=1;}                //准备好发送和接收 


void slave(void) interrupt 4 using 1 

  void str(void); 
  void sre(void); 
  uchar a; 
  RI=0;                            //关串行口中断 
  ES=0; 
  if(SBUF!=SLAVE){ES=1;goto reti;}        //非本机地址,继续监听 
  SM2=0;                            //取笑监听状态 
SBUF=SLAVE;                    //发回从机地址 
while(TI!=1);TI=0; 
while(RI!=1);RI=0; 
if(RB8==1){SM2=1;ES=1;goto reti;}        //确认地址不符,从机复位 
a=SBUF;                        //接收命令 
if(a==1){                        //从机接收主机的数据 
if(rrdy==1) SBUF=0x01;            //接收准备好,发回0x01 
else 
SBUF=0x00; 
while(TI!=1);TI=0; 
while(RI!=1);RI=0; 
if(RB8==1){SM2=1;ES=1;goto reti;} 
sre();                        //接收数据 

else 

if(a==0x02)                    //从机向主机发送数据 

if(trdy==1) SBUF=0x02;        //发送准备好 
else 
SBUF=0x00; 
while(TI!=1);TI=0; 
while(RI!=1);RI=0; 
if(RB8==1){SM2=1;ES=1;goto reti;} 
str( );                    //发送数据 

else 

SBUF=0x80;                //命令非法 
while(TI!=1);TI=0; 
SM2=1;ES=1;                //恢复监听 


reti:; 


void str(void)                        //发送数据函数 
{uchar p,i; 
 trdy=0; 
 do{p=0;                            //初始校验和为0 
    for(i=0;i     {SBUF=tdata[i];                    //发送数据 
      p+=tdata[i]; 
      while(TI!=1);TI=0; 
     } 
  SBUF=p;                        //发送校验和 
while(TI!=1);TI=0; 
while(RI!=1);RI=0; 
}while(SBUF!=0);                    //主机接收不正确,重新发送 
SM2=1;ES=1; 


void sre(void)                        //接收数据函数 
{uchar p,i; 
 rrdy=0; 
 while(1) 
{p=0;                                //初始化校验和为0 
   for(i=0;i{while(RI!=1);RI=0; 
   tdata[i]=SBUF;                    //接收数据 
   p+=rdata[i]; 
  } 
  while(RI!=1);RI=0; 
if(SBUF==p){SBUF=0x00;break;}        //校验和相同,发00H 
else{ 
SBUF=0xFF;while(TI!=1);TI=0;        //校验和不同,发FFH,重新接收 
 } 

SM2=1;ES=1; 


推荐阅读

史海拾趣

Frolyt Condensers & Elements GmbH公司的发展小趣事

面对电子行业的快速变化,Frolyt Condensers & Elements GmbH深知数字化转型的重要性。近年来,公司积极推进数字化转型,引入先进的ERP系统和智能制造技术,实现了生产过程的自动化、智能化和精细化管理。数字化转型不仅提高了公司的生产效率和产品质量,还降低了运营成本,为公司的持续发展奠定了坚实的基础。同时,Frolyt还利用大数据和人工智能技术优化供应链管理,提升了客户服务水平和市场响应速度。

ASSMANN WSW components公司的发展小趣事

ASSMANN WSW components公司深知品质是企业生存和发展的关键。因此,公司始终坚持品质至上的原则,从原材料采购到生产流程,再到产品出厂,每一个环节都严格把控。公司还建立了完善的质量检测体系,确保每一件产品都符合最高标准。这种对品质的执着追求使得ASSMANN WSW的产品在市场上赢得了良好的口碑。

E-CMOS(飞虹高科)公司的发展小趣事

在技术创新的同时,飞虹高科公司也积极拓展市场。然而,市场拓展的过程并非一帆风顺。公司面临着来自国内外众多竞争对手的激烈竞争,同时还要应对客户不断变化的需求。为了应对这些挑战,公司制定了一套完善的市场营销策略,积极参加国内外各类电子展会和技术交流活动,与客户建立了长期稳定的合作关系。同时,公司还不断优化产品性能和服务质量,提高客户满意度。通过这些努力,公司逐渐在市场上树立了良好的品牌形象。

Geo Semiconductor Inc公司的发展小趣事
通过提高控制精度和响应速度,使立式磨床能够更准确地完成加工任务,提高加工精度和产品质量。
Densei-Lambda (TDK)公司的发展小趣事
集成故障诊断功能,实时监测电路状态,一旦发现异常立即报警并采取相应的保护措施。
Honeywell公司的发展小趣事

背景:近年来,随着全球对可持续发展和数字化转型的重视,霍尼韦尔积极调整战略方向。

发展:公司加大了在可持续技术和数字化转型领域的投入,推出了一系列创新的产品和解决方案。例如,在能源转型领域,霍尼韦尔与多家中国合作伙伴共同推动可持续航空燃料生产基地的建设;在智慧建筑领域,与腾讯云合作打造联合解决方案等。

关键事件:这些举措不仅体现了霍尼韦尔对可持续发展的承诺和责任担当,也展示了公司在数字化转型方面的前瞻性和创新能力。同时,这些合作也进一步巩固了霍尼韦尔在全球电子行业的领先地位。

问答坊 | AI 解惑

Rfid标签生产的工艺流程及其相关设备简介

RFID标签的生产链虽然不长,但需要的设备却不少。从制造过程来看,分为芯片制造、天线制造、芯片倒贴或邦定、合成材料印刷、层压或覆膜合成几大工序。 1. 天线印刷天线可以采用传统的腐蚀天线或印刷天线。腐蚀天线可以是铝箔或铜箔。生产商需要 ...…

查看全部问答>

弱弱的问下!想知道wince的数据库怎么生成?

如题!想知道wince的数据库是用什么软件生成的…

查看全部问答>

ucfs文件系统上SD/mmc驱动移植

小弟现在正移植ucfs文件系统到nucleus上面,大概知道了一些切入点,可是发现对具体的设备移植的时候要明白具体的硬件操作,比如说sd卡的内部擦除、写啊等操作,还需要自己写相关的操作函数,有点困难。 能不能给介绍下sd驱动的编程,sd和mmc是不是 ...…

查看全部问答>

有人熟悉kernelderiver驱动编程吗?

有人熟悉kernelderiver驱动编程吗?有没有中文方面的资料?…

查看全部问答>

想去intel的可以找我

想去intel的可以找我,manjianmei@live.cn…

查看全部问答>

STM8触摸库程序跑飞

我按照汉之云的资料修改了stm8s_map.h,文件又重新配库的.h文件,因为我用STM8S103K,编译通过,我用STLINK调的时发现程序跑飞然后,请大家看看,STM8到底行不行啊,还有我共20键,我用STLINK关察那个初始化数组始终显示9个,闷 ...…

查看全部问答>

电子清纱器操作终端

与纺织企业合作,研制电子清纱器,正在设计电子清纱器操作终端方案。…

查看全部问答>

这样的人是大牛吗?

今天遇到一个学习上得问题,加了一个群去问了一下! 虽然问到了答案,却被群猪无情的T出了群! 主要是我先前问了一下管理,他说没有时间,我就发群里问了。不到5s 就又同学帮我解决了问题!可能是 群猪觉得我菜鸟吧!不配和他们说话!不知道这样的 ...…

查看全部问答>

LM3S811与ADXL345原理图

画了LM3S811的原理图与PCB,有ADXL345、IMU3000、ITG3200等的评估板。…

查看全部问答>