?? ndsbscui.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 + -