找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2949|回复: 0
收起左侧

帮忙看CS5463程序 是否正确

[复制链接]
ID:148777 发表于 2017-9-16 19:36 | 显示全部楼层 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,a;
uchar x;uchar y;uchar z;
uchar code table[]="Voltage Current Power";
sbit SD0=P0^1;
sbit INT=P0^0;
sbit SCLK=P0^5;
sbit SDI=P0^3;
sbit CS=P0^4;
sbit RESET=P0^2;
void Delay(uchar k)
{
  uchar i,j;
  for(i=0;i<k;i++)
  for(j=0;j<100;j++);
}
void CS5463Init(void)
{
uchar i;
  RESET=1;Delay(5);
  RESET=0;Delay(5);
  RESET=1;
  SDI=0;
  SCLK=0;
  CS=0;Delay(5);                                          
  SDI=1;
  for(i=0;i<32;i++)
  {
    SCLK=1;Delay(2);
        SCLk=0;Delay(2);
  }
  SDI=0;Delay(2);
  SCLK=1;Delay(2);
  SCLK=0;
}

void CS5463Write(uchar com,uchar dat1,uchar dat2,uchar dat3)
{
  uchar o,p,r,q;
        SCLK=0;
        for(o=0;o<8;o++)
        {
          SDI=(bit)(com&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                com<<=1;
               
        }
       
        for(p=0;p<8;p++)
        {
          SDI=(bit)(dat1&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                dat1<<=1;
        }
        for(q=0;q<8;q++)
        {
          SDI=(bit)(dat2&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                dat2<<=1;
        }
        for(r=0;r<8;r++)
        {
          SDI=(bit)(dat3&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                dat3<<=1;
        }
}

uchar CS5463Read(uchar coml,uchar x,uchar y,uchar z)
{
uchar s,t,u,v,f=0xfe,g=0xfe,h=0xfe;
        SCLK=0;
        for(s=0;s<8;s++)
        {
          SDI=(bit)(coml&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                coml<<=1;
               
        }
        for(t=0;t<8;t++)
        {
          SDI=(bit)(f&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                f<<=1;x<<=1;
                x|=(uchar)SD0;
        }
        return (x);
        for(u=0;u<8;u++)
        {
          SDI=(bit)(g&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                g<<=1;y<<=1;
                y|=(uchar)SD0;
        }
        return (y);
        for(v=0;v<8;v++)
        {
         SDI=(bit)(h&0x80);
                SCLK=0;
                Delay(2);
                SCLK=1;
                Delay(2);
                h<<=1;z<<=1;
                z|=(uchar)SD0;
        }
        return (z);
       
}

void ComInit()
{
  TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        SM0=0;
        SM1=1;
        TR1=1;
        REN=1;
        EA=1;
        ES=1;
}

void send(uchar m,uchar b)
{
  uchar l;
        if(flag==1)
        {
          ES=0;flag=0;
                for(l=0;l<m;l++)
                {
                  SBUF=TAB[1];
                        while(!TI);
                        Ti=0;               
                }
                SUBF=b;
                while(!TI);
                TI=0;
                SBUF=a;
                while(!TI);
                TI=0;
                ES=1;
        }
}


void main()
{
  while(1)
  {
        ComInit();
    CS5463Init();
        CS5463Write(0x5e,0x80,0x00,0x00);
        CS5463Write(0x40,0x00,0x00,0x01);
        CS5463Write(0x4a,0x00,0x0f,0xa0);
        CS5463Write(0x74,0x00,0x00,0x00);
        CS5463Write(0x64,0x80,0x00,0x01);
        CS5463Read(0xe8,x,y,z);
        CS5463Read(0x10,x,y,z);
        send(22,z);
        send(22,y);
        send(22,z);
  }
}

void Srei() interrupt 4
{
  RI=0;
  P1=SBUF;
  a=SBUF;
  flag=1;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表