📄 24c64ok.c
字号:
//ic system
#include <INTRINS.H>
#include <AT89x51.H>
#define uchar unsigned char
#define uint unsigned int
uint o=1,p=0;
//*************************************************
uchar system[]={0x20,0x49,0x43,0x20,0x43,0x41,0x52,0x44,
0x20,0x53,0x59,0x53,0x54,0x45,0x4d,0x00};
uchar beyond[]={0x20,0x42,0x45,0x59,0x4f,0x4e,0x44,0x20,
0x20,0x20,0x55,0x45,0x53,0x54,0x43,0x20};
uchar id[]={0x20,0x20,0x20,0x20,0x39,0x38,0x31,0x32,
0x31,0x2D,0x30,0x07,0x20,0x20,0x20,0x00};
uchar money[]={0x20,0x07,0x07,0x07,0x2e,0x07,0x07,0x20,
0x20,0x5c,0x3a,0x30,0x30,0x2e,0x30,0x30};
//*******************************************************
sbit en=P1^7; sbit rs=P1^5; sbit rw=P1^6;
sbit ATSDA=P1^1; sbit ATSCL=P1^0; sbit IC=P1^3;
sbit a0=ACC^0; sbit a1=ACC^1; sbit a2=ACC^2; sbit a3=ACC^3;
sbit a4=ACC^4; sbit a5=ACC^5; sbit a6=ACC^6; sbit a7=ACC^7;
//*******************************************************
void delay (char t)
{uchar s;while (t--){for (s=0xff;s>0;s--){_nop_();_nop_();_nop_();}}}
//*************************************************
//lcd
//*************************************************
void wait(void){ en=0; rs=0; rw=1;
do {en=0;en=1;_nop_();ACC=P0;en=0;} while(a7==1); }
//*************************************************
void command(uchar a){
en=0;rs=0;rw=0;en=1;P0=a;_nop_();en=0;wait();}
//*************************************************
void reset(void){
en=0;rs=0;rw=0;en=1;P0=0x38;_nop_();en=0;delay(0x09);
en=0;rs=0;rw=0;en=1;P0=0x38;_nop_();en=0;delay(0x06);command(0x38);}
//*************************************************
void lcdstart(void){
reset();
command(0x38);
command(0x06);
command(0x0c);
command(0x01);}
//*************************************************
void display(s) uchar data *s;
{uint m=0;while (s[m]!=0x00){en=0;rs=1;rw=0;
en=1;P0=s[m];en=0;wait();m++;_nop_();} }
//*************************************************
// c64
//*************************************************
void delay_12us(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
//****************************************************
void at24cxx_start(void)
{
ATSDA=1;
ATSCL=1;
_nop_();
_nop_();
ATSDA=0;
delay_12us();
ATSCL=0;
_nop_();
_nop_();
}
//***************************************************
void at24cxx_stop(void)
{
ATSCL=0;
ATSDA=0;
_nop_();
_nop_();
ATSCL=1;
delay_12us();
ATSDA=1;
_nop_();
_nop_();
}
//**********************************************************
void at24cxx_si(uchar si)
{
uchar i=8;
while(i--)
{
ATSDA=(bit)(si&0x80);
ATSCL=1;
delay_12us();
ATSCL=0;
delay_12us();
si<<=1;
}
ATSDA=0; //* acknowledge */
delay_12us();
ATSCL=1;
delay_12us();
ATSCL=0;
delay_12us();
ATSDA=1;
}
//*******************************************************
uchar at24cxx_so(void)
{
uchar so,i=8;
ATSDA=1;
do {
so <<= 1;
if (ATSDA) so |=0x01;
ATSCL=1;
delay_12us();
ATSCL=0;
delay_12us();
} while(--i);
return(so);
}
//*******************************************************************
uchar at24c32_rb(uint addr) /* random read */
{
uchar f_addr,s_addr;
f_addr=addr/256;
s_addr=addr%256;
at24cxx_start();
at24cxx_si(0xa0);
at24cxx_si(f_addr);
at24cxx_si(s_addr);
at24cxx_start();
at24cxx_si(0xa1);
f_addr=at24cxx_so();
at24cxx_stop();
return(f_addr);
}
//*************************************************************
char at24c32_wb(uint addr, uchar dat)
{
uchar f_addr,s_addr;
f_addr=addr/256;
s_addr=addr%256;
at24cxx_start();
at24cxx_si(0xa0);
at24cxx_si(f_addr);
at24cxx_si(s_addr);
at24cxx_si(dat);
at24cxx_stop();
delay(0x5f);
return(at24c32_rb(addr));
}
//*************************************************
//232
//*************************************************
//*************************************************
void txd(uchar z) //串口发送子程序
{ SBUF=z;while (TI==0);TI=0;
}
//*************************************************
rxd() interrupt 4 using 2 //串口接收子程序
{uchar x;//a,b,c,d,e;
while (RI==0);RI=0;
x=SBUF;
/* money[2]=x;
command(0xc0);display(money);
*/
if(o==1){money[1]=x;o++;}
else if(o==2){money[2]=x;o++;}
else if(o==3){money[3]=x;o++;}
else if(o==4){money[5]=x;o++;}
else if(o==5){money[6]=x;o++;}
else if(o==6){money[11]=x;o++;}
else if(o==7){money[12]=x;o++;}
else if(o==8){money[14]=x;o++;}
else {money[15]=x;o=1;p=1;IE=0x80;
command(0xc0);display(money);
/* money[1]=at24c32_wb(1,0x35);
money[2]=at24c32_wb(2,0x30);
money[3]=at24c32_wb(3,0x30);
money[5]=at24c32_wb(4,0x30);
money[6]=at24c32_wb(5,0x30);*/
}
}
//*************************************************
main()
{
P1=0xff;
TMOD=0x20;
TL1=0xfd;TH1=0xfd; //256-11059200/384/9600=0xfd
SCON=0x50;PCON=0x00; //fang shi 1
TR1=1;IE=0x80; //ji shu qi
lcdstart();
while(1)
{ IE=0x80;
if(IC!=0)
{id[11]=at24c32_rb(0);
money[1]=at24c32_rb(1);
money[2]=at24c32_rb(2);
money[3]=at24c32_rb(3);
money[5]=at24c32_rb(4);
money[6]=at24c32_rb(5);
txd(id[11]);
txd(money[1]);
txd(money[2]);
txd(money[3]);
txd(money[5]);
txd(money[6]);
command(0x80);display(id);
command(0xc0);display(money);
delay(0xff);
IE=0x90;
while(IC!=0){_nop_();_nop_();_nop_();
if(p!=0){at24c32_wb(1,money[1]);
at24c32_wb(2,money[2]);
at24c32_wb(3,money[3]);
at24c32_wb(4,money[5]);
at24c32_wb(5,money[6]);
p=0;}}
money[11]=0x30;money[12]=0x30;money[14]=0x30;money[15]=0x30;
}
else { command(0x80);display(system);
command(0xc0);display(beyond);
delay(0xff);};
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -