#define _NO_LED5_ #ifndef __MINIOS7__ #define __MINIOS7__ typedef unsigned int uint; typedef unsigned int WORD; typedef unsigned char uchar; typedef unsigned char BYTE; typedef unsigned long ulong; typedef unsigned long DWORD; #ifdef __TURBOC__ #if (__TURBOC__ < 0x0300) #define inpw inport #define outpw outport #endif #endif #define NoError 0 #define InitPinIsOpen 0 #define InitPinIsNotopen 1 #define QueueIsEmpty 0 #define QueueIsNotEmpty 1 #define PortError -1 #define DataError -2 #define ParityError -3 #define StopError -4 #define TimeOut -5 #define QueueEmpty -6 #define QueueOverflow -7 #define PosError -8 #define AddrError -9 #define BlockError -10 #define WriteError -11 #define SegmentError -12 #define BaudRateError -13 #define CheckSumError -14 #define ChannelError -15 #define BaudrateError -16 #define TriggerLevelError -17 #define DateError -18 #define TimeError -19 #define TimeIsUp 1 #ifdef __cplusplus extern "C" { #endif /* FOR WDT */ void EnableWDT(void); void DisableWDT(void); void RefreshWDT(void); /* FOR INIT* pin */ int ReadInitPin(void); /* For SCLK pin */ void ClockHigh(void); void ClockHighLow(void); void ClockLow(void); /* For red LED */ void LedOn(void); void LedOff(void); void LedToggle(void); /* For STDIO */ void Putch(int data); void Puts(char *str); int Getch(void); int Gets(char *str); int Kbhit(void); int LineInput(char *buf,int maxlen); void ResetScanBuffer(void); void SetScanBuffer(unsigned char *buf,int len); int Scanf(char *fmt, ...); /* for TC/BC only */ int Print(const char *fmt, ...); int _Printf(const char *fmt, ...); /* for TC/BC only */ int UngetchI(int key); int Ungetch(int key); /* For RTC/NVRAM */ void GetTime(int *hour,int *minute,int *sec); void GetDate(int *year,int *month,int *day); int SetDate(int year,int month,int day); int SetTime(int hour,int minute,int sec); void SetWeekDay(int day); int GetWeekDay(void); /* for weekday: 0: Sun. 1: Mon. ... 6: Sat. */ int ReadNVRAM(int addr); int WriteNVRAM(int addr, int data); /* for Timer */ extern const unsigned long far *TimeTicks; /* For old version EEPROM functions compatible */ #define WriteEEP EE_RandomWrite #define ReadEEP EE_RandomRead #define EnableEEP EE_WriteEnable #define ProtectEEP EE_WriteProtect /* for EEPROM(24LC16/1024)*/ void EE_WriteProtect(void); void EE_WriteEnable(void); /* for 24LC16 use */ unsigned char EE_RandomRead(int Block,unsigned Addr); unsigned char EE_ReadNext(int Block); int EE_MultiRead(int StartBlock,unsigned StartAddr,int no,char *databuf); int EE_RandomWrite(int Block,unsigned Addr,int Data); int EE_MultiWrite(int Block,unsigned Addr,int no,char *Data); int EE_MultiWrite_A(int Block,unsigned Addr,unsigned no,char *Data); int EE_MultiWrite_A(int Block,unsigned Addr,unsigned no,char *Data); int EE_MultiWrite_L(unsigned address,unsigned no,char *Data); int EE_MultiRead_L(unsigned address,unsigned no,char *Data); /* for 24LC1024 (only when 24LC16 is replaced by 24LC1024 can be used)*/ unsigned char EE1024_RandomRead(int Block,unsigned Addr); unsigned char EE1024_ReadNext(int Block); int EE1024_MultiRead(int StartBlock,unsigned StartAddr,int no,char *databuf); int EE1024_RandomWrite(int Block,unsigned Addr,int Data); int EE1024_MultiWrite(int Block,unsigned Addr,int no,char *Data); /* for 24LC16 or 24LC1024 use, NEED call InitEEPROM() first.*/ extern int EepType; /* 1024:24LC1024,16:24LC16; */ extern int EepBlockOffset; extern unsigned EepAddrOffset; void InitEEPROM(void); extern unsigned char (*EE1_RandomRead)(int Block,unsigned Addr); extern unsigned char (*EE1_ReadNext)(int Block); extern int (*EE1_MultiRead)(int StartBlock,unsigned StartAddr,int no,char *databuf); extern int (*EE1_RandomWrite)(int Block,unsigned Addr,int Data); extern int (*EE1_MultiWrite)(int Block,unsigned Addr,int no,char *Data); /* for system */ extern unsigned long far *IntVect; int IsMiniOS7(void); #define IsiView(void); int IsiView40(void); /* for iView 100(40M) only */ int IsResetByPowerOn(void); int IsResetByWatchDogTimer(void); /* for FLASH MEMORY */ int FlashReadId(void); int FlashErase(unsigned int FlashSeg); int FlashWrite(unsigned int seg, unsigned int offset, char data); #define FlashRead FlashReadB unsigned char FlashReadB(unsigned seg, unsigned offset); unsigned FlashReadI(unsigned seg, unsigned offset); unsigned long FlashReadL(unsigned seg, unsigned offset); void far *_MK_FP_(unsigned s,unsigned off); /* Timer functions */ int TimerOpen(void); int TimerClose(void); void TimerResetValue(void); unsigned long TimerReadValue(void); int StopWatchReset(int channel); int StopWatchStart(int channel); int StopWatchStop(int channel); int StopWatchPause(int channel); int StopWatchContinue(int channel); int StopWatchReadValue(int channel,unsigned long *value); int CountDownTimerStart(int channel,unsigned long count); int CountDownTimerReadValue(int channel,unsigned long *value); void InstallUserTimer(void (*fun)(void)); void InstallUserTimer1C(void (*fun)(void)); /* StopWatch [計時碼表] */ #ifndef _T_STOPWATCH_ #define _T_STOPWATCH_ typedef struct { ulong ulStart,ulPauseTime; uint uMode; /* 0: pause, 1:run(start) */ } STOPWATCH; #endif /* CountDown Timer[倒數計時] */ #ifndef _T_COUNTDOWNTIMER_ #define _T_COUNTDOWNTIMER_ typedef struct { ulong ulTime,ulStartTime,ulPauseTime; uint uMode; /* 0: pause, 1:run(start) */ } COUNTDOWNTIMER; #endif void T_StopWatchStart(STOPWATCH *sw); ulong T_StopWatchGetTime(STOPWATCH *sw); void T_StopWatchPause(STOPWATCH *sw); void T_StopWatchContinue(STOPWATCH *sw); void T_CountDownTimerStart(COUNTDOWNTIMER *cdt,ulong timems); void T_CountDownTimerPause(COUNTDOWNTIMER *cdt); void T_CountDownTimerContinue(COUNTDOWNTIMER *cdt); int T_CountDownTimerIsTimeUp(COUNTDOWNTIMER *cdt); ulong T_CountDownTimerGetTimeLeft(COUNTDOWNTIMER *cdt); /* Timer functions II */ void T2_UpdateCurrentTimeTicks(void); /* every loop must call T2_UpdateCurrentTimeTicks() to get new time.*/ void T2_StopWatchStart(STOPWATCH *sw); ulong T2_StopWatchGetTime(STOPWATCH *sw); void T2_StopWatchPause(STOPWATCH *sw); void T2_StopWatchContinue(STOPWATCH *sw); void T2_CountDownTimerStart(COUNTDOWNTIMER *cdt,ulong timems); void T2_CountDownTimerPause(COUNTDOWNTIMER *cdt); void T2_CountDownTimerContinue(COUNTDOWNTIMER *cdt); int T2_CountDownTimerIsTimeUp(COUNTDOWNTIMER *cdt); ulong T2_CountDownTimerGetTimeLeft(COUNTDOWNTIMER *cdt); extern const unsigned long far *TimeTicks; void Delay(unsigned ms); /* delay unit is ms, use CPU Timer 1. */ void Delay_1(unsigned ms); /* delay unit is 0.1 ms ,use CPU Timer 1.*/ void Delay_2(unsigned ms); /* delay unit is 0.01 ms ,use CPU Timer 1.*/ void DelayMs(unsigned t);/* delay unit is ms, use system timeticks. */ /* for MiniOS7 FLASH file system */ #ifndef __FILE_DATA__ #define __FILE_DATA__ typedef struct { unsigned mark; /* 0x7188 -> is file */ unsigned char fname[12]; unsigned char year; unsigned char month; unsigned char day; unsigned char hour; unsigned char minute; unsigned char sec; unsigned long size; char far *addr; unsigned CRC; unsigned CRC32; } FILE_DATA; #endif #ifndef _DISK_AB_ #define _DISK_AB_ typedef struct { unsigned sizeA:3; unsigned sizeB:3; unsigned sizeC:3; unsigned sum:7; } SIZE_AB; #endif extern SIZE_AB SizeAB; extern FILE_DATA far *fdata; #define DISKA 0 #define DISKB 1 /* int GetFileNo(void); */ #define GetFileNo() GetFileNo_AB(DISKA) /* int GetFileName(int no,char *fname); */ #define GetFileName(no,fname) GetFileName_AB(DISKA,no,fname) /* FILE_DATA far * GetFileInfoByNo(int no) */ #define GetFileInfoByNo(no) GetFileInfoByNo_AB(DISKA,no) /* FILE_DATA far * GetFileInfoByName(char *fname) */ #define GetFileInfoByName(fname) GetFileInfoByName_AB(DISKA,fname) /* char far * GetFilePositionByNo(int no) */ #define GetFilePositionByNo(no) GetFilePositionByNo_AB(DISKA,no) /* char far * GetFilePositionByName(char *fname) */ #define GetFilePositionByName(fname) GetFilePositionByName_AB(DISKA,fname) int GetFileNo_AB(int disk); int GetFileName_AB(int disk,int no,char *fname); FILE_DATA far * GetFileInfoByNo_AB(int disk,int no); FILE_DATA far *GetFileInfoByName_AB(int disk,char *fname); char far * GetFilePositionByNo_AB(int disk,int no); char far * GetFilePositionByName_AB(int disk,char *fname); #define COM1 0 #define COM2 1 #define COM3 2 #define COM4 3 #define FLOW_CONTROL_DISABLE 0 #define FLOW_CONTROL_ENABLE 1 #define FLOW_CONTROL_AUTO_BY_HW 2 #define FLOW_CONTROL_AUTO_BY_SW 3 /* for COM1 */ /* WITH CTS & RTS control */ #define ClearTxBuffer1 ClearTxBuffer_1 #define GetTxBufferFreeSize1 GetTxBufferFreeSize_1 #define PushDataToCom1 PushDataToCom_1 #define CheckInputBufSize1 CheckInputBufSize_1 #define InstallCom1 InstallCom_1 #define RestoreCom1 RestoreCom_1 #define SetBaudrate1 SetBaudrate_1 #define SetDataFormat1 SetDataFormat_1 #define ClearCom1 ClearCom_1 #define DataSizeInCom1 DataSizeInCom_1 #define IsCom1 IsCom_1 #define IsCom1OutBufEmpty IsComOutBufEmpty_1 #define ReadCom1 ReadCom_1 #define ToCom1Bufn ToComBufn_1 #define ToCom1Str ToComStr_1 #define SetCom1Timeout SetComTimeout_1 #define ToCom1 ToCom_1 #define IsTxBufEmpty1 IsTxBufEmpty_1 #define WaitTransmitOver1 WaitTransmitOver_1 #define ReadCom1n ReadComn_1 #define printCom1 printCom_1 #define SetBreakMode1 SetBreakMode_1 #define SendBreak1 SendBreak_1 #define IsDetectBreak1 IsDetectBreak_1 #define SetRtsActive1 SetRtsActive_1 #define SetRtsInactive1 SetRtsInactive_1 #define GetCtsStatus1 GetCtsStatus_1 #define SetCtsControlMode1 SetCtsControlMode_1 #define SetRtsControlMode1 SetRtsControlMode_1 #define DataSizeInCom1_DMA DataSizeInCom_DMA_1 #define ReadCom1n_DMA ReadComn_DMA_1 #define InstallCom1_DMA InstallCom_DMA_1 #define ClearCom1_DMA ClearCom_DMA_1 #define IsCom1_DMA IsCom_DMA_1 #define DataSizeInCom1_DMA DataSizeInCom_DMA_1 #define ReadCom1_DMA ReadCom_DMA_1 void ClearTxBuffer_1(void); int GetTxBufferFreeSize_1(void); int PushDataToCom_1(int data); void CheckInputBufSize_1(void); int InstallCom_1(unsigned long baud, int data, int parity,int stop); int RestoreCom_1(void); int SetBaudrate_1(unsigned long baud); int SetDataFormat_1(int databit,int parity,int stopbit); int ClearCom_1(void); int ClearCom_DMA_1(void); int DataSizeInCom_1(void); int IsCom_1(void); int IsComOutBufEmpty_1(void); int ReadCom_1(void); int ToComBufn_1(char *buf,int no); int ToComStr_1(char *str); void SetComTimeout_1(unsigned t); int ToCom_1(int data); int IsTxBufEmpty_1(void); int WaitTransmitOver_1(void); int ReadComn_1(unsigned char *buf,int no); int printCom_1(char *fmt,...); int DataSizeInCom_DMA_1(void); int ReadComn_DMA_1(unsigned char *buf,int maxsize); int InstallCom_DMA_1(unsigned long baud, int data, int parity,int stop); int ClearCom_DMA_1(void); int IsCom_DMA_1(void); int DataSizeInCom_DMA_1(void); int ReadCom_DMA_1(void); void SetBreakMode_1(int mode); void SendBreak_1(unsigned TimeMs); int IsDetectBreak_1(void); void SetRtsActive_1(void); void SetRtsInactive_1(void); int GetCtsStatus_1(void); void CheckCtsStatus_1(void); void SetCtsControlMode_1(int mode); void SetRtsControlMode_1(int mode); void SetComPortBufferSize_1(int in_size,int out_size); #define bCtsChanged1 bCtsChanged_1 extern int bCtsChanged_1; #define CurCTS1 CurCTS_1 extern int CurCTS_1; #define CurRTS1 CurRTS_1 extern int CurRTS_1; #define fCtsControlMode1 fCtsControlMode_1 extern int fCtsControlMode_1; #define fRtsControlMode1 fRtsControlMode_1 extern int fRtsControlMode_1; /* for COM2 (in normal RS-485)*/ /* WITHOUT CTS & RTS control */ #define ClearTxBuffer2 ClearTxBuffer_2 #define GetTxBufferFreeSize2 GetTxBufferFreeSize_2 #define PushDataToCom2 PushDataToCom_2 #define CheckInputBufSize2 CheckInputBufSize_2 #define InstallCom2 InstallCom_2 #define RestoreCom2 RestoreCom_2 #define SetBaudrate2 SetBaudrate_2 #define SetDataFormat2 SetDataFormat_2 #define ClearCom2 ClearCom_2 #define DataSizeInCom2 DataSizeInCom_2 #define IsCom2 IsCom_2 #define IsCom2OutBufEmpty IsComOutBufEmpty_2 #define ReadCom2 ReadCom_2 #define ToCom2Bufn ToComBufn_2 #define ToCom2Str ToComStr_2 #define SetCom2Timeout SetComTimeout_2 #define ToCom2 ToCom_2 #define IsTxBufEmpty2 IsTxBufEmpty_2 #define WaitTransmitOver2 WaitTransmitOver_2 #define ReadCom2n ReadComn_2 #define printCom2 printCom_2 #define SetBreakMode2 SetBreakMode_2 #define SendBreak2 SendBreak_2 #define IsDetectBreak2 IsDetectBreak_2 #define DataSizeInCom2_DMA DataSizeInCom_DMA_2 #define ReadCom2n_DMA ReadComn_DMA_2 #define InstallCom2_DMA InstallCom_DMA_2 #define ClearCom2_DMA ClearCom_DMA_2 #define IsCom2_DMA IsCom_DMA_2 #define DataSizeInCom2_DMA DataSizeInCom_DMA_2 #define ReadCom2_DMA ReadCom_DMA_2 void ClearTxBuffer_2(void); int GetTxBufferFreeSize_2(void); int PushDataToCom_2(int data); void CheckInputBufSize_2(void); int InstallCom_2(unsigned long baud, int data, int parity,int stop); int RestoreCom_2(void); int SetBaudrate_2(unsigned long baud); int SetDataFormat_2(int databit,int parity,int stopbit); int ClearCom_2(void); int ClearCom_DMA_2(void); int DataSizeInCom_2(void); int IsCom_2(void); int IsComOutBufEmpty_2(void); int ReadCom_2(void); int ToComBufn_2(char *buf,int no); int ToComStr_2(char *str); void SetComTimeout_2(unsigned t); int ToCom_2(int data); int IsTxBufEmpty_2(void); int WaitTransmitOver_2(void); int ReadComn_2(unsigned char *buf,int no); int printCom_2(char *fmt,...); int DataSizeInCom_DMA_2(void); int ReadComn_DMA_2(unsigned char *buf,int maxsize); int InstallCom_DMA_2(unsigned long baud, int data, int parity,int stop); int ClearCom_DMA_2(void); int IsCom_DMA_2(void); int DataSizeInCom_DMA_2(void); int ReadCom_DMA_2(void); void SetBreakMode_2(int mode); void SendBreak_2(unsigned TimeMs); int IsDetectBreak_2(void); void SetComPortBufferSize_2(int in_size,int out_size); /* For Send command to I-7000/I-87K series. */ extern char hex_to_ascii[16]; int ascii_to_hex(char ascii); int SendCmdTo7000(int iPort, unsigned char *cCmd, int iChksum); /* (INPUT)iPort:can be 0,1,3,4. (INPUT)lTimeout: unit is ms. (INPUT) cCmd: cmd for send to COM port(I-7000/I-87K). DON'T add '\r' at the end of cCmd, SendCmdTo7000() will add check sum(if needed) & '\r' after cCmd . (INPUT) iChksum: 0: disable, 1: enable. */ int ReceiveResponseFrom7000(int iPort, unsigned char *cCmd, long lTimeout, int iChksum); /* (INPUT)iPort:can be 0,1,3,4. (INPUT)lTimeout: unit is ms. (*****) (OUTPUT) cCmd: response from COM port(I-7000/I-87K). (INPUT) iChksum: 0: disable, 1: enable. */ /* for ALL COM PORT */ int printCom(int port,char *fmt,...); int IsDetectBreak(int port); int SendBreak(int port,unsigned timems); int SetBreakMode(int port,int mode); int ClearCom(int port); int ClearTxBuffer(int port); int InstallCom(int port, unsigned long baud, int data, int parity,int stop); int ToComBufn(int port,char *buf,int no); int RestoreCom(int port); int ToComStr(int port,char *str); int DataSizeInCom(int port); int IsCom(int port); int ReadComn(int port,unsigned char *buf,int n); int ReadCom(int port); int SetBaudrate(int port,unsigned long baud); int ToCom(int port,int data); int IsTxBufEmpty(int port); int GetTxBufferFreeSize(int port); int WaitTransmitOver(int port); int SetRtsActive(int port); int SetRtsInactive(int port); int GetCtsStatus(int port); /* function table for up functions except printCom */ /* For example if want to call: if(IsCom(port)){ data=ReadCom(port); } also can use : if(IsCom_[port]()){ data=ReadCom_[port](); } IsCom(port)/ReadCom(port) just for backword compatible, it also will call IsCom_[port]()/ReadCom_[port]() and so on. */ extern int (*IsDetectBreak_[3])(void); extern void (*SendBreak_[3])(unsigned timems); extern void (*SetBreakMode_[3])(int mode); extern int (*ClearCom_[3])(void); extern void (*ClearTxBuffer_[3])(void); extern int (*InstallCom_[3])(unsigned long baud, int data, int parity,int stop); extern int (*ToComBufn_[3])(char *buf,int no); extern int (*RestoreCom_[3])(void); extern int (*ToComStr_[3])(char *str); extern int (*DataSizeInCom_[3])(void); extern int (*IsCom_[3])(void); extern int (*ReadComn_[3])(unsigned char *buf,int n); extern int (*ReadCom_[3])(void); extern int (*SetBaudrate_[3])(unsigned long baud); extern int (*ToCom_[3])(int data); extern int (*IsTxBufEmpty_[3])(void); extern int (*GetTxBufferFreeSize_[3])(void); extern int (*WaitTransmitOver_[3])(void); extern void (*SetRtsActive_[3])(void); extern void (*SetRtsInactive_[3])(void); extern int (*GetCtsStatus_[3])(void); int GetComportNumber(void); extern int TriggerLevel[2]; void InitLib(void); /* for I-7188XC, InitLib() do nothing. */ void GetLibDate(char *date); unsigned GetLibVersion(void); /* Current version is 2.01 (return 0x0201) */ /* For KEY & LED */ #define KEY_SHIFT 0x80 #define KEY_F1 0x81 #define KEY_F2 0x82 #define KEY_F3 0x83 #define KEY_F4 0x84 #define KEY_F5 0x85 #define KEY_F6 0x86 #define KEY_F7 0x87 #define KEY_F8 0x88 #define KEY_UP 0x8C #define KEY_DOWN 0x8B #define KEY_LEFT 0x8A #define KEY_RIGHT 0x89 #define SHIFT_UP 0xCC #define SHIFT_DOWN 0xCB #define SHIFT_LEFT 0xCA #define SHIFT_RIGHT 0xC9 #define SHIFT_BS 0xCF #define SHIFT_ESC 0xCE #define SHIFT_CR 0xCD #define KEY_UP_IDX 0 #define KEY_1_IDX 1 #define KEY_2_IDX 2 #define KEY_RIGHT_IDX 3 #define KEY_3_IDX 4 #define KEY_F1_IDX 5 #define KEY_7_IDX 6 #define KEY_8_IDX 7 #define KEY_BS_IDX 8 #define KEY_9_IDX 9 #define KEY_F2_IDX 10 #define KEY_DOT_IDX 11 #define KEY_0_IDX 12 #define KEY_CR_IDX 13 #define KEY_SHARP_IDX 14 #define KEY_SHIFT_IDX 16 #define KEY_LEFT_IDX 17 #define KEY_F4_IDX 18 #define KEY_DOWN_IDX 19 #define KEY_F3_IDX 20 #define KEY_4_IDX 21 #define KEY_5_IDX 22 #define KEY_ESC_IDX 23 #define KEY_6_IDX 24 int IsKeyUp(int key); #define IsKeyDown(key) (!IsKeyUp(key)) #define LED_F1 0x01 #define LED_F2 0x02 #define LED_F3 0x04 #define LED_F4 0x08 #define LED_PWR 0x10 #define LED_RUN 0x20 #define LED_SHIFT 0x40 #define LED_PORT 0x103 extern unsigned far *SoundFreq; extern unsigned far *SoundPeriod; extern unsigned char far *Port100; extern unsigned char far *SerialNumber; extern unsigned char far *ResetMode; extern unsigned char far *LedData; extern unsigned char far *LcdMode; extern unsigned char far *bScanKey; /*=(unsigned char far *)0x00400031; */ extern unsigned char far *LcdTextCurPage; /*=(unsigned char far *)0x00400032; */ extern unsigned char far *LcdTextCurX; /*=(unsigned char far *)0x00400033; */ extern unsigned char far *LcdTextCurY; /*=(unsigned char far *)0x00400034; */ extern unsigned char far *LcdShowKey; /*=(unsigned char far *)0x00400035; */ extern unsigned char far *bSoundFlag; /* =(unsigned char far *)0x00400036;*/ extern unsigned char far *LcdShowCursor; /*=(unsigned char far *)0x00400037; */ extern unsigned far *LcdTextCurHomeAddr;/*=(unsigned far *)0x00400038; */ /* for LCD text mode functions */ #define CMD_TEXT_HOME 0x40 /* set text home address */ #define CMD_TEXT_AREA 0x41 /* set text area */ #define CMD_GRAPHIC_HOME 0x42 #define CMD_GRAPHIC_AREA 0x43 #define CMD_OFFSET_REGISTER_SET 0x22 #define CMD_ADDRESS_POINTER_SET 0x24 #define CMD_ENABLE_DATA_AUTO_WRITE 0xb0 #define CMD_DISABLE_DATA_AUTO_RW 0xb2 #define CMD_ENABLE_DATA_AUTO_READ 0xb1 #define DATA_READ 0xc5 #define DATA_WRITE 0xc4 #define DATA_READ_ 0xc1 #define DATA_WRITE_INC 0xc0 #define CMD_SET_CURSOR_POINT 0x21 #define CMD_CURSOR_ON 0x97 #define CMD_CURSOR_OFF 0x95 #define LCD_CMD_PORT 0x201 /* for command, C/D=1 (A0=1)*/ #define LCD_DATA_PORT 0x200 /* for data, C/D=0 (A0=0)*/ #define LCD_STATUS_PORT 0x201 /* for command, C/D=1 (A0=1)*/ #define STA0 0x01 #define STA1 0x02 #define STA2 0x04 #define STA3 0x08 #define TEXTMODEOR 0x80 #define STA01ERROR 3 #define STA03ERROR 8 #define TEXT_HOME_ADDRESS 0x1000 #define GRAPHIC_HOME_ADDRESS 0x0 #define CGRAMADDRESS 0x1C00 #define OVERXYRANGE 16 #define LCD_TextNX 16 #define LCD_TextNY 8 #define LCD_GraphicNX 16 #define LCD_GraphicNY 64 #define LCD_TextBufsize 128 extern unsigned char sbuf[LCD_TextBufsize]; /* function for communicatio with LCD driver(T6963C) */ int LcdWaitReady10(void); int LcdWaitAutoReadReady(void); int LcdWaitAutoWriteReady(void); int LcdAutoWriteData(int data); int LcdAutoReadData(void); int LcdAutoWriteCommand(int cmd); int LcdSendCmd_0(int cmd); int LcdSendData(int data); int LcdSendCmd_1(int cmd,int data); int LcdSendCmd_2(int cmd,int data); /* Set LCD to TEXT mode */ int LcdSetToTextMode(void); #define LcdTextInit LcdSetToTextMode int LcdInit(void); /* TEXT ON/GRAPHICS ON and clear TEXT/GRAPHICS screen */ /* function for cursor */ int LcdSetCursorOn(void); /* Display cursor */ int LcdSetCursorOff(void);/* Hide cursor */ int LcdGotoXY_0(void); /* Set cursor to (*LcdTextCurX,*LcdTextCurY),LcdPutch() will call this function. */ int LcdGotoXY(int x,int y);/* move cursor to (x,y) */ int LcdGotoXY_1(void);/* Set cursor to (*LcdTextCurX,*LcdTextCurY), and set data pointer to that position. */ /* Clear TEXT screen, and move cursor to (0,0) */ int LcdClearTextScreen(void); /* From current cursor position, Clear to end of line. Cursor position is not changed. */ int LcdClearToEndOfLine(void); /* Output n BYTES text */ int LcdPutText(unsigned char *buf,int no); int LcdPutTextXY(int x,int y,unsigned char *buf,int no); int LcdGetTextXY(int x,int y,unsigned char *buf,int no); /* Output 1 character */ int LcdPutch(unsigned data); int LcdPutch0(unsigned data); int LcdPutch1(unsigned data); int LcdPutchXY(unsigned x,unsigned y,unsigned data); /* Output string */ int LcdPuts(unsigned char *str); int LcdPuts0(unsigned char *str); int LcdPutsXY(int x,int y,unsigned char *str); int LcdPutsXY0(int x,int y,unsigned char *str); /* format output */ int LcdPrint(char *fmt,...); int LcdPrint0(char *fmt,...); int LcdPrintXY(int x,int y,char *fmt,...); int LcdPrintXY0(int x,int y,char *fmt,...); /* Move the screen up n lines. */ int LcdTextMoveUp(unsigned lineno); /* All the function name with "XY" means output to the position (x,y). x :range 0-15 (0 is left most,15 is right most.) y :range 0-7 (0 is upper most,7 is lower most.) ALl function name end with '0'(for example:"LcdPutch0"), will process '\r' & '\n'. for '\r' just move the cursor to left most. for '\n' just move the cursor to next line,if the cursor on the last line, it will croll the screen up one line. LcdPutch1() will show the character, but does not move the cursor to the next position. */ /* [11/06/2003] add Software flow control(Xon/Xoff) for COM1/2 */ void SetXonXoffControlMode_1(int mode); void SetXonXoffControlMode_2(int mode); /* mode=0 --> disable Xon/Xoff control mode=1 --> enable Xon/Xoff control */ /* [2003/12/01] Add function for debug, using STDIO COM PORT. Even after all InstallCom_1() also can use these 3 functions to send message to STDIO COM port. */ void pascal _dPutch(int data1); void _dPuts(char *str); int _dPrint(char *fmt,...); /* [2003/12/10] Add function for read system timeticks. */ long GetTimeTicks(void); long GetTimeTicks_ISR(void); /* use this one in ISR */ /* The return value is *TimeTicks. */ int InstallUserTimerFunction_us(unsigned time,void (*fun)(void)); /* time unit is 0.1 us. for example: If want timer generate interrupt for every 0.5ms(500 us=5000*0.1us) (That is to say system will call your function once every 0.5 ms) just use void fun(void) { ... } ... InstallUserTimerFunction_us(5000,fun); */ int InstallUserTimerFunction_ms(unsigned time,void (*fun)(void)); /* time unit is ms. for example: If want timer generate interrupt for every 1 second(1 sec=1000 ms) (That is to say system will call your function once every 1 sec.) just use void fun(void) { ... } ... InstallUserTimerFunction_ms(1000,fun); */ void StopUserTimerFun(void); /* For PIO pins on I/O expansion BUS */ void SetDio4Dir(int dir); void SetDio4High(void); void SetDio4Low(void); int GetDio4(void); void SetDio9Dir(int dir); void SetDio9High(void); void SetDio9Low(void); int GetDio9(void); void SetDio14Dir(int dir); void SetDio14High(void); void SetDio14Low(void); int GetDio14(void); void SetTi0Dir(int dir); void SetTi0High(void); void SetTi0Low(void); int GetTi0(void); void SetTi1Dir(int dir); void SetTi1High(void); void SetTi1Low(void); int GetTi1(void); void SetTo0Dir(int dir); void SetTo0High(void); void SetTo0Low(void); int GetTo0(void); void SetTo1Dir(int dir); void SetTo1High(void); void SetTo1Low(void); int GetTo1(void); /* general purpose functions for all PIO pins Please be carefully for using these 3 functions. !!! NOT ALL 32 PIO pins can use used by user. !!! */ void SetPioDir(unsigned pin,int dir); void SetPio(int pin,int mode); int GetPio(int pin); /* input: pin : 0~31. mode: 0 or 1 dir: 0: set the PIO pin to normal mode 1: set the PIO pin to input with pull high(for some pin is pull low.) 2: set the PIO pin to output mode 3: set the PIO pin to input without pull high/low. output for GetPio(): 0: for input mode: the input is low. for output mode: current output is low. non zero: for input mode: the input is high. for output mode: current output is high. */ /* 2004/02/26 add function usr burst mode to read date/time from RTC chip(DS-1302) */ typedef struct { int year; char month,day,weekday; char hour,minute,sec; }TIME_DATE; void GetTimeDate(TIME_DATE *timedate); int SetTimeDate(TIME_DATE *timedate); /* when call SetTimeDate(), need set the right year,month,day and the function will auto set the weekday. */ extern const unsigned char far * const SystemSerialNumber; int GetSerialNumber(char *Serial); /* [2004/10/13] Add GetSerialNumber() is used to read system serial number from hardware. on sucess return 0, and the serial number store to Serial. on fail return -1: cannot find the hardware IC return -2: CRC error */ /*[2005/03/14] for IP/MASK/GATEWAY/MAC */ void GetIp(unsigned char *ip); #define GetMac GetEid void GetEid(unsigned char *id); void GetMask(unsigned char *mask); void GetGateway(unsigned char *gate); void SetIp(unsigned char *ip); #define SetMac SetEid void SetEid(unsigned char *id); void SetMask(unsigned char *mask); void SetGateway(unsigned char *gate); #ifdef __cplusplus } #endif #endif