#include "absacc.h"
#include "math.h"
#include "ASCII816.h" //標準ASCII庫
#include "HZTable.h" //漢字點陣庫(自做)
#include "menu.h" //菜單庫(自做)
#define ComPort 0xB101
#define DataPort 0xB000
#define GraphAddr 0x0000 //head of graph
//以8*8字符計算,顯示屏橫向、縱向可以顯示的字符個數(shù)
//以240*128為例:
#define LineChar 30 //一行16個字符(8*8)
#define ColumnChar 16 //總共16列
//指令,數(shù)據(jù) 讀寫狀態(tài)檢查
#define RWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x03; } while(sta!=0x03); }
//數(shù)據(jù)自動讀 狀態(tài)檢查
#define AutoRCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x04; } while(sta!=0x04); }
//數(shù)據(jù)自動寫 狀態(tài)檢查
#define AutoWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x08; } while(sta!=0x08); }
/*------輸入/出函數(shù),與T6963通訊------------------------------------------------*/
/*------------------------------------------------------------------------*/
// 向數(shù)據(jù)口發(fā)Data
#define OutPortData(dat ) { RWCheck(); XBYTE[DataPort]=dat; }
//寫有 1 個參數(shù)命令
#define OutPortCom1(command) { RWCheck(); XBYTE[ComPort]= command; }
//寫有 2 個參數(shù)命令
#define OutPortCom2(dat, command) { OutPortData(dat); OutPortCom1(command); }
//寫有 3 個參數(shù)命令
#define OutPortCom3(data1, data2, command) { OutPortData(data1); OutPortData(data2); OutPortCom1(command);}
unsigned char InPortData() { RWCheck(); return(XBYTE[DataPort]); }
/*-----------------------------------------------------------------------------------*/
//顯示8*16字符
//lin:行(0-7), column: 列(0-15)
//ch:字符代碼(標準ASCII碼)
void ShowChar(unsigned char lin,unsigned char column,unsigned char ch)
{
unsigned char i;
unsigned char dat;
unsigned int StartAddr;
StartAddr=lin*LineChar +column; //定位起始行
for(i=0;i<16;i++)
{
dat=ASCII816[ ch-0x20 ][i];
OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //set address
OutPortCom2( dat, 0xc4);
StartAddr=StartAddr + LineChar;
}
}
/*----------------------------------------------------------------------------------------------*/
//顯示一個漢字(16*16點陣)
//lin:行(0-7), column: 列(0-7)
//hzcode: 漢字代碼(自定義的)
void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
{
unsigned char i;
unsigned int StartAddr;
StartAddr=lin*LineChar + column; //定位起始行
for(i=0;i<16;i++)
{
OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
OutPortCom2( HZTable[hzcode][i*2], 0xc0); //左半部 地址加一
OutPortCom2( HZTable[hzcode][i*2+1], 0xc4); //右半部 字模地址加一
StartAddr=StartAddr + LineChar;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
//顯示一個漢字(16*16點陣)
//lin:行(0-7), column: 列(0-7)
//hzcode: 漢字代碼(自定義的)
void ShowHZD(unsigned char lin,unsigned char column,unsigned int hzcode)
{
unsigned char i,j;
unsigned int StartAddr;
StartAddr=lin*LineChar*16 +column; //定位起始行
for(i=0;i<35;i++)





