`

单片机之串口通信

 
阅读更多
#include "reg52.h"
#include <string.h>

unsigned char idata RevBuffer[30];
bit CmdValid;	   

void iccardcode()
{	     
  	unsigned char cmd;			 	
	cmd = RevBuffer[0];//获取命令
	switch(cmd)
 	{
		case 1:        //判断命令
			P1=0XFB;
			break;			
		case 2:        //判断命令			        
			 P1=0XF7;
			 break;			
		case 3:        //判断命令
			P1=0XF0;			
			break;	
	}
}
/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem()
{
    P0 = 0xFF; 
	P1 = 0x7F; 
	P3 = 0xFF;
		
    PCON = 0x80;       //设置波特率加倍    此时波特率为19200bps          
    SCON = 0x70;                 
    TMOD = 0x20;       //定时器1作为波特率发生器;

	TH1   = 0xfd;	  // 11.0592M晶振 在波特率不加倍情况:9600pbs
			//	            波特率 加 倍情况:19200bps
	TL1   = TH1;
	TR1   = 1;        // 启动定时器T1   即波特率发生器

					  
	EA=1;			  //开总中断
 	ES = 1;    		  //开串口中断
	CmdValid=0; 	  //设置接收消息标记

}

/////////////////////////////////////////////////////////////////////
//用T2做延时子程序
/////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////
// 接收和发送中断
///////////////////////////////////////////////////////////////////////
void isr_UART(void) interrupt 4 using 1
{
    unsigned char len, i;
  	unsigned int j=0;
  	
  	/*********************************************
	 //把接收到的第一个字符作为数 据 的 长度len, //
	 //在短时间内再连续发送len个字节赋给RevBuffer //
	 //加入最后i的值等于len的值,说明接收数据正确 //
	 **********************************************/
	
	if(RI)
	{		
		len=SBUF;                
		RI=0;	
		for(i=0;i<len;i++)
		{
			while(!RI)
			{
				j++;
				if(j>1000)
				{
				    break;
				}
			}
			if(j<1000)
			{
				RevBuffer[i]=SBUF;
				RI=0;
				j=0;
			}
			else
			{
			    break;
			}
		}
		if(i==len)
		{
			CmdValid=1;
			P1=0X00;
		}
	}

}



  void main( )
{    

     InitializeSystem( );
    while (1)
    {	
 	    if (CmdValid)
	    {
		    CmdValid = 0;
		    if(RevBuffer[0]==0x11)	    //判断命令
		    {
		      P1=0XFE;
		    }
	    	else if(RevBuffer[0]==0x13) //判断命令
	    	{
    			
	    	  P1=0XFD;
	    	}
       		else
    		{
	            iccardcode();
  
    		}
	     }
	 }
}

 

分享到:
评论

相关推荐

    单片机 单片机串行通信发射机

    单片机 单片机串行通信发射机单片机 单片机串行通信发射机单片机 单片机串行通信发射机单片机 单片机串行通信发射机单片机 单片机串行通信发射机单片机 单片机串行通信发射机单片机 单片机串行通信发射机单片机 ...

    基于51单片机的串口通信(12864,汉字)proteus、原理图、流程图、物料清单、仿真图、源代码

    基于51单片机的串口通信...1、甲乙单片机采用奇偶校验,进行方式3串行通信; 2、甲机将“电子科学”显示码依次发送给PC机,乙机将接收的数据用LCD显示出来; 3、甲乙机采用RS232串口通讯协议,利用MAX232芯片实现通信。

    两个单片机之间实现串口通信c语言开发

    串口通信,也称为串行通信,是一种数据传输方式,它将数据一位一位地顺序传输,通常包括发送和接收两部分。相比于并行通信,串口通信需要的硬件资源较少,但传输速度相对较慢。在单片机应用中,常见的串口标准有UART...

    Labview与单片机进行串口通信

    串口通信,或称串行通信,是设备之间通过串行数据传输方式进行通信的一种方法。它以一位一位的数据顺序发送和接收,通常涉及RS-232、RS-485或USB等接口标准。在Labview与单片机的串口通信中,数据传输的速度、停止位...

    单片机串行通信实验报告.doc

    单片机串行通信实验报告.doc

    单片机单片机课程设计-双机串行通信.doc

    在本文档中,我们讨论了基于51单片机的双机串行通信课程设计,主要涉及的关键技术包括51单片机、串行通信以及RS232接口。51单片机,尤其是89C51型号,是单片机领域的经典选择,其串行接口具有重要的应用价值。 串行...

    单片机串口通信程序

    单片机串口通信是单片机非常好用的一项功能,可以和电脑和其他的单片机进行通信和交换数据从而达到某种效果。近期我们做了个程序:利用单片机串口通信编译一个程序在打开时向电脑发送问候语“hello”,然后电脑输入...

    单片机Proteus实例 串口通信(电路图 仿真程序 电路)

    单片机Proteus实例 串口通信(电路图 仿真程序 电路)单片机Proteus实例 串口通信(电路图 仿真程序 电路)单片机Proteus实例 串口通信(电路图 仿真程序 电路)单片机Proteus实例 串口通信(电路图 仿真程序 电路)...

    单片机多机的串口通信教程

    单片机多机的串口通信是嵌入式系统中常用的一种通信方式,尤其在51系列单片机中,其串行通信接口扮演着重要角色。串口通信相较于并行通信具有诸多优势,比如抗干扰性强,适合长距离传输,仅需一根或两根数据线,降低...

    48 单片机与PC机串口通讯仿真_51单片机_sheeplmk_

    它拥有丰富的外设接口,包括串行通信接口(Serial Communication Interface, SCI),通常我们称之为UART(通用异步收发传输器)。UART允许51单片机与外部设备进行串行数据交换,包括PC机。 串口通讯的基本原理是...

    毕业设计《单片机串行通信在双机通信中的应用》开题报告

    《单片机串行通信在双机通信中的应用》这篇毕业设计主要探讨的是如何利用单片机的串行通信技术实现在两个设备间的有效通信。单片机是一种集成度高、体积小、功能强大的微处理器,它在现代社会的各个领域都有广泛的...

    基于单片机的串行通信.pdf

    【单片机串口】 单片机的串行口由发送和接收缓冲器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门构成。数据通过TXD和RXD引脚进行发送和接收。串口有多种工作模式,可以通过SCON和PCON寄存器设置。工作...

    C51单片机的串口异步通信和同步通信的区别

    在C51单片机中,串口通信是其重要的通信接口之一,它支持两种串行通信方式。C51单片机的串口(UART)硬件上实现串行数据的发送和接收功能,软件上需要根据通信协议编写相应的代码来设置通信参数(比如波特率、校验位...

    uart.rar_串行 通信 程序_单片机 PC 串口_单片机 串口通信_单片机 串行通信

    学习这个教程,你可以了解如何配置51单片机的UART,编写串行通信程序,以及如何在PC上设置串口通信软件进行配合测试。 总结来说,单片机与PC的串口通信涉及硬件接口、通信参数设置、单片机端的程序设计以及PC端的...

    单片机双机串行通信多数据传输汇编语言编程实现.pdf

    单片机双机串行通信多数据传输汇编语言编程实现.pdf

    51单片机 串口通信—数码管实验

    51单片机是微控制器领域中非常经典的一款芯片,主要应用于嵌入式...通过这个实验,我们可以学习如何利用51单片机进行串行通信,以及如何将接收到的信息在硬件层面进行处理和反馈,对嵌入式系统开发有着重要的实践意义。

    51单片机串行通信

    串行通信是51单片机中一个重要的功能模块,用于设备间的数据交换,尤其是在距离较远或者需要节省硬件资源的情况下。本文将深入探讨51单片机的串行通信,包括USART/UART接口的原理、配置方法以及如何实现双机通信。 ...

    单片机之间双向通信 串口

    总结来说,单片机之间的双向通信串口是一种常用的数据交换方法,涉及串行通信协议、串口参数配置、源代码编写和实际测试等多个环节。通过理解这些知识点,开发者能够构建可靠的通信系统,实现单片机间的高效数据交互...

    基于51单片机的串口通信

    51单片机支持串行通信,主要通过其内部的串行接口——UART(通用异步收发传输器)来实现。UART允许51单片机与其他设备进行串行数据交换,如显示器、键盘、其他单片机或计算机等。 首先,了解51单片机的串口结构。51...

Global site tag (gtag.js) - Google Analytics