📄 note2.c.bak
字号:
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define MCA XBYTE[0XFF0A]
#define MCB XBYTE[0XFF0B]
#define MCC XBYTE[0XFF0C]
#define MCD XBYTE[0XFF0D]
sbit cs=P1^2;
sbit WR=P1^3;
sbit RD=P1^4;
char xdata *dis=0xFF00; //寄存器首地址
char code dis_7[10]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x08,0x09}; //0~9
char disp[12]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //送入数码显示的数据
char stat1[12]; // 处理后的数据
char stat[6]; //初始化时钟数据
char at[6]={0,2,4,7,8,9}; //时钟寄存器
void delay(unsigned int t) //1ms的延时子程序
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
void start(void) //程序初始化
{
//char i;
MCA=0X20; //开启振动
MCB=0X72; //设置DS12887工作状态
SCON=0X00;
cs=0; //片选DS12887
P13=1;
RD=0;
}
void wrCM() //写函数
{
char i;
MCB=0x80; //芯片停止工作,准备初始化
for(i=0;i<6;i++) //初始化时钟
*(dis+at[i])=stat[i];
MCB=MCB&0X7F;
}
void rCM() //读函数
{
char i;
while(MCA&0x80==0x80); //等待时间准备更新完毕
for(i=0;i<6;i++) //更新时间
stat[i]=*(dis+at[i]);
}
test() //数据处理函数
{
char i;
stat1[1]=stat[0]>>4;
stat1[0]=stat[0]&0x0f;
stat1[3]=stat[1]>>4;
stat1[2]=stat[1]&0x0f;
stat1[5]=stat[2]>>4;
stat1[4]=stat[2]&0x0f;
stat1[7]=stat[3]>>4;
stat1[6]=stat[3]&0x0f;
stat1[9]=stat[4]>>4;
stat1[8]=stat[4]&0x0f;
stat1[11]=stat[5]>>4;
stat1[10]=stat[5]&0x0f;
for(i=0;i<12;i++)
{
disp[i]=dis_7[stat1[i]];
}
}
scan() //显示函数
{
char i;
for(i=0;i<6;i++)
{
SBUF=disp[i];
while(!TI);
TI=0;
}
delay(5);
}
main() //主函数!
{
start(); //初始化
wrCM() ; //写入初始时间数据
rCM(); //读出更新时间
test(); //数据处理
scan(); //送入数码管显示
while(1)
{
rCM(); //读出更新时间
test(); //数据处理
scan(); //送入数码管显示
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -