⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.h

📁 C51模拟串口及C语言与汇编语言混合使用技术 有很高的参考价值
💻 H
字号:
	#include <Reg52.h>
	extern void   _nop_ (void);    //#include <intrins.h> 	
	#define uchar unsigned char
	#define uint unsigned int
	#define true  1
	#define false 0
	#define	ON	0
	#define	OFF	1
	#define	OverMs  20                          //Uart0 Uart1 通讯收发超时长度(单位:5ms)
	#define bRecieve 1
	#define bSend    0
	#define SETTIME1    TH1=0xe8; TL1=0xe8;                              //Uart0 22.1184   BAUD=2400
	#define SETTIME2 	RCAP2H=0xfd;RCAP2L=0x00;TH2=RCAP2H;TL2=RCAP2L;   //Uart1 22.1184   BAUD=2400
    #define SETTIME0    TH0=0xdc;TL0=0x00;	                             //T0定时器设置 每5ms中断一次

	sfr	 T2MOD         = 0xC9;
	sfr	 WDT_CONTR     = 0xE1;	    //看门狗地址
	sbit bUart0RecSnd  = P3^5;      //1为接数据 0为发送数据
    sbit UART_RXD      = P3^2;

//通讯指示灯
    sbit Uart0Rx	   = P3^6;
	sbit Uart0Tx	   = P3^7;
//地址修改控制
	sbit LAddrDec	   = P3^6;
	sbit LAddrInc      = P3^7;

	bit bdata rec_bHead0;	  //COM0 接收第一个字节
	bit	bdata byte_bFinish;	  //COM1 一个字节收完标志
	bit bdata reclen0_bFlg;   //COM0 接收数据长度标志
    bit bdata reccmd0_bFlg;	  //Uart0接收命令标志
	bit bdata isLAddr_bFlg;	  //是否本机地址
	bit bdata recaddr0_bFlg;  //Uart0 接收长度标志
	bit bdata reclen1_bFlg;   //COM1 接收数据长度标志
	bit bdata com0_bAck;	  //Uart0应答标志位 1要应答 2没有应答
	bit	bdata com1_bAck;	  //Uart1应答标志位 1要应答 2没有应答
	bit	bdata RI2;			  //COM1 收数据
	bit bdata SM;			  //COM1 第8八位bit
	bit bdata bTaskUart0;     //Uart0发送本身数据
	bit bdata bUart1ToUart0;  //Uart0发送Uart1请求数据
	bit bdata bTaskUart1;     //Uart1发送本身数据
	bit bdata bUart0ToUart1;  //Uart1发送Uart0请求数据
    bit bdata bUart0ReSnd;	  //Uart0是否重发
	bit bdata Uart0Nums;	  //重发次数
	bit bdata bUart1ReSnd;	  //Uart1是否重发
	bit bdata Uart1Nums;	  //重发资数

	uchar data  snd_len0       _at_ 0x09;       //UART0 发送数据包长度
	uchar data  snd_len1;				        //Uart1发送数据包长度
	uchar data  snd0_start     _at_ 0x08;       //UART0 发送数据包头字节
	uchar data  NoUseBank2[2]  _at_ 0x10;       //UART0 使用
	uchar data  snd1_start     _at_ 0x18;       //UART1 发送包头字节
	uchar data  Sdatabit       _at_ 0x19; 	    //Uart1  发送位记数器
    uchar data  NoUse          _at_ 0x1A;       //R2在汇编中已使用	
	uchar data  Rdatabit;                       //UART1 接收位记数器
	uchar data  SBUF1;          //UART1 SBUF
	uchar data  AckAddr;        //子门口机地址
	uchar data  uart0_status;	//Uart0当前状态 
	uchar data	uart1_status; 	//Uart1当前状态 
	uchar data	snd_chk0;		//Uart0 校验字
	uchar data	snd_chk1;		//Uart1 校验字
	uchar data	rec_cmd0;		//Uart0 收到的命令
	uchar data	rec_cmd1;		//Uart1 收到的命令
	uchar data	rec_len1;		//Uart1 接收到的长度
	uchar data  rec_chk1;		//Uart1 接收校验字
	uchar data  rec_chk0;		//Uart0 接收校验字
	uchar data  LAddr;   		//本机地址  地址范围为1到99
	uchar idata AddrBak;		//备份地址
	uchar idata prevAddr;       //前一个发送地址
    uchar idata delay2ms = 0;   //485延时
	uchar idata Uart1ToUart0Len;//室内机Uart1请求Uart0向上发送数据的长度


	uchar idata SndUart0[16]  	_at_	0x80;           //发送COM0 SBUF
	uchar idata RecUart0[16]   	_at_	0x90;			//接收Uart0 SBUF 
	uchar idata SndUart1[16]   	_at_	0xA0;			//发送COM1 SBUF
	uchar idata	RecUart1[16]   	_at_	0xB0;			//接收COM1 SBUF 
	uchar idata Uart0_Over;			//Com0 超时时间(单位毫秒)
	uchar idata Uart1_Over;			//Com1 超时时间(单位毫秒)
	uchar idata CallTallOver;		//呼叫或通话超时时间(单位时秒)
	uchar idata TmpMs;				//临时时间(单位毫秒)
	uchar idata MsCount;			//毫秒计数器
	uchar idata	tmpdata;            //临时数据
	uchar idata timebak = 0;		//时间点计时器
	uchar idata SendUserFail[8]={0,0,0,0,0,0,0,0};
	uchar idata Uart0Data[6];        //Uart0本身数据  len+cmd+addr2+addr1+data+other
	uchar idata Uart1ToUart0Data[6]; //Uart1请求数据  len+cmd+data+addr+data+ack
	uchar idata Uart1Data[4];        //Uart1本身数据  len+cmd+addr+ack
	uchar idata Uart0ToUart1Data[5]; //Uart1请求数据  len+cmd+addr+data+other

	bit  bdata bDelay =false;        //数码管打量后,延时1秒才能改变地址
	bit  bdata Bit_5ms = 0;  //5ms计时器
	bit  bdata Bit_20ms =0;  //20ms计时器
	bit  bdata tmpBit1;
	bit  bdata bUart0Ask = true;   //Uart0是否要应答 true 要应答 false 为要应答	
 
 	void CommUart0();   //Uart0  处理程序
	void CommUart1();	//Uart1  处理程序

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -