📄 caiji.c.bak
字号:
void clear(void) /* clear the screen */
{
char i,j;
for(i=0;i<8;i++) /* write '0' to the display ram */
{
write(0x00,i+0xb8);/* write left row address(page 0)*/
write(0x00,0x40); /* write column address(column 0)*/
write(0x02,i+0xb8);/* write right row address*/
write(0x02,0x40);
for(j=0;j<64;j++)
{
write(0x01,0x00);/* write '0' to the dram*/
write(0x03,0x00);
}
}
}
void wait_key(void)
{
uchar data i;
for (i=0;i<25;i++)
{
ldelay(15); /*about 8 second*/
if (keyvalue!=NONE) break;
}
}
void delay(void)
{
unsigned int i=0;
do{ i++;
}while(i<4800);
}
void ldelay(unsigned int i)
{
uint data j=0;
do
{
kbscan();
j++;
}
while((j<i)&&(keyvalue==NONE));
}
void print(uint hzb,uchar h,uchar v)
{
uchar code * hzbpt=hzb;
uchar code * hzmpt;
pl:
while(*hzbpt!='\0')
{
if(*hzbpt<128)
{
writebig(*hzbpt,h,v);
hzbpt++;
v+=8;
}
else
{
hzmpt=addres(*hzbpt,*(hzbpt+1),0);
whz(hzmpt,h,v);
hzbpt=hzbpt+2;
v+=16;
}
}
}
void writebig(char zf,uchar h,uchar v)
{
uchar i,m,temp,temp1;
uchar xdata * pt;
if(h>=128)
{
m=1;
}
else
{
m=0;
}
h&=7;
if(v>=64)
{
temp=2;
temp1=v-64;
}
else
{
temp=0;
temp1=v;
}
pt=addres(zf,zf,1);
write(temp,(h+0xb8)); /* horrizen address*/
write(temp,(temp1+0x40));/* vertical address*/
i=0;
while(i<8)
{
if(m==1)
{
write((temp+1),~(*(pt+i)));
}
else
{
write((temp+1),*(pt+i));
}
i++;
}
write(temp,(h+0xb9)); /* horrizen address*/
write(temp,(temp1+0x40));/* vertical address*/
while(i<16)
{
if(m==1)
{
write((temp+1),~(*(pt+i+8)));
}
else
{
write((temp+1),*(pt+i+8));
}
i++;
}
v+=8;
}
void whz(uint hz,uchar h,uchar v)
{
uchar xdata *hzmpt=hz;
unsigned char i,j;
unsigned char temp,temp1;
if(v>=64) /* write to the right screen */
{
temp=0x02;
temp1=v-64;
}
else /* write to the left screen */
{
temp=0x00;
temp1=v;
}
if(h>127) /* require to display the negtive Character*/
{
h&=7;
v=1;
}
else /* display the positive Character */
{
v=0;
}
for(j=0;j<2;j++) /* write two line of a Chinese Character*/
{
write(temp,(j+h+0xb8)); /* horrizen address*/
write(temp,(temp1+0x40));/* vertical address*/
for(i=0;i<16;i++)
{
if(v==0)
{
write((temp+1),*hzmpt); /* positive*/
}
else
{
write((temp+1),~(*hzmpt)); /* negtive*/
}
hzmpt+=1;
}
}
}
void dwordtobcd(uint wa,uchar bytes)
/* 以wa开始的字节转换成BCD格式,转换bytes个字节 */
/* 高位字节在前,低位字节在后 */
{
unsigned long data temp;
uchar xdata * pt=wa; /* 定义一个指针型变量,初值=wa */
char data i;
uchar data * bpt=&temp;
temp=0;
*(bpt+3)=*pt;
if(bytes==4)
{
*bpt=*(pt+3);
*(bpt+1)=*(pt+2);
}
if(bytes!=1)
{
*(bpt+2)=*(pt+1);
}
for(i=0;i<16;i++)
keybuff[i]=' '; /* 按键缓冲区清空 */
i=0;
do{
keybuff[i]=temp%10;
temp=temp/10;
i++;
}while(temp!=0);
}
void dwordtobcd2(uint wa2)//,uchar bytes2)
/* 以wa开始的字节转换成BCD格式,转换bytes个字节 */
/* 高位字节在前,低位字节在后 */
{
char data i;
uint data temp=wa2;
for(i=0;i<16;i++)
keybuff[i]=' '; /* 按键缓冲区清空 */
i=0;
do{
keybuff[i]=temp%10;
temp=temp/10;
i++;
}while(temp!=0);
keybuff[i]=0x0d;
}
void ddatatobcd(uchar chdata)
{
unsigned data temp;
char data i;
temp=chdata;
i=0;
do{
keybuff[i]=temp%10;
temp=temp/10;
i++;
}while(temp!=0);
keybuff[i]=0x0d;
}
void putstring(char l)
{
char i,k,v=64;
for(i=0;keybuff[i]!=0x0d;i++)
{
}
k=i;
for(i=k;i!=(-1);i--)
{
if(keybuff[i]<10)
writebig(keybuff[i],l,v);
else
writebig('0',l,v);
v+=8;
}
}
void putstring_left(char l)
{
char i,k,v=0;
for(i=0;keybuff[i]!=0x0d;i++)
{
}
k=i;
for(i=k;i!=(-1);i--)
{
if(keybuff[i]<10)
writebig(keybuff[i],l,v);
else
writebig('0',l,v);
v+=8;
}
writebig('.',l,v);
}
void putstring0(char bytes,char h) //输出字符 左边
{
char i,v=0;
for(i=bytes;i>2;i--)
{
if(keybuff[i]<10)
writebig(keybuff[i],h,v);
else
writebig('0',h,v);
v+=8;
}
}
void putstring5(char l) //显示一位小数点
{
char i,k,v;
for(i=0;keybuff[i]!=0x0d;i++)
{
}
k=i;
v=39;
if(k==1){
writebig('0',l,v);
}
else
{
for(i=1;i<k;i++)
{
if(keybuff[i]<10)
writebig(keybuff[i],l,v);
else
writebig('0',l,v);
v-=8;
}
}
writebig('.',l,47);
writebig(keybuff[0],l,56);
}
void putstring1(char bytes,char h) //输出字符 右边
{
char i,v=64;
for(i=bytes;i>2;i--)
{
if(keybuff[i]<10)
writebig(keybuff[i],h,v);
else
writebig('0',h,v);
v+=8;
}
}
void display_var(uchar code * dispt,uchar h,uchar v)
{
// uchar code * disbpt=dispt;
uchar code * dismpt;
while(*dispt!='\0')
{
if(*dispt<128)
{
writebig(*dispt,h,v);
dispt++;
v+=8;
}
else
{
dismpt=addres(*dispt,*(dispt+1),0);
whz(dismpt,h,v);
dispt=dispt+2;
v+=16;
}
}
}
//*********************************------------------------------//
/*循环显示*/
//********************************-------------------------------//
void display_cycle(void) /* DISPLAY 8 GROUPS VALUE */
{
uchar data group,zl;
clear();
init_display();
display_var(display_title,0,64);
display_var(display_name,0,32);
display_var(display_unit,2,64);
// writebig(':',0,56);
// addr=device_address;
// ddatatobcd(addr);
// putstring(0);
ddatatobcd(nb_display_step);
putstring_left(0);
// writebig('.',0,15); //moduel_number
if(display_unit=="MPa")
{
dt2=chanel_str[moduel_display_step][chanel_display_step].display_data/10;
dt1=(uint)(dt2);
}
else
{
if((chanel_str[moduel_display_step][chanel_display_step].display_data)==0.0)
dt1=0;
else
{
dt2=chanel_str[moduel_display_step][chanel_display_step].display_data*10;
dt1=(uint)(dt2);
}
}
dwordtobcd2(dt1);
putstring5(2);
chanel_display_step++;
nb_display_step++;
if(chanel_display_step==chanel_number[moduel_display_step])
{
moduel_display_step++;
if(moduel_display_step==moduel_number)
{
moduel_display_step=0;
nb_display_step=1;
}
chanel_display_step=0;
}
init_display();
display_var(display_title,4,64);
display_var(display_name,4,32);
display_var(display_unit,6,64);
ddatatobcd(nb_display_step);
putstring_left(4);
if(display_unit=="MPa")
{
dt2=chanel_str[moduel_display_step][chanel_display_step].display_data/10;
dt1=(uint)(dt2);
}
else
{
if((chanel_str[moduel_display_step][chanel_display_step].display_data)==0.0)
dt1=0;
else
{
dt2=chanel_str[moduel_display_step][chanel_display_step].display_data*10;
dt1=(uint)(dt2);
}
}
dwordtobcd2(dt1);
putstring5(6);
chanel_display_step++;
nb_display_step++;
if(chanel_display_step==chanel_number[moduel_display_step])
{
moduel_display_step++;
if(moduel_display_step==moduel_number)
{
moduel_display_step=0;
nb_display_step=1;
}
chanel_display_step=0;
}
}
//*********************************------------------------------//
/*设置参数*/
//********************************-------------------------------//
void pass(void)
{
uchar code pa1[]="ABC"; /* fixure password */
uchar code syset[]="**系统设置**";
uchar code input[]="请您输入口令?";
uchar code eco[]="密码不正确!";
uchar code input_device_name[]="1:设备地址";
uchar code input_device_number[]="2:模块个数";
uchar code input_chanel_number[]="3:所用的通道数";
uchar code input_chanel_parameter[]="4:通道参数";
uchar code indit[]="5:修改密码";
uchar code indtt[]="其它键继续";
uchar xdata *pt=0x8000;
uchar i=0,j=0,k;
keybuff[8]=0;
clear();
clear();
print(syset,0,1);/* xi tong she ding */
print(input,2,16);
writebig(':',5,24);
keybuff[0]='=';
keybuff[1]=';';
do
{
ldelay(5);
if((keyvalue<10)&&(keyvalue!=ESC))
{
keybuff[i]=keyvalue;
if(i<6)
i++;
writebig('X',5,32+8*i);
keybuff[6]=0;
}
else if(keyvalue==ENTER)
{
keybuff[6]=keybuff[0]<<4|keybuff[1];
keybuff[1]=keybuff[2]<<4|keybuff[3];
keybuff[2]=keybuff[4]<<4|keybuff[5];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -