電子秤AD TM7710/TM7709測試程序
void keyin(void) interrupt 0 using 0 // 中斷 0 服務程序
{char X,i;
long int y;
send7289(0x15); // 接收數據
X=receive();
cs7289=1;
X=X&0x1f;
switch(X)
{case 0xf : {zongjia=zongjia+jine;
qingdan[qb][0]=sh;
qingdan[qb][1]=danjia[sh];
qingdan[qb][2]=shizhong;
qingdan[qb][3]=jine;
qb++; sh=0;dot=0;
danjia[0]=0;
for(i=0;i<6;i++) jiage[i]=0;
}
break; // 累加
case 0xe : pizhong=zhongliang; break; // 去皮
case 0xd : {danjia[sh]=0;dot=0;} break; // 清單價
case 0xc : {zongjia=0;jine=0;dot=0;list=0;qb=0;pizhong=0;
if(sh==0) danjia[sh]=0;} break; // 總清
case 0xa : dot=1;break; // 點
case 0xb : list=1;break; // 清單
case 0x19 : sh=10;break;
case 0x18 : sh=9;break;
case 0x17 : sh=8;break;
case 0x16 : sh=7;break;
case 0x15 : sh=6;break;
case 0x14 : sh=5;break;
case 0x13 : sh=4;break;
case 0x12 : sh=3;break;
case 0x11 : sh=2;break;
case 0x10 : sh=1;break;
case 0x1f :
case 0x1e :
case 0x1d :
case 0x1c :
case 0x1a : break;
case 0x1b : dot=1;break;
default :{ if(dot==0) {jiage[0]=jiage[1];jiage[1]=jiage[2];jiage[2]=X;}
if(dot==1) {jiage[4]=X;dot++; }
else if(dot==2) {jiage[5]=X; dot++;}
else if(dot>2) break;
// lcdi_send(0x84);
y=jiage[0];
y=y*10+jiage[1];
y=y*10+jiage[2];
y=y*10+jiage[4];
danjia[sh]=y*10+jiage[5];
}
}
while(key7289==0); // 等待鍵盤松開
}
/*
void ad(void) interrupt 2 using 1
{short x,y;
x=ad_244;
y=x;
if(x&0x80) baojing();
else x=x>>4;
y=y&0xf;
bcd[x]=y;
} */
// 初始頁面
void ini() // 輸入收銀員編號 , 日期
{short i,j;
char X;
lcdi_send(0x80); // 提示輸入收銀員編號
i=0;
while(message1[i]) lcdd_send(message1[i++]);
for(i=8;i<12;i++)
{
while(key7289);
send7289(0x15); // 接收數據
X=receive();
cs7289=1;
bianhao[i]=X+0x30;
lcdi_send(0x93);
for(j=8;j<16;j++) lcdd_send(bianhao[j]);
while(key7289==0);
}
lcdi_send(0x88); // 提示輸入日期
i=0;
while(message2[i]) lcdd_send(message2[i++]);
for(i=0;i<10;i++) // 輸入日期
{if(i==4||i==7) i++;
while(key7289==1);
send7289(0x15); // 接收數據
X=receive();
cs7289=1;
riqi[i]=X+0x30;
j=0;
lcdi_send(0x9a);
for(j=0;j<10;j++) lcdd_send(riqi[j]);
while(key7289==0);
}
while(key7289);
nop1();
while(key7289==0);
nop1();
lcdi_send(0x1);
}
//LCD 子程序
void ini_lcd() //LCD 初始化子程序
{
lcdi_send(0x30);
lcdi_send(0x1); // 總清
lcdi_send(0xc);
lcdi_send(0x2); // 光標右移, AC+1
}
void lcdd_send(short X) //LCD 發(fā)送數據子程序
{chk_busy();
nop1();
lcd_di=1;lcd_rw=0;lcd_e=0;
P0=X;
for(dealy=0;dealy<5;dealy++);//
lcd_e=1; X=X;
P0=0xff;
}
void lcdi_send(short X) //LCD 發(fā)送指令子程序
{chk_busy();
nop1();
lcd_di=0;lcd_rw=0;lcd_e=0;
P0=X;