打印

大家用过max5483吗?郁闷的问题!我用的主芯片为AT89C52

[复制链接]
1923|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-9-10 22:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
max5483单独控制正确,和max5481合在一起控制也正确,但是当我把这些程序移到我的主程序中后只有max5481正确,而max5481 、max5483他们的控制程序是一样的,为什么max5481正确,max5483就不正确呢?
#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define uint  unsigned int
sbit  MAX5481_CS18 = P1^5;
sbit  MAX5481_CS5  = P1^4;
sbit  MAX5481_SCLK = P1^6;
sbit  MAX5481_DIN  = P1^7;

//max5481
void max5481write(uchar direct,uchar data1,uchar data2);
void max5483write(uchar direct,uchar data1,uchar data2);
void main()
{
   
   while(1)
    {
         max5481write(0x00,0x56,0x00);
        max5483write(0x00,0x65,0xc0);
    }
}

//max5483
void max5483write(uchar direct,uchar data1,uchar data2)
{
    uchar i;
    MAX5481_SCLK = 0;
    MAX5481_CS18=0;
    for (i=0;i<8;i++)    //上升沿写入命令
    {
         MAX5481_SCLK =0;
       MAX5481_DIN = (bit)(direct&0x80);
       direct = direct<<1;
       MAX5481_SCLK =1;
       _nop_(); _nop_();
      
       
     }
    for (i=0;i<8;i++)    //上升沿写入数据
    {
      MAX5481_SCLK =0;
       MAX5481_DIN = (bit)(data1&0x80);
       data1 = data1<<1; 
       MAX5481_SCLK =1;
       _nop_(); _nop_(); 
 
    }
    //_nop_(); _nop_();
    for (i=0;i<8;i++)    //上升沿写入数据
    {
       MAX5481_SCLK =0;
       MAX5481_DIN = (bit)(data2&0x80);
       data2 = data2<<1;
       MAX5481_SCLK =1; 
       _nop_(); _nop_();
       
      
       // 
    }
    MAX5481_CS18=1;
}
//max5481
void max5481write(uchar direct,uchar data1,uchar data2)
{
    uchar i;
    MAX5481_SCLK = 0;
    MAX5481_CS5=0;
    for (i=0;i<8;i++)    //上升沿写入命令
    {
       MAX5481_SCLK =0;
       MAX5481_DIN = (bit)(direct&0x80);
       direct = direct<<1;
       
       MAX5481_SCLK =1; 
       _nop_();
     }
     _nop_();
    for (i=0;i<8;i++)    //上升沿写入数据
    {
       MAX5481_SCLK =0;
       MAX5481_DIN = (bit)(data1&0x80);
       data1 = data1<<1;
       
       MAX5481_SCLK =1;
        _nop_();
    }
    _nop_();
    for (i=0;i<8;i++)    //上升沿写入数据
    {
       MAX5481_SCLK =0;
       MAX5481_DIN = (bit)(data2&0x80);
       data2 = data2<<1;
       MAX5481_SCLK =1;
        _nop_();
    }
    MAX5481_CS5=1;
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝