📄 ledex.c
字号:
#include <reg51.h>
#include <absacc.h>
extern void reset_dog();
extern bit last_force;
sbit cs_dram=P3^2;
sbit busy=P1^5; //忙闲判别
unsigned char xdata ask_flag; /*查询标志*/
unsigned char xdata cha_flag; /*设置标志*/
unsigned char xdata dat_flag; /*数据标识*/
unsigned char xdata sch_code; /*多方案的方案号*/
unsigned char xdata shc_id;
unsigned char xdata hand_flag;
unsigned char xdata prn[196];
unsigned char data tem;
unsigned char idata otp;
unsigned int xdata len;
bit force_flag;
extern unsigned char xdata led83[24];
extern unsigned char xdata led86[24];
extern void make0x84();
exange(orgine_addr,targe_addr,length)
unsigned int orgine_addr;
unsigned int targe_addr;
unsigned int length;
{
unsigned int xdata i;
unsigned char xdata *org_addr;
unsigned char xdata *tar_addr;
//unsigned char data j;
org_addr=orgine_addr;
tar_addr=targe_addr;
len=length;
cs_dram=0;
do{}while(busy==0); ask_flag=XBYTE[0Xc400];
do{}while(busy==0); cha_flag=XBYTE[0Xc401];
do{}while(busy==0); dat_flag=XBYTE[0Xc402];
do{}while(busy==0); sch_code=XBYTE[0Xc403];
do{}while(busy==0); shc_id =XBYTE[0Xc404];
cs_dram=1;
if((dat_flag==0x01)&&(cha_flag==0x00)){ /*液晶对信号机进行设置*/
if(ask_flag==1){
//cs_dram=0;
//cs_dram=1;
for(i=0;i<len;i++){
cs_dram=0; /*打开双口RAM片选信号*/
tem=*org_addr;
cs_dram=1; /*关闭双口RAM片选信号*/
reset_dog();
*tar_addr=tem;
//prn[i]=tem;
//for(j=0;j<240;j++){};
do{}while(*tar_addr!=tem);
org_addr++;
tar_addr++;
}
cs_dram=0;
do{}while(busy==0); XBYTE[0Xc402]=0;
do{}while(busy==0); XBYTE[0Xc401]=0;
do{}while(busy==0); XBYTE[0Xc400]=0;
cs_dram=1;
}
}
cs_dram=0;
do{}while(busy==0); ask_flag=XBYTE[0Xc400];
do{}while(busy==0); cha_flag=XBYTE[0Xc401];
do{}while(busy==0); dat_flag=XBYTE[0Xc402];
do{}while(busy==0); sch_code=XBYTE[0Xc403];
do{}while(busy==0); shc_id =XBYTE[0Xc404];
cs_dram=1;
if((cha_flag==0x01)&&(dat_flag==0x00)){ /*液晶 查询信号机数据*/
// i=0;
//do{i++;}while(i<=40);
for(i=0;i<len;i++){
cs_dram=1; /*关掉双口RAM片选信号*/
tem=*org_addr;
cs_dram=0; /*打开双口RAM片选信号*/
do{}while(busy==0); /*忙*/
*tar_addr=tem;
//prn[i]=tem;
cs_dram=1;
org_addr++;
tar_addr++;
}
do{}while(busy==0);cs_dram=0;XBYTE[0Xc400]=0;
do{}while(busy==0);cs_dram=0;XBYTE[0Xc401]=0;
cs_dram=1;
}
return 1;
}
led_exange()
{
unsigned char i;
cs_dram=0;
do{}while(busy==0);ask_flag=XBYTE[0Xc400];
do{}while(busy==0);cha_flag=XBYTE[0Xc401];
do{}while(busy==0);dat_flag=XBYTE[0Xc402];
do{}while(busy==0);sch_code=XBYTE[0Xc403];
do{}while(busy==0);shc_id =XBYTE[0Xc404];
/*------------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
if(cha_flag==0x01){ /*液晶显示面板要查询参数*/
switch (sch_code){
/* case 0x01:otp=exange(0x0000,0xc500,0x64);break; */
case 0x02:otp=exange(0x7f00,0xc500, 7);break;
/* case 0x03:otp=exange(0x0000,0xc500,0x64);break; */
case 0x04:otp=exange(0x8010,0xc500, 3);break;
case 0x05:otp=exange(0x8014,0xc500, 2);break;
case 0x06:otp=exange(0x8016,0xc500, 5);break;
case 0x07:otp=exange(0x8020,0xc500, 16);break;
case 0x09:otp=exange(0x8060,0xc500, 32);break;
case 0x0a:otp=exange(0x8080,0xc500, 64);break;
case 0x0b:otp=exange(0x80C0,0xc500, 8);break;
case 0x0c:otp=exange(0x80C8,0xc500, 14);break;
case 0x0d:otp=exange(0x80E0,0xc500, 1);break;
case 0x0e:otp=exange(0x80EF,0xc500, 1);break;
case 0x0f:otp=exange(0x8130,0xc500, 48);break;
case 0x10:otp=exange(0x8160,0xc500, 48);break;
case 0x11:otp=exange(0x8110,0xc420,98);break;
case 0x12:otp=exange(0x81D5,0xc500, 2);break;
/*case 0x13:otp=exange(0x0000,0xc500,0x64);break;
case 0x14:otp=exange(0x0000,0xc500,0x64);break; lq 注释 2005-8-2*/
case 0x15:EA=0;
switch(shc_id){
case 0x01:otp=exange(0x8230,0xc500,16);break;
case 0x02:otp=exange(0x8240,0xc500,16);break;
case 0x03:otp=exange(0x8250,0xc500,16);break;
case 0x04:otp=exange(0x8260,0xc500,16);break;
case 0x05:otp=exange(0x8270,0xc500,16);break;
case 0x06:otp=exange(0x8280,0xc500,16);break;
case 0x07:otp=exange(0x8290,0xc500,16);break;
case 0x08:otp=exange(0x82a0,0xc500,16);break;
default:break;
}EA=1;break;
case 0x16:otp=exange(0x80E1,0xc500, 12);break;
case 0x17:otp=exange(0x0000,0xc500,0x64);break;
case 0x18:otp=exange(0x8F40,0xc500, 64);break;
case 0x19:otp=exange(0x8F1E,0xc500, 20);break;
case 0x1a:otp=exange(0x8F32,0xc500, 2);break;
case 0x1b:otp=exange(0x8F34,0xc500, 1);break;
case 0x1c:{if(shc_id>32)break;
else
otp=exange(0x9200+98*(shc_id-1),0xc500,98);
}break;
/*switch(shc_id){
case 0x01:otp=exange(0x9200,0xc500,98);break;
case 0x02:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x03:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x04:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x05:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x06:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x07:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x08:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x09:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x0a:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
case 0x0b:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
default :break;
}
break; */
case 0x1d:otp=exange(0x9fb0,0xc420, 72);break;
case 0x1e:switch(shc_id){
case 0x01:otp=exange(0x9000,0xc500,72);break;
case 0x02:otp=exange(0x9048,0xc500,72);break;
case 0x03:otp=exange(0x9090,0xc500,72);break;
case 0x04:otp=exange(0x90d8,0xc500,72);break;
case 0x05:otp=exange(0x9120,0xc500,72);break;
case 0x06:otp=exange(0x9168,0xc500,72);break;
case 0x07:otp=exange(0x91b0,0xc500,72);break;
default :break;
};break;
case 0x1f:otp=exange(0x8fb0,0xc500, 72);break;
case 0x20:otp=exange(0x0000,0xc500,0x64);break;
case 0x21:for(i=0;i<24;i++){
cs_dram=0;
XBYTE[0xc500+i]=led83[i];
cs_dram=1;
}cs_dram=0;
XBYTE[0Xc400]=0;
XBYTE[0Xc401]=0;
cs_dram=1;
break;
case 0x22:otp=exange(0x0000,0xc500,0x64);break;
case 0x23:for(i=0;i<24;i++){
make0x84();
cs_dram=0;
XBYTE[0xc500+i]=led86[i];
cs_dram=1;
}cs_dram=0;
XBYTE[0Xc400]=0;
XBYTE[0Xc401]=0;
cs_dram=1;
break;
case 0x24:otp=exange(0x0000,0xc500,0x64);break;
default :break;
}
}
if(dat_flag==0x01){ /*液晶显示面板要设置参数*/
switch (sch_code){
/* case 0x01:otp=exange(0x0000,0xc500,0x64);break; */
case 0x02:otp=exange(0xc500,0x7009, 7);
XBYTE[0XC009]=XBYTE[0X7009]; /*年*/
XBYTE[0XC008]=XBYTE[0X700A]; /*月*/
XBYTE[0XC007]=XBYTE[0X700B]; /*日*/
XBYTE[0XC004]=XBYTE[0X700C]; /*时*/
XBYTE[0XC002]=XBYTE[0X700D]; /*分*/
XBYTE[0XC000]=XBYTE[0X700E]; /*秒*/
XBYTE[0XC006]=XBYTE[0X700F]; /*星期*/
break;
// case 0x03:otp=exange(0x0000,0xc500,0x64);break; lq 注释 2005-8-2*/
case 0x04:otp=exange(0xc500,0x8010, 3);break;
case 0x05:otp=exange(0xc500,0x8014, 2);break;
case 0x06:otp=exange(0xc500,0x8016, 5);break;
case 0x07:
otp=exange(0xc500,0x8020, 16);
break;
case 0x09:otp=exange(0xc500,0x8060, 32);break;
case 0x0a:{EA=0;
otp=exange(0xc500,0x8080, 64);
EA=1;}break;
case 0x0b:otp=exange(0xc500,0x80C0, 8);break;
case 0x0c:otp=exange(0xc500,0x80C8, 14);break;
case 0x0d:otp=exange(0xc500,0x80E0, 1);break;
case 0x0e:otp=exange(0xc500,0x80EF, 1);break;
case 0x0f:otp=exange(0x8130,0xc500, 48);break;
case 0x10:otp=exange(0x8160,0xc500, 48);break;
case 0x11:{//EA=0;
otp=exange(0xc420,0x8110,98);
//EA=1;
}break;
case 0x12:otp=exange(0xc500,0x81D5, 2);break;
/*case 0x13:otp=exange(0x0000,0xc500,0x64);break;
/*case 0x14:otp=exange(0x0000,0xc500,0x64);break; lq 注释 2005-8-2*/
case 0x15:{EA=0;
otp=exange(0xc500,0x8220+16*shc_id,16);
EA=1;
}break;
case 0x16:otp=exange(0xc500,0x80E1, 12);break;
case 0x17:otp=exange(0xc500,0x7e29, 2);break;
case 0x18:otp=exange(0xc500,0x8F40, 64);break;
case 0x19:otp=exange(0xc500,0x8F1E, 20);break;
case 0x1a:otp=exange(0xc500,0x8F32, 2);break;
case 0x1b:otp=exange(0xc500,0x8F34, 1);break;
case 0x1c:{do{}while(busy==0);
cs_dram=0;shc_id=XBYTE[0xc500];cs_dram=1;
if(shc_id>32)
{cs_dram=0;
XBYTE[0Xc400]=1;
XBYTE[0Xc401]=0;
XBYTE[0Xc402]=0;
cs_dram=1;}
else
{EA=0;
otp=exange(0xc500,0x9200+98*(shc_id-1),98);
EA=1;}
}break;
case 0x1d:{EA=0;
otp=exange(0xc420,0x9fb0, 72);
EA=1;
}break;
case 0x1e:{EA=0;
otp=exange(0xc500,0x9000+72*(shc_id-1),72);
EA=1;
}break;
/* switch(shc_id){
case 0x01:otp=exange(0xc500,0x9000,72);break;
case 0x02:otp=exange(0xc500,0x9048,72);break;
case 0x03:otp=exange(0xc500,0x9090,72);break;
case 0x04:otp=exange(0xc500,0x90d8,72);break;
case 0x05:otp=exange(0xc500,0x9120,72);break;
case 0x06:otp=exange(0xc500,0x9168,72);break;
case 0x07:otp=exange(0xc500,0x91b0,72);break;
default :break;
};break; */
case 0x1f:otp=exange(0xc500,0x8fb0, 72);break;
/*case 0x20:otp=exange(0x0000,0xc500,0x64);break;
case 0x21:otp=exange(0x0000,0xc500,0x64);break;
case 0x22:otp=exange(0x0000,0xc500,0x64);break;
case 0x23:otp=exange(0x0000,0xc500,0x64);break;
case 0x24:otp=exange(0x0000,0xc500,0x64);break; lq注释 2005-8-2*/
default :break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -