📄 d.c
字号:
#include <reg52.h>
#include <absacc.h>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
unsigned char code Tab[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40,0x00};
unsigned char code Tabc[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbit Dat=P1^0;
sbit G=P1^1;
sbit SCK=P1^2;
sbit rck=P1^3;
sbit readkey=P1^4;
sbit scs= P1^5;
sbit beer=P2^0;
#define REG_A XBYTE[0x030A]
#define REG_B XBYTE[0x030B]
#define REG_C XBYTE[0x030C]
#define REG_D XBYTE[0x030D]
uchar xdata *DS12887=0x0300;
uchar code PIAN_YI[6]={9,8,7,4,2,0 };/*-- 年、月、日、时、分、秒-- */
uchar idata DS12887_time[6]={8,12,6,8,32,10};/*----- 06/5/29 14:03:10 -----*/
uchar c,v,*p,k,k1,k2,k3,k4,dao[6];
uchar idata Time[10];/*-----提取时间各个位数据-----*/
void delay()
{
uchar i,j,k;
for(i=2;i>0;i--)
for(j=3;j>0;j--)
for(k=100;k>0;k--);
}
void delay_10()
{
uchar i,j,k;
for(i=20;i>0;i--)
for(j=30;j>0;j--)
for(k=240;k>0;k--);
}
void out(void)
{
rck=0;
_nop_();
rck=1;
}
void send_num(uchar num)
{
uchar j;
for(j=0;j<8;j++)
{
SCK=0;
Dat=num&0x80;
SCK=1;
num=num<<1;
}
SCK=0;
}
uchar seat(uchar j,uchar i,uchar k)
{
uchar num,a;
G=1;
num=Tab[j];
send_num(Tab[k]);
send_num(num);
a=Tabc[i];
send_num(a);
G=0;
out();
delay();
if(readkey==0&&a==Tabc[0])
return 1;
if(readkey==0&&a==Tabc[1])
return 2;
if(readkey==0&&a==Tabc[2])
return 3;
if(readkey==0&&a==Tabc[3])
return 4;
}
void DS12887_Set0(void ) // 设置初始化时间
{
uchar idata i;
REG_B=0x86;
for(i=0;i<6;i++)
{
*(DS12887+PIAN_YI[i])=DS12887_time[i];
}
}
void DS12887_Read(void)// 读取实时时间
{
uchar idata k,i;
do
{
k=REG_A;
}while(k&0x80);
for(i=0;i<6;i++)
{
DS12887_time[i]=*(DS12887+PIAN_YI[i]);
}
}
void set_p(uchar a,uchar j)
{
if( *(DS12887+a)+1>=0&&*(DS12887+a)+1<j)
{
*(DS12887+a)=*(DS12887+a)+1;
}
}
void set_m(uchar a,uchar j)
{
if( *(DS12887+a)-1>=0&&*(DS12887+a)-1<j)
{
*(DS12887+a)=*(DS12887+a)-1;
}
}
void change_0()
{
uchar i,j,m,n,s,add=2;
uchar k;
REG_A=0;
if(k==1)
add=2;
if(k==2)
add=4;
for(i=80;i>0;i--)
{
if(k1==1)
{
s++;
if(s==20)
{
k++;
s=0;
}
/
if(k==3)
{
c=0;
REG_A=0x20;
k=0;
}
}
k1=seat(Time[11],0,dao[0]);
k2=seat(Time[10],1,dao[1]);
k3=seat(10,2,10);
k4=seat(Time[9],3,dao[2]);
seat(Time[8],4,dao[3]);
seat(10,5,10);
seat(Time[7],6,dao[4]);
seat(Time[6],7,dao[5]);
if(k2==2)
{
m++;
if(m==23)
{
set_p(add,60);
m=0;
}
}
if(k3==3)
{
n++;
if(n==23)
{
set_m(add,60);
n=0;
}
}
}
for(j=80;j>0;j--)
{
if(k1==1)
{
s++;
if(s==20)
{
k++;
s=0;
}
if(k==3)
{
c=0;
REG_A=0x20;
k=0;
}
}
k1=seat(Time[11],0,dao[0]);
k2=seat(Time[10],1,dao[1]);
k3=seat(10,2,10);
seat(10,5,10);
if(k==1)
{
k4=seat(11,3,dao[2]);
seat(11,4,dao[3]);
seat(Time[7],6,dao[4]);
seat(Time[6],7,dao[5]);
}
if(k==2)
{
k4=seat(Time[9],3,dao[2]);
seat(Time[8],4,dao[3]);
seat(11,6,dao[5]);
seat(11,7,dao[6]);
}
if(k!=1&&k!=2)
{
k4=seat(Time[9],3,dao[2]);
seat(Time[8],4,dao[3]);
seat(Time[7],6,dao[4]);
seat(Time[6],7,dao[5]);
c=0;
REG_A=0x20;
k=0;
}
if(k2==2)
{
m++;
if(m==23)
{
set_p(add,60);
m=0;
}
}
if(k3==3)
{
n++;
if(n==23)
{
set_m(add,60);
n=0;
}
}
}
}
void read_timebit()
{
DS12887_Read();
Time[0]=DS12887_time[0]/10;//年十位0~9
Time[1]=DS12887_time[0]%10;//年个位0~9
Time[2]=DS12887_time[1]/10;//月十位0~1
Time[3]=DS12887_time[1]%10;//月个位0~9
Time[4]=DS12887_time[2]/10;//日十位0~3
Time[5]=DS12887_time[2]%10;//日个位0~9
Time[6]=DS12887_time[3]/10;//时十位0~2
Time[7]=DS12887_time[3]%10;//时个位0~9
Time[8]=DS12887_time[4]/10;//分十位0~5
Time[9]=DS12887_time[4]%10;//分个位0~9
Time[10]=DS12887_time[5]/10;//秒十位0~5
Time[11]=DS12887_time[5]%10;//秒个位0~9
}
void set_dao(uchar a)
{
uchar x,y;
if(k2==2)
{
x++;
if(x==23)
{
*p++;
x=0;
if(*p==10)
{
*p=0;
*(p+a)++;
if(*(p+a)>5)
{
*(p+a)=5;
*p=9;
}
}
}
}
if(k3==3)
{
y++;
if(y==23)
{
*p--;
y=0;
if(*p==-1)
{
*p=9;
*(p+a)--;
if(*(p+a)<0)
{
*(p+a)=0;
*p=0;
}
}
}
}
}
void get_dao()
{
uchar i,m,a;
REG_B=0x26;
for(i=80;i>0;i--)
{
read_timebit();
k1=seat(Time[11],0,dao[0]);
k2=seat(Time[10],1,dao[1]);
k3=seat(10,2,10);
k4=seat(Time[9],3,dao[2]);
seat(Time[8],4,dao[3]);
seat(10,5,10);
seat(Time[7],6,dao[4]);
seat(Time[6],7,dao[5]);
if(k4==4)
{
m++;
if(m==20)
{
k++;
m=0;
}
if(k==3)
{
REG_B=0x36;
k=0;
v=0;
}
}
if(k==1)
a=0;
if(k==2)
a=2;
if(k==3)
a=4;
set_dao(a);
}
for(i=80;i>0;i--)
{
read_timebit();
k3=seat(10,2,10);
seat(10,5,10);
if(k==0)
{
k1=seat(Time[11],0,11);
k2=seat(Time[10],1,11);
k4=seat(Time[9],3,dao[2]);
seat(Time[8],4,dao[3]);
seat(Time[7],6,dao[4]);
seat(Time[6],7,dao[5]);
// set_dao(b0,b1,5);
}
if(k==1)
{
k1=seat(Time[11],0,dao[0]);
k2=seat(Time[10],1,dao[1]);
k4=seat(Time[9],3,11);
seat(Time[8],4,11);
seat(Time[7],6,dao[4]);
seat(Time[6],7,dao[5]);
}
if(k==2)
{
k1=seat(Time[11],0,dao[0]);
k2=seat(Time[10],1,dao[1]);
k4=seat(Time[9],3,dao[2]);
seat(Time[8],4,dao[3]);
seat(Time[7],6,11);
seat(Time[6],7,11);
}
if(k!=0&&k!=1&&k!=2)
{
k1=seat(Time[11],0,dao[0]);
k2=seat(Time[10],1,dao[1]);
k4=seat(Time[9],3,dao[2]);
seat(Time[8],4,dao[3]);
seat(Time[7],6,dao[4]);
seat(Time[6],7,dao[5]);
}
if(k4==4)
{
m++;
if(m==20)
{
k++;
m=0;
}
if(k==3)
{
REG_B=0x36;
k=0;
v=0;
}
}
if(k==1)
a=0;
if(k==2)
a=2;
if(k==3)
a=4;
set_dao();
}
}
void main (void)
{
uchar add=2,m,n;
p=&dao[0];
EA=1;
EX0=1;
scs=0;//DS12887片选--0有效
// DS12887_Set0();
REG_A=0x20;
REG_B=0x26;
while(1)
{
read_timebit();
if(k1==1)
{
m++;
if(m==23)
{
c++;
m=0;
}
}
if(k4==4)
{
n++;
if(n==23)
{
v++;
n=0;
}
}
if(c==1)
change_0();
if(v==1)
get_dao();
k1=seat(Time[11],0,dao[0]);
k2=seat(Time[10],1,dao[1]);
k3=seat(10,2,10);
k4=seat(Time[9],3,dao[3]);
seat(Time[8],4,dao[4]);
seat(10,5,10);
seat(Time[7],6,dao[6]);
seat(Time[6],7,dao[7]);
}
}
void interrupt0(void) interrupt 0
{
uchar a;
if(dao[0]<=0)
dao[0]=10;
dao[0]--;
a= REG_C;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -