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

发布者:码字先生最新更新时间:2018-01-09 来源: 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; 


关键字:单片机  串口通讯 引用地址:单片机与单片机串口通讯程序

上一篇:AD转换器ADS11XX驱动程序
下一篇:单片机与PC机串口通讯程序

推荐阅读最新更新时间:2024-03-16 15:52

关于单片机外部中断的扩展
单片机外部中断有限,仅有两个,在某些系统设计中可能会不够用。这里给大家推荐一个比较简单的扩展外部中断的方法。灵感来至于单片机键盘设计! 在有些键盘设计中,如果在程序中采用轮询的方法在检测按键,会花费大量的cpu资源,特别是还要进行大量的数据处理的情况下。所以很多按键设计都加入了中断,上一篇博文里的按键设计其实都可以加入中断,这样可以更好的利用cpu资源。 一般在按键设计中只会用一个中断,但是却可以控制n多的按键。每一个按键的按下都相当于产生了一个中断,所以利用这个原理,我们也可以 无限 的扩展外部中断。一个简单的电路图如下: 这样当外部送来一个低电平的信号时,通过与非门后将产生一个中断信号,这个信号可以送到单片机的外部中断
[单片机]
基于单片机控制的数显质量测量仪设计
在现代商业贸易和日常生活中,数显质量测量仪即智能电子称是常用的电子衡器,但目前市场上使用的称量工具结构复杂、运行不可靠成本高、精度稳定性不好、易损件多、维修困难等。本文基于STC89C52单片机,研发了一种使用键盘输入数据,操作简单方便;液晶显示所称量的物品质量、单价和物品总价;具有去皮功能;当物品重量超过电子秤量程,即过载情况下具有超重报警的功能,是一款小型化、重量轻、携带方便、计量准确、工作可靠、读数直观的智能电子称。 1 系统总体方案设计 本设计基于52系列单片机STC89C52,利用了模块化设计的思想,将系统的硬件分成质量数据采集模块、单片机控制数据处理模块和人机交互界面模块等三大部分。 质量数据采集模块主要由压
[单片机]
基于<font color='red'>单片机</font>控制的数显质量测量仪设计
解析80C51单片机中的cpu、存储器配置以及并行输入/输出口
单片机按存储结构可分为二类:一类是哈佛结构,另一类是普林斯顿结构。 ①哈佛结构所谓哈佛结构是指程序存储器地址空间与数据存储器地址空间分开的单片机结构,如80C51单片机采用哈佛结构,所以80C51单片机的程序存储器地址空间与数据存储器地址空间是分开的,各有64K存储空间。 ②普林斯顿结构所谓普林斯顿结构是指程序存储器地址空间与数据存储器地址空间合并的单片机结构,如MCS-96单片机采用普林斯顿结构,所以MCS-96单片机的程序存储器地址空间与数据存储器地址空间是合并的,共有64K存储空间。 1.单片机的CPU 图1是80C51单片机的内部结构框图。若除去图中的存储器电路和I/O部件,剩下的便是CPU。它可以分为运算器和控制
[单片机]
解析80C51<font color='red'>单片机</font>中的cpu、存储器配置以及并行输入/输出口
意法半导体的PC版MCU Finder选型工具能在电脑上使用STM32/STM8
横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)发布了其PC版MCU Finder选型工具,方便嵌入式开发人员在ST MCU应用开发所用桌面环境中直接查看STM32和STM8微控制器的关键信息。   沿袭深受欢迎的基于手机端的意法半导体MCU Finder选型工具ST-MCU-FINDER的功能,PC版ST-MCU-FINDER-PC为用户提供便捷的选型工具、自维护文档和ST MCU开发者社区链接通道。新的PC版ST MCU Finder选型工具支持Windows® 、macOS™和Linux® 三大操作系统,让嵌入式开发人员能够在电脑上整合所有的
[半导体设计/制造]
基于51单片机自行车码表设计
由于仿真中没有霍尔传感器,实际呢霍尔就是感应磁信号,输出高低电平的脉冲信号,这样用脉冲就可以了,不同的频率代表电机转速的快慢 制作出来的实物图如下: 自行车码表元件清单 1) 9*15万用板 2) AT89C51单片机 3) 40脚IC座 4) 1602液晶 5) 16p母座 6) 16p排针 7) 10k电阻 8) 1K电阻 9) 轻触按键 10) 5MM LED灯(红色) 11) 103电位器 12) 3v直流电机 13) 直流电机底座 14) 磁铁*2 15) 501电位器 16) 3144霍尔传感器 17) 10uf电解电容 18) 30pf瓷片电容*2 19) 12M晶
[单片机]
基于51<font color='red'>单片机</font>自行车码表设计
四维图新MCU芯片正在全力做市场推广
四维图新日前接受机构调研时表示,公司AMP芯片已经在2017年底量产出货,2018年是上量阶段;MCU芯片正在全力做市场推广,力争尽快实现量产。
[半导体设计/制造]
基于STC12C5624AD单片机的液晶屏背光模块驱动和调节电路设计
为使座舱内的用户随时得到准确、可靠的信息,座舱内使用的显示器必须具有高可靠性,同时,因为飞机驾驶员左右手都要操作仪器,且为提高座舱显示器的易读性和缓解视觉疲劳,显示器的光强还应能根据周围环境和用户需求进行自动和手动调整,避免用户在环境光很强时看不清显示内容,或在环境光很暗时感到刺眼。液晶显示器的背光亮度直接决定显示器的平均亮度,通过调节液晶显示器的背光亮度来调节显示器的亮度。 笔者采用国产的STC12C5624AD单片机设计一个液晶屏背光模块驱动和调节电路,能够准确测量环境光的照度,根据环境光实现自动和手动调节背光亮度。 1 显示器背光调节的原理 因为飞机座舱的特殊性,对座舱显示的可靠性、准确性和智能性有更高的
[单片机]
基于STC12C5624AD<font color='red'>单片机</font>的液晶屏背光模块驱动和调节电路设计
布局高端 瞄准16/32位市场
2008 年前,瑞萨在中国 MCU 市场的产品一直以 4 位和 8 位为主,而瑞萨 RX 系列诞生,正式吹响了进军 16 位和 32 位产品生产及销售的“集结号”。 MCU :持续拓展 16/32 位市场 针对中国 MCU 市场,瑞萨制定了新的策略:通过四大战略保持并扩大在 MCU 领域的优势。首先,进一步拓展高、中、低端产品阵容;其次,凭借 Super H 实现在中国高端领域市场的飞跃;第三,面向中端领域投入 RX 系列产品;第四,在低端领域通过 Tiny 继续维持良好的发展势头。 瑞萨的 MCU 产品大量应用
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved