专栏中心

EEPW首页 > 专栏 > 1302

1302

发布人:0750long 时间:2010-02-02 来源:工程师 发布文章
1302

 

 

#include<intrins.h>    
#include<reg52.h>
#include<absacc.h>
#define uint unsigned int
#define uchar unsigned char

/*************************ds1302与at89s52引脚连接********************/
sbit T_RST=P3^5;
sbit T_CLK=P3^7;                
sbit T_IO=P3^6;
sbit dula="P2"^6;
sbit wela="P2"^7;               
              
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};         //0~~9段码
/******************DS1302:写入操作(上升沿)*********************/
void write_byte(unsigned char da)
{
   unsigned char i;
   ACC="da";
   for(i=8;i>0;i--)
   {
      T_IO=ACC0;
   T_CLK=0;    
      T_CLK=1;
      ACC="ACC">>1;
   }
}

/******************DS1302:读取操作(下降沿)*****************/
unsigned char read_byte(void)
{
   unsigned char i;
   for(i=0;i<8;i++)
   {
      ACC="ACC">>1;
   T_CLK = 1;
   T_CLK = 0;
      ACC7 = T_IO;
   }
   return(ACC);

}

/******************DS1302:写入数据(先送地址,再写数据)***************************/
void write_1302(unsigned char addr,unsigned char da)
{
   T_RST=0;    //停止工作
   T_CLK=0;                                
   T_RST=1;   //重新工作
   write_byte(addr);    //写入地址
  
   write_byte(da);
   T_RST=0;
   T_CLK=1;
}

/******************DS1302:读取数据(先送地址,再读数据)**************************/
unsigned char read_1302(unsigned char addr)
{
   unsigned char temp;
   T_RST=0;                                   //停止工作
   T_CLK=0; 
   T_RST=1;                         //重新工作
   write_byte(addr);   //写入地址
   temp="read"_byte();
   T_RST=0;
   T_CLK=1;     //停止工作
   return(temp);
}

 

 

/***********************延时程序=a*1ms**************************************/
void delay(unsigned char a)
{
   unsigned char i;
   while(a-- !=0)
   {
        for(i=0;i<125;i++);
   }
}

void display(uchar *poi)
{
 dula=0;
    P0=table[*poi%16];  
 dula=1;
 dula=0;
 
 wela=0;
 P0=0xdf;
 wela=1;
 wela=0;
 delay(2);

 dula=0;
 P0=table[*poi/16];
 dula=1;
 dula=0;
 
 wela=0;
 P0=0xef;
  wela=1;
 wela=0;
 delay(2);
 
 poi++;

 dula=0;
 P0=table[*poi%16]|0x80;  
 dula=1;
 dula=0;
 
 wela=0;
 P0=0xf7;
 wela=1;
 wela=0;
 delay(2);

 dula=0;
 P0=table[*poi/16];
 dula=1;
 dula=0;
 
 wela=0;
 P0=0xfb;
  wela=1;
 wela=0;
 delay(2);
 
 poi++;

 dula=0;
 P0=table[*poi%16]|0x80;  
 dula=1;
 dula=0;
 
 wela=0;
 P0=0xfd;
 wela=1;
 wela=0;
 delay(2);

 dula=0;
 P0=table[*poi/16];
 dula=1;
 dula=0;
 
 wela=0;
 P0=0xfe;
  wela=1;
 wela=0;
 delay(2);
}

/************************主程序**********************************************/
void main(void)
{
   uchar clk_time[3]={0x00,0x00,0x12};  //秒,分,时寄存器初始值
   uchar  temp="0x80";         
   uchar i,j;
   write_1302(0x8e,0x00);             //WP=0 写操作
   for(i=0;i<3;i++)
   {
     write_1302(temp,clk_time[i]);
     temp+=2;
   }
   write_1302(0x8e,0x80);             //WP=1 写保护
   while(1)
   { 
 for(j=0;j<10;j++)
      display(clk_time);
   temp="0x81";                   
      for(i=0;i<3;i++)
    {
      clk_time[i]=read_1302(temp);
   temp+=2;
   }
    }
}

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

选择复用ADC时要做出正确的选择

ZLG-GUI 图形用户界面

μCOS-Ⅱ在EP7312上的移植

了解你的安全应用说明(第一部分):失效率

Spansion公司战略产品营销副总裁Robert France 访谈

视频 2011-11-18

向量通过RocqStat采集增强时序分析

人工智能热潮中半导体市场的警示信号

2026年中国机器人竞赛将加剧

机器人 2026-01-22

Microsoft CEO表示,人工智能需要产生更广泛的影响,否则它将面临迅速失去“社交许可”的风险——同时还表示,这项技术应惠及更多人以避免泡沫

英飞凌与HL Klemove在软件定义车辆平台上保持一致

μCOS-II在S3C44BOX处理器上的移植

据报道,英伟达提升了Vera Rubin的性能,以阻止超大规模开发者依赖AMD Instinct AI加速器——提升的加速时钟和内存带宽将功率需求提升500瓦,达到2300瓦

CANape 内核旨在实现桌面之外的可扩展数据采集

Vicor更高密度 - 电源在更小的空间容纳更多功能

YM12864R[中文]

超过一半的CEO表示迄今未见AI部署带来的益处——只有12%的企业领导者中了更高的收入和降低成本的头奖

中国芯工程

视频 2011-12-13

高准确度温度监视器产品在仪器仪表方面的应用

R&S 信号与频谱分析仪 FSW

ZLGISP

更多 培训课堂
更多 焦点
更多 视频

技术专区