📄 text2.c
字号:
u_ee(1);
for(i=0;i<8;i++)
delay(255);
clr_display();
d_ee(1);
for(i=0;i<8;i++)
delay(255);
}
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cpu init
time0 1ms
time baud 9600
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
void cpu_init(void)
{
TMOD=0x21;
IP=0x02;
SCON=0x50;
PCON|=0x80; //dual 4800X2=9600
TH1=TL1=0xfa; //fosc=11.0592Mhz baud=9600 TH1=TL1=256-(11059200/4800/32/12)
TH0=0xfc; //1ms time
TL0=0x66;
IE=0x10;
TR0=1;
TR1=1;
ES=1;
EA=1;
AUXR=0x02; //close inter sram
receive_flag=0;
SRAM1_E=1;
write_picture(0,tuwen);
write_picture(1,tuwen3);
}
//;;;;;;;;;;;;;erase inter EEPROM;;;;;;;;;;;;;;;;;;;;;;
// sectors max for 57; data form 0~57
// addr=0x8000+sectors*0x200
void erase_eeprom(unsigned char sectors)
{
unsigned int addr;
addr=0x8000+sectors*0x200;
ISP_ADDRH=(unsigned char)(addr>>8);
ISP_ADDRL=(unsigned char)addr;
EA=0;
ISP_CONTR=WAIT_TIME;
ISP_CONTR=0x80;
ISP_CMD=ISP_IAP_SECTOR_ERASE;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;
// _NOP();
;;;
// ISP_CONTR=0x00;
// ISP_CMD=0x00;
// ISP_TRIG=0x00;
// ISP_ADDRH=0x00;
// ISP_ADDRL=0x00;
EA=1;
}
//;;;;;;;;;;read inter data flash(EEPROM)program ;;;;;;;;;;;;;;;;
//;;;;;;;;;;;;;;ext address data is form 0~29696;;;;;;;;;;;;;;;;;;;;
unsigned char read_eeprom(unsigned int addrdata)
{
unsigned int address;
unsigned char data1;
address=0x8000+addrdata;
ISP_ADDRH=(unsigned char)(address>>8);
ISP_ADDRL=(unsigned char)address;
EA=0;
ISP_CONTR=WAIT_TIME;
ISP_CONTR=0x80;
ISP_CMD=ISP_IAP_BYTE_READ;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;
// _NOP();
;;;
data1=ISP_DATA;
// ISP_CONTR=0x00;
// ISP_CMD=0x00;
// ISP_TRIG=0x00;
// ISP_ADDRH=0x00;
// ISP_ADDRL=0x00;
EA=1;
return data1;
}
//;;;;;;;;;;write data flash(EEPROM) program;;;;;;;;;;;;;;;;;;
//;;;;;;;;;;;ext address 0~29696 data :;;;;;;;;;;;;;;;;;;;;
void write_eeprom(unsigned int addrdata,unsigned char data2)
{
unsigned int address;
address=0x8000+addrdata;
ISP_DATA=data2;
ISP_ADDRH=(unsigned char)(address>>8);
ISP_ADDRL=(unsigned char)address;
EA=0;
ISP_CONTR=WAIT_TIME;
ISP_CONTR=0x80;
ISP_CMD=ISP_IAP_BYTE_PROGRAM;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;
// _NOP();
;;;
// ISP_CONTR=0x00;
// ISP_CMD=0x00;
// ISP_TRIG=0x00;
// ISP_ADDRH=0x00;
// ISP_ADDRL=0x00;
EA=1;
}
//;;;;;;;;;;;;update eeprom page data, page=512byte;;;;;;;
//0:open inter sram;1:read page data; 2:erase page;3:update data;4:rewrite data;5:close inter sram
void pageeeprom_write(unsigned int addrdata,unsigned char data3)
{
unsigned int address,i;
unsigned char sectors;
unsigned char bytecount;
address=0x8000+addrdata;
sectors=addrdata/512;
bytecount=addrdata%512;
AUXR=0x01;
for(i=0;i<512;i++)
intereeprom[i]=read_eeprom(sectors*512+i);
erase_eeprom(sectors);
intereeprom[bytecount]=data3;
for(i=0;i<512;i++)
write_eeprom(sectors*512+i,intereeprom[i]);
AUXR=0x03;
}
//;;;;;;;;;;;;;;page=512byte;
void write_pagedata(unsigned char pagenumber,unsigned char *data3)
{
unsigned int address,i;
unsigned char sectors;
unsigned char bytecount;
sectors=pagenumber;
erase_eeprom(sectors);
for(i=0;i<512;i++)
write_eeprom(sectors*512+i,data3[i]);
}
void write_picture(unsigned char picturenumber,unsigned char *picturedata)
{
unsigned int i;
unsigned char sectors1,sectors;
sectors=picturenumber*2;
sectors1=picturenumber*2+1;
erase_eeprom(sectors);
erase_eeprom(sectors1);
for(i=0;i<1024;i++)
write_eeprom(picturenumber*1024+i,picturedata[i]);
}
void shift_ee(unsigned char cr,unsigned char picturepage)
{
unsigned char j;
unsigned int j1;
unsigned int j2;
unsigned char lines,line_count;
CNTB_245=1;
CNTA_245=0;
SELECT0=0;
line_count=cr/8;
lines=cr%8;
j1=ret_lines1(lines)-line_count;
j2=ret_lines2(lines)-line_count;
for(j=0;j<4;j++)
{
yyj[j1*8+j]=read_eeprom(picturepage*1024+j*2*128+cr);
yyj[j2*8+j]=read_eeprom(picturepage*1024+(j*2+1)*128+cr);
}
CNTB_245=0;
CNTA_245=1;
SELECT0=1;
}
void s_d_ee(unsigned char picturepage) //from eeprom read data shift to right
{
unsigned char i;
for(i=0;i<128;i++)
{
shift_ee(i,picturepage);
delay(20);
}
}
void shift_ee3(unsigned char cr,unsigned char picturenumber)
{
unsigned char j;
unsigned int j1;
unsigned char j2;
unsigned char lines,line_count;
unsigned int t1,t2,w;
CNTB_245=1;
CNTA_245=0;
SELECT0=0;
line_count=cr/8;
lines=cr%8;
j1=display_line1(lines)+line_count;
j2=display_line2(lines)+line_count;
for(j=0;j<4;j++)
{
// yyj[j1*8+j]=point[(j*2*128+127)-cr];
// yyj[j2*8+j]=point[((j*2+1)*128+127)-cr];
t1=j*2*128+127;
t2=(j*2+1)*128+127;
w=picturenumber*1024;
yyj[j1*8+j]=read_eeprom(w+t1-cr);
yyj[j2*8+j]=read_eeprom(w+t2-cr);
}
CNTB_245=0;
CNTA_245=1;
SELECT0=1;
}
void left_ee_d(unsigned char picturenumber) //from eeprom read data shift to left
{
unsigned char i;
for(i=0;i<128;i++)
{
shift_ee3(i,picturenumber);
delay(20);
}
}
void clr_display(void)
{
unsigned char i;
unsigned int j;
CNTB_245=1;
CNTA_245=0;
SELECT0=0;
for(j=0;j<192;j++)
{
for(i=0;i<4;i++)
yyj[j*8+i]=0;
}
for(j=4032;j<4096;j++)
{
for(i=0;i<4;i++)
{
yyj[j*8+i]=0;
}
}
CNTB_245=0;
CNTA_245=1;
SELECT0=1;
}
//test cpld ram program////////////////////////////////////////////
void test_cpldram(void)
{
unsigned int i;
SRAM1_E=1;
CNTB_245=1;
CNTA_245=0;
SELECT0=0;
clr_display();
for(i=1;i<128;i++)
{
display_line(i);
delay(10);
}
CNTB_245=1;
CNTA_245=0;
SELECT0=0;
clr_line(127);
CNTB_245=0;
CNTA_245=1;
SELECT0=1;
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
uart interrupt 4
receive_send
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
void receive_send() interrupt 4
{
unsigned char s,i;
unsigned char bcc=0;
ES=0;
if(RI)
{
RI=0;
s=SBUF;
if((rxhead==0)&&(s!=0xff))
{
rxhead=0;
ES=1;
}
if((rxhead==1)&&(s!=LOCAL_PORT))
{
rxhead=0;
ES=1;
}
receive_buf1[rxhead++]=s;
if(rxhead==32)
{
for(i=0;i<29;i++)
bcc=bcc^receive_buf1[2+i];
if(bcc==receive_buf1[31])
{
rxhead=0;
for(i=0;i<29;i++)
{
receive_buf1[i]=receive_buf1[i+2];
}
receive_flag=1;
ES=1;
}
else
{
rxhead=0;
ES=1;
}
}
}
else if(TI)
{
TI=0;
if(receive_count>=4);
else
{
if(receive_count++==3)
SBUF=receive_bcc;
}
}
ES=1;
}
//timer0 count 1ms
void timer0(void) interrupt 1
{
TL0=0x66;
TH0=0xfc;
time_counter++;
if(time_counter>20)
display_flag=1;
}
void extern_interrupt1() interrupt 2
{
}
unsigned int ret_lines1(unsigned char lines)
{
switch(lines)
{
case 0:
return 4047;
case 1:
return 4063;
case 2:
return 4079;
case 3:
return 4095;
case 4:
return 15;
case 5:
return 31;
case 6:
return 47;
case 7:
return 63;
default :
break;
}
}
unsigned char ret_lines2(unsigned char lines)
{
switch(lines)
{
case 0:
return 79;
case 1:
return 95;
case 2:
return 111;
case 3:
return 127;
case 4:
return 143;
case 5:
return 159;
case 6:
return 175;
case 7:
return 191;
default :
break;
}
}
unsigned int display_line1(unsigned char lines)
{
switch(lines)
{
case 0:
return 48;
case 1:
return 32;
case 2:
return 16;
case 3:
return 0;
case 4:
return 4080;
case 5:
return 4064;
case 6:
return 4048;
case 7:
return 4032;
default :
break;
}
}
unsigned char display_line2(unsigned char lines)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -