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

📄 gm8123.c

📁 这七个程序都是本人为51系列单片机开发的应用程序
💻 C
字号:

/********************************************************************
	created:	2005/11/02
	created:	2:11:2005   20:47
	filename: 	D:\astario\workspace\MCUcode\src\gm8123.c
	file path:	D:\astario\workspace\MCUcode\src
	file base:	gm8123
	file ext:	c
	author:		Astario
	
	purpose:	串口通信以及gm8123的多通道收发模式
	  
	最后修改:		2005/11/23  18:45:49 
*********************************************************************/


#include "userdef.h"
#include "device.h"
#include "generalfunc.h"
#include "gm8123.h"
#include "clock.h"
				   
//#define BAUDCLCKTR1	//仿真器支持的模式
//GM8123命令字: 9600
#define GM8123_CMDBYTE 0x0F3//0xF8//0xF8//0x0F3		//bit3:FL=0,标准的10 位一帧,低3位011:子9600; 100:子19200
//波特率:7200对应(256-8),7200*8=57600
//#define GM8123_DEFTR1 	(256-72)//开机写命令字时,母串口波特率1200*4=4800, (256-12)
//#define GM8123_TR1PRESET (256-6)	//(256-24)	// (256-3)	//57600/38400=1.5=3/2

#ifdef BAUDCLCKTR1
//设置波特率:baud100:波特率/100
void SetBaudRate(WORD baud100)
{
	BYTE baudRateKey;
	baudRateKey=256-(1152/baud100);
	EA=0;
	SCON = 0x50;  /* uart in mode 1 (8 bit), REN=1 */
	TMOD = TMOD | 0x20 ;         /* Timer 1 in mode 2 */
	PCON |=0x80;
	TH1  = baudRateKey;//0xFD;(256-3)                 /* 4*9600 Bds at 22.1184MHz */
	TL1  = baudRateKey;     /* 9600 Bds at 11.059MHz */
	ES = 1;          /* Enable serial interrupt*/
	EA = 1;          /* Enable global interrupt */
	TR1 = 1;      /* Timer 1 run */

}
#else
//设置波特率:baud100:波特率/100
// BRL=256-(2^SMOD1 * Fper) / ( 6^(1-SPD)*32*Baudrate)
void SetBaudRate(WORD baud100)
{
	BYTE baudRateKey;
	//BRL=256-(2 * Fper)/(32*Baudrate)=256-1382400/Baudrate
	if(baud100>=96)
	baudRateKey=256-(13824/baud100);
	else
	baudRateKey=256-(13824/2/baud100);
	EA=0;
	CKCON0 = 0x7F;
	SCON = 0x50;  /* uart in mode 1 (8 bit), REN=1 */
	BDRCON &=0xEE;               /* BRR=0; SRC=0; */
	BDRCON |=0x0E;               /* TBCK=1;RBCK=1; SPD=1 */
	if(baud100>=96)
		PCON |=0x80;		//double rate,  SMOD1=1
	else
		PCON &=0x7F;		//SMOD1=0
	
	BRL=baudRateKey;//0xFD;(256-3)                    /* 4*9600 Bds at 22.1184MHz */
	ES = 1;         /* Enable serial interrupt*/
	EA = 1;         /* Enable global interrupt */
	BDRCON |=0x10;               /* Baud rate generator run*/

}

#endif
//子串口波特率为9600,则母串口波特率为9600*4=38400,

#ifdef INCLUDE_gm8123
BYTE xdata recvCnt[3]={0,0,0};			//各通道收到的字节数
BYTE xdata recvRingHead[3]={0,0,0};		//各通道的队列头
BYTE xdata recvRing[3][COMMRingSIZE];//串口缓存	16*3=48
BYTE xdata g_bufserch0=0;	//母口串口缓存
bit berrflu=0;//溢出标志
void SendByte0(BYTE OneByte)
{
	TB8=P;
	SBUF=OneByte;
	while(TI==0);
		TI=0;
}

void GM8123_SetSingleCh()
{
	GM8123_RST=0;
	delay_Nms(100);
    GM8123_RST=1;
	GM8123_MS=1;
	GM8123_ST0=1;
	GM8123_ST1=1;
	GM8123_SR0=!GM8123_SR0;
	GM8123_SR1=!GM8123_SR1;
	GM8123_SR0=	GM8123_SR1=1;
}
//Initiate GM8123
bit GM8123_Initiate()
{
	BYTE i=0,Contr_data;
	SetBaudRate(48);//与GM8123

⌨️ 快捷键说明

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