⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 note2.c.bak

📁 基于远程遥控的挂钟,ds12c877 基于远程遥控的挂钟,ds12c8
💻 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 + -