📄 txt.c
字号:
/************************************************/
/************************************************/
#include <REG52.H>
#include <stdio.h>
#ifdef MONITOR51 /* Debugging with Monitor-51 needs */
char code reserve [3] _at_ 0x23; /* space for serial interrupt if */
#endif /* Stop Exection with Serial Intr. */
/* is enabled */
const char Ledbuf[18]=/*digit convert table*//* 共阴*/
{ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,
/* 0 1 2 3 4 5 6 7 8 9 */
0x77, 0x7C, 0x39, 0x500E, 0x79, 0x71, 0x00, 0x40 };
/* a b c d e f - */
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit sda=P1^6;
sbit cclk=P1^7;
sbit P33=P3^3;
sbit P32=P3^2;
sbit din=P3^0;
sbit aclk=P3^1;
unsigned int kl=0,kh=0;
unsigned char ATdata;
unsigned int retdate;
void Delay(unsigned int DelayTime)
{
if (DelayTime == 0)return;
while(DelayTime != 0)
{DelayTime--; }
}
void display(ledtim)
char ledtim[4];
{ if(ledtim[3]==0x3F)
{ P0=ledtim[0];
P2=0x01;
Delay(500);
P0=ledtim[1];
P2=0x02;
Delay(500);
P0=ledtim[2];
P2=0x04;
Delay(500);
P0=0x00;
P2=0x08;
Delay(500);
}
else{P0=ledtim[0];
P2=0x01;
Delay(500);
P0=ledtim[1];
P2=0x02;
Delay(500);
P0=ledtim[2];
P2=0x04;
Delay(500);
P0=ledtim[3];
P2=0x08;
Delay(500);}
}
void computer(unsigned int dt)
{ char cledtim[4];
int dth,dtm,dtl;
dth=dt%10000;
cledtim[3]=Ledbuf[dth/1000];
dtm=dth%1000;
cledtim[2]=Ledbuf[dtm/100];
cledtim[2]|=0x80;
dtl=dtm%100;
cledtim[1]=Ledbuf[dtl/10];
cledtim[0]=Ledbuf[dtl%10];
display(cledtim);
}
static void ATStart(void)
{
sda=1;
cclk=0;
cclk=1;
sda=0;
cclk=0;
}
static void ATStop(void)
{
sda=0;
cclk=1;
sda=1;
}
void ATsWrite(unsigned char ch)
{
unsigned char i;
unsigned char temp;
ATdata=ch;
temp=ATdata;
for (i=0;i<8;i++)
{ temp&=0x80;
if(temp==0x80)
{sda=1;}
else {sda=0;}
cclk=1;
cclk=0;
temp=ATdata;
temp<<=1;
ATdata=temp;
}
cclk=1;
cclk=0;
}
unsigned char ATsRead(void)
{
unsigned char i;
unsigned char temp;
ATdata=0x00;
temp=0x00;
cclk=0;
for (i=0;i<8;i++)
{cclk=1;
if(sda==1){temp|=0x01;}
else {temp|=0x00;}
ATdata=temp;
temp<<=1;
cclk=0;
}
sda=0;
cclk=1;
cclk=0;
sda=1;
return ATdata;
}
unsigned int ATRead(unsigned char add,unsigned char cou)
{
unsigned int ret;
unsigned char rtim[2];
unsigned char i;
ATStart();
ATsWrite(0xA0);
ATsWrite(add);
ATStart();
ATsWrite(0xA1);
for(i=0;i<cou;i++){
rtim[i]=ATsRead();}
ATStop();
ret=rtim[1];
ret<<=8;
ret|=rtim[0];
return ret;
}
void ATWrite(unsigned char addr,unsigned int dat)
{
unsigned char subaddr;
unsigned char wdat,i;
unsigned int ATtemp,ATtemp1;
unsigned char tim[2];
ATtemp=dat;
ATtemp1=ATtemp;
tim[0]=ATtemp1;
ATtemp1&=0xff00;
ATtemp1>>=8;
tim[1]=ATtemp1;
subaddr=addr;
for(i=0;i<2;i++){
wdat=tim[i];
ATStart();
ATsWrite(0xA0); //0xa1
ATsWrite(subaddr);
ATsWrite(wdat);
ATStop();
Delay(10000);
subaddr+=1;}
}
void DA()
{ unsigned int i;
unsigned int temp;
unsigned int dad;
P33=1;
dad=0x0BB8;
temp=dad;
for(i=0;i<16;i++)
{P33=0;
aclk=0;
temp=temp&0x8000;
if (temp==0x8000)
{din=1;}
else{din=0;}
temp=dad;
temp=temp<<1;
aclk=1;
dad=temp;
}
Delay(500);
}
void main()
{unsigned char ad;
unsigned int da;
P1=0x00;
ad=0x00;
da=0x2592;
ATWrite(ad,da);
retdate=ATRead(ad,0x02);
DA();
for(;;)
{
computer(retdate);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -