导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→ds12887 走的巨慢  十几秒才动一下(付c51代码) [jwp11]

 *第20947篇: ds12887 走的巨慢 十几秒才动一下(付c51代码) 请指点 bow

  
楼 主:jwp11 2004年4月13日10:05
 ds12887 走的巨慢  十几秒才动一下(付c51代码) 请指点  bow
#include  <reg52.h>  
#include  <absacc.h>  
#include  <intrins.h>  
#define uchar unsigned char 
#define DSA XBYTE[0xff0a]        //寄存器A
#define DSB XBYTE[0xff0b]        //寄存器B
#define DSC XBYTE[0xff0c]        //寄存器C
#define DSD XBYTE[0xff0d]        //寄存器D
sbit uip_bit=ACC^7;
uchar data date[6]={4,4,12,8,59,0};                //时
间输入和输出数组
uchar data at[6]={9,8,7,4,2,0};                    
    //设置年月日的偏移量
uchar xdata *ds_addr=0xff00;     //寄存器开始地址


void start_ds(void)              //功能设置,开始计算时间
{
  DSA=0x20;                      //选择时钟32.768kHz,无中断
  ACC=DSC;                       //清除中断
  ACC=DSD;                       //vrt=1,数据有效
  DSB=0x06;                      //无中断,时标为bcd码。24小时制,芯片工作,06
是二进制输出,02是bcd输出
}


void w_ds(void)               //设置状态函数
{
    uchar i;
    DSB=0x80;                   //设置set为1
    for(i=0;i  <6;i++)
      *(ds_addr+at[i])=date[i];
}  

void r_ds(void)              //输出时间函数
{
  uchar i;
  do{ACC=DSA;}while (uip_bit);   //判断UIP位,为0时才可以读出数据
  for(i=0;i  <6;i++)
    date[i]=*(ds_addr+at[i]);
}

 
void main(void)
{
    P1=0x0D;            //ls138(0x05);                 //12
887片选选中
       w_ds();
       start_ds();
       while(1)
    {
       _nop_();
       r_ds();
    _nop_();
    }
   _nop_();
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:仙人指路

[下一篇主题]:请教关于PIC与A/D通信的资料