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

📄 ndsbscui.c

📁 LCD及键盘、RS232通信控制源代码、采用keil c51环境编译
💻 C
字号:
/*********************************************************************************
*                                                                                *
*	FileName:	NdsBscDis.c                                                      *
*	Function:	Main subroutine of the User Interface(UI) controller in BSC      *
*	CPU:		ATMEL AT89C52                                                    *
*	SystemName:	NDS18000                                                         *
*	SubSystem:	BSC-User Interface(UI)                                           *
*	System clock:	11.0592MHz                                                   *
*	Startup:	14/Oct/2002                                                      *
*	Author:		XuYiBo                                                           *
*                                                                                *
*********************************************************************************/
#include <AT89X52.H>
#include <intrins.h>

#include "NDSBSCUI.H"
#include "display.h"
#include "General.h"
#include "Keyboard.h"
#include "Serial.h"

UIMemory	xdata UIDataArea _at_ MEMORY_ADDRESS;
UISema		xdata UISemaphore _at_ SEMAPHORE_ADDRESS;

unsigned char code ucInitTitle[]	 ="SYSTEM INITIALIZING PLEASE WAIT         ";
unsigned char code ucRamErrorTitle1[]="System Error:MEMORY TEST FAILURE!(0x01) ";	//Can`t access physical paramenter eara
unsigned char code ucRamErrorTitle2[]="System Error:MEMORY TEST FAILURE!(0x02) ";	//Can`t access keyboard paramenter eara
unsigned char code ucRamErrorTitle3[]="System Error:MEMORY TEST FAILURE!(0x03) ";	//Can`t access display paramenter eara
unsigned char code ucRamErrorTitle4[]="System Error:MEMORY TEST FAILURE!(0x04) ";	//Can`t access system paramenter eara


///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void main(void)
{
unsigned char data ucTmp;

	P0 = 0xff;
	P1 = 0xff;
	P2 = 0xff;
	P3 = 0xff;
	AUXR	= 0x02;

	DelayTime(40);		//delay 40ms
//display Init title
	InitDisplay();		//Initialize the variables used by display functions
	DisplayRom(ucInitTitle);

//Release all semaphore
	UISemaphore.ucSysAreaSem = 0xff;
	UISemaphore.ucDisAreaSem = 0xff;
	UISemaphore.ucKeyAreaSem = 0xff;
	UISemaphore.ucExamAreaSem= 0xff;
	UISemaphore.ucReserved[0]= 0xff;
	UISemaphore.ucReserved[1]= 0xff;
	UISemaphore.ucReserved[2]= 0xff;
	UISemaphore.ucReserved[3]= 0xff;
//Initialize Dual Port Ram
	ucTmp=0;
	while(1)
	{
		UISemaphore.ucExamAreaSem = 0x00;				//request semaphore
		if( UISemaphore.ucExamAreaSem == 0x00)
		{
			UIDataArea.Exam_Buffer.ExamDirtyFlag	= 0;
			UIDataArea.Exam_Buffer.ConnectFlag		= 0;
			UIDataArea.Exam_Buffer.Current[0]		= 0;
			UIDataArea.Exam_Buffer.Current[1]		= 0;
			UIDataArea.Exam_Buffer.ExciterLevel[0]	= 0;
			UIDataArea.Exam_Buffer.ExciterLevel[1]	= 0;
			UIDataArea.Exam_Buffer.TravelPow		= 0;
			UIDataArea.Exam_Buffer.ReflectPow		= 0;
			UIDataArea.Exam_Buffer.AmpTemp			= 0;
			UIDataArea.Exam_Buffer.RxTemp			= 0;
			UIDataArea.Exam_Buffer.TxTemp			= 0;
			UIDataArea.Exam_Buffer.RXIF_LOCK		= 0;
			UIDataArea.Exam_Buffer.RXRF_LOCK		= 0;
			UIDataArea.Exam_Buffer.TXIF_LOCK		= 0;
			UIDataArea.Exam_Buffer.TXRF_LOCK		= 0;
			UISemaphore.ucExamAreaSem = 0xff;				//releast semaphore
			SetCursorPos(32);
			DisplayChar('.');
			break;
		}
		else
		{
			UISemaphore.ucExamAreaSem = 0xff;				//releast semaphore
			if( ++ucTmp == 0)
			{//MEMORY TEST FAILURE!
				DisplayRom(ucRamErrorTitle1);
			}
			else
			{
				DelayTime(20);		//delay 20ms
			}
		}
	}

	ucTmp=0;
	while(1)
	{
		UISemaphore.ucKeyAreaSem	= 0x00;					//request semaphore
		if(UISemaphore.ucKeyAreaSem == 0)
		{
			UIDataArea.KeyBuffer.KeyValue	= 0x00;
			UISemaphore.ucKeyAreaSem	= 0xff;				//release semaphore
			SetCursorPos(33);
			DisplayChar('.');
			break;
		}
		else
		{
			UISemaphore.ucKeyAreaSem	= 0xff;				//release semaphore
			if( ++ucTmp == 0)
			{//MEMORY TEST FAILURE!
				DisplayRom(ucRamErrorTitle2);
			}
			else
			{
				DelayTime(20);		//delay 20ms
			}
		}
	}

	ucTmp=0;
	while(1)
	{
		UISemaphore.ucDisAreaSem	= 0x00;					//request semaphore
		if(UISemaphore.ucDisAreaSem == 0)
		{
			UIDataArea.DisBuffer.DisParaDirtyFlag = 0x00;
			UISemaphore.ucDisAreaSem	= 0xff;				//release semaphore
			SetCursorPos(34);
			DisplayChar('.');
			break;
		}
		else
		{
			UISemaphore.ucDisAreaSem	= 0xff;				//release semaphore
			if( ++ucTmp == 0)
			{//MEMORY TEST FAILURE!
				DisplayRom(ucRamErrorTitle3);
			}
			else
			{
				DelayTime(20);		//delay 20ms
			}
		}
	}

	ucTmp=0;
	while(1)
	{
		UISemaphore.ucSysAreaSem	= 0x00;					//request semaphore
		if(UISemaphore.ucSysAreaSem == 0)
		{
			UIDataArea.SysPara.ucAction_Flag		= 0x00;
			UIDataArea.SysPara.ucSysparaDirtyFlag	= 0x00;
			UISemaphore.ucSysAreaSem	= 0xff;				//release semaphore
			SetCursorPos(35);
			DisplayChar('.');
			break;
		}
		else
		{
			UISemaphore.ucSysAreaSem	= 0xff;				//release semaphore
			if( ++ucTmp == 0)
			{//MEMORY TEST FAILURE!
				DisplayRom(ucRamErrorTitle4);
			}
			else
			{
				DelayTime(20);		//delay 20ms
			}
		}
	}
//.............................................................................
	InitKeyboard();		//Initialize the variables used by keyboard functions
	InitSerial();		//Initialize the variables used by serial port functions
//Initialize finish,Waiting LINK LAYER longin

	DisplayRom(ucInitTitle);
	SetCursorPos(32);
	DisplayChar('.');
	DisplayChar('.');
	DisplayChar('.');
	DisplayChar('.');
	DisplayChar('.');
	DisplayChar('.');
	SetCursorPos(0);

	while(1)
	{
		UISemaphore.ucSysAreaSem	= 0x00;				//request semaphore
		if(UISemaphore.ucSysAreaSem == 0)
		{//Request successful
			if( (UIDataArea.SysPara.ucAction_Flag!=0) && (UIDataArea.SysPara.ucSysparaDirtyFlag!=0) )
			{
				GetSysPara();
				UIDataArea.SysPara.ucSysparaDirtyFlag	= 0x00;
				break;
			}
		}
		UISemaphore.ucSysAreaSem	= 0xff;				//release semaphore
		DelayTime(10);
	}
	UISemaphore.ucSysAreaSem	= 0xff;					//release semaphore


///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////


	TMOD	= 0x21;
	T2CON	= 0x00;
	SCON	= 0x50;	//Enable receive
	TL0		= 0x00;
	TH0		= 0x00;
	TL1		= 0xFD;	//SERIAL IO BAUD RATE=9600bps(SYSTEM CLOCK=11.0592MHz)
	TH1		= 0xFD;
	TI		= 0;
	TR0		= 1;
	TR1		= 1;
	TR2		= 1;
	ET0		= 1;
	ET2		= 1;
	ES		= 1;
	EA		= 1;
//=========================================================================//
//                                MainLoop                                 //
//=========================================================================//
	while(1)
	{
//..........................................................................System parameter
		UISemaphore.ucSysAreaSem	= 0x00;				//request semaphore
		if(UISemaphore.ucSysAreaSem == 0)
		{//Request successful
			if( UIDataArea.SysPara.ucSysparaDirtyFlag!=0 )
			{
				GetSysPara();
				UIDataArea.SysPara.ucSysparaDirtyFlag	= 0x00;
			}
		}
		UISemaphore.ucSysAreaSem	= 0xff;				//release semaphore

		ProcSerial();					//.................process received data
//..........................................................................display buffer
		UISemaphore.ucDisAreaSem	= 0x00;				//request semaphore
		if(UISemaphore.ucDisAreaSem == 0)
		{
			if( UIDataArea.DisBuffer.DisParaDirtyFlag == 1)
			{
				DisplayEx();
				UIDataArea.DisBuffer.DisParaDirtyFlag = 0x00;
				UISemaphore.ucDisAreaSem	= 0xff;		//release semaphore
			}
		}
		UISemaphore.ucDisAreaSem	= 0xff;				//release semaphore

		ProcSerial();					//.................process received data
//..........................................................................key buffer
		if( IsKeyBufEmpty() != 0)
		{//Key buffer not empty

			UISemaphore.ucKeyAreaSem	= 0x00;				//request semaphore
			if(UISemaphore.ucKeyAreaSem == 0)
			{
				if( UIDataArea.KeyBuffer.KeyValue == 0)
				{//按键已经取走,可以放下一个键
					UIDataArea.KeyBuffer.KeyValue	= GetKey();
				}
			}
			UISemaphore.ucKeyAreaSem	= 0xff;				//release semaphore
		}

		ProcSerial();					//.................process received data

	}
}


///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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