📄 d.c
字号:
#include <reg52.h>
#include <absacc.h>
#include "intrins.h"
#include <dis.h>
#define uchar unsigned char
#define uint unsigned int
#define REG_A XBYTE[0x030A]
#define REG_B XBYTE[0x030B]
#define REG_C XBYTE[0x030C]
#define REG_D XBYTE[0x030D]
uchar tabwei1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar xdata *DS12887=0x0300;
uchar code PIAN_YI[6]={9,8,7,4,2,0 };/*-- 年、月、日、时、分、秒-- */
uchar idata DS12887_time[6]={8,12,6,20,27,00};/*----- 06/5/29 14:03:10 -----*/
uchar idata Time[20];/*-----提取时间各个位数据-----*/
//uchar key;
void delay()
{
uchar i,j,k;
for(i=2;i>0;i--)
for(j=3;j>0;j--)
for(k=60;k>0;k--);
}
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 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 dis_play()
{
read_timebit();
mydisplay(0,Time[6]);
delay();
mydisplay(1,Time[7]);
delay();
mydisplay(2,10);
delay();
mydisplay(4,Time[9]);
delay();
mydisplay(3,Time[8]);
delay();
mydisplay(5,10);
delay();
mydisplay(7,Time[11]);
delay();
mydisplay(6,Time[10]);
delay();
}
uint scankey()
{
uchar i;
tabwei1[i];
//sendshur(10);
//sendshul(10);
if((readkey==0)&&(tabwei1[i]==0x01))
{
return 1;
}
if((readkey==0)&&(tabwei1[i]==0x02))
{
return 2;
}
i++;
if(i==8)
i=0;
}
void shanshuo_dis1()
{
read_timebit();
mydisplay(0,11);
delay();
mydisplay(1,11);
delay();
mydisplay(2,10);
delay();
mydisplay(4,Time[9]);
delay();
mydisplay(3,Time[8]);
delay();
mydisplay(5,10);
delay();
mydisplay(7,Time[11]);
delay();
mydisplay(6,Time[10]);
delay();
}
void shanshuo_dis2()
{
read_timebit();
mydisplay(0,Time[6]);
delay();
mydisplay(1,Time[7]);
delay();
delay();
mydisplay(2,10);
delay();
mydisplay(4,11);
delay();
mydisplay(3,11);
delay();
mydisplay(5,10);
delay();
mydisplay(7,Time[11]);
delay();
mydisplay(6,Time[10]);
delay();
}
void shanshuo1()
{
uchar j,i,t,n;
while(t==0)
{
for(i=60;i>0;i--)
{
dis_play();
}
for(j=60;j>0;j--)
{
shanshuo_dis1();
}
n=scankey();
if(n!=0)
t=2;
}
}
void shanshuo2()
{
uchar j,i,t,n;
while(t==0)
{
for(i=60;i>0;i--)
{
dis_play();
}
for(j=60;j>0;j--)
{
shanshuo_dis2();
}
n=scankey();
if(n!=0)
t=2;
}
}
void main (void)
{
uchar k,key;
REG_A=0x20;
REG_B=0x26;
while(1)
{
dis_play();
key=scankey();
if(key==2)
{
k++;
if(k==1)
shanshuo1();
else
shanshuo2();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -