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

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

   jwp11 
jwp11发表的帖子 

 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_();
}


发表时间:2004年4月13日10:05:31

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:仙人指路我用VC6.0写了以下三个文件saa.h, faa.c,abc.c: sa
[下一篇帖子]:小提示:如果你的ADC满度输入是Vin,ADC是n位,则ADC的分辨率为D,于是: D=Vi