q.c

来自「这是一个和proteus结合的一用ds1032实现的例子」· C语言 代码 · 共 92 行

C
92
字号
#pragma small
#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char 

sbit ds1032_clk=P0^0;
sbit ds1032_dat=P0^1;
sbit ds1032_rst=P0^2;

sbit ACC_0=ACC^0;
sbit ACC_1=ACC^1;
sbit ACC_2=ACC^2;
sbit ACC_3=ACC^3;
sbit ACC_4=ACC^4;
sbit ACC_5=ACC^5;
sbit ACC_6=ACC^6;
sbit ACC_7=ACC^7;

  void clock_out(void)    //写ds1032操作
  {
   ds1032_dat=ACC_0;
   ds1032_clk=1;ds1032_clk=0;
   ds1032_dat=ACC_1;
   ds1032_clk=1;ds1032_clk=0;
   ds1032_dat=ACC_2;
   ds1032_clk=1;ds1032_clk=0;
   ds1032_dat=ACC_3;
   ds1032_clk=1;ds1032_clk=0;
   ds1032_dat=ACC_4;
   ds1032_clk=1;ds1032_clk=0;
   ds1032_dat=ACC_5;
   ds1032_clk=1;ds1032_clk=0;
   ds1032_dat=ACC_6;
   ds1032_clk=1;ds1032_clk=0;
   ds1032_dat=ACC_7;
   ds1032_clk=1;ds1032_clk=0;
  }


 uchar clock_in(void)
  { uchar i;
    for(i=8; i>0; i--)
    {
        ACC= ACC >>1;         /*相当于汇编中的 RRC */
        ACC_7=ds1032_dat;
        ds1032_clk=1;
        ds1032_clk=0;
    } 
    return(ACC); 
  }

  

 uchar read_clock(uchar ord)
       {uchar dd=0;
	    ds1032_clk=0;
		ds1032_rst=0;
		ds1032_rst=1;
		ACC=ord;
		clock_out();
		dd=clock_in();
		ds1032_rst=0;
		ds1032_clk=1;
		return(dd);
		}

  void write_clock(uchar ord,uchar dd)
       {ds1032_clk=0;
		ds1032_rst=0;
		ds1032_rst=1;
		ACC=ord;
		clock_out();
		ACC=dd;
		clock_out();
		ds1032_rst=0;
		ds1032_clk=1;
		}

void main()
 {uchar address,d;
  address=0; d=3;
  write_clock(0x80|address,d);
  address=2;d=5;
  write_clock(0x80|address,d);
  address=1; 
  d=read_clock(0x80|address);
  address=3;
  d=read_clock(0x80|address);
 }


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?