基于c8051f310的mcp41010数字电位器驱动源码

#include "mcp41010.h"

void  MCP41010_init()
{
	//P2MDIN                      						// 上电默认 digital
	P2MDOUT = setBits(P2MDOUT,pin4|pin5|pin6|pin7);     // port2  4567  push-pull
}

#define  mcp_setCS()   {P2=setBits(P2,csx);}
#define  mcp_clCS()    {P2=clrBits(P2,csx);}
//cmd=0x11 电位器0 写数据模式
void MCP41010_writeData(u8 cmd,u8 dat,u8 csx)         
{
    u8 i;
    mcp_setCS(); 	_nop_();    //cs1 cs2 
    mcp_sck=1;
    mcp_sci=0; 
	mcp_clCS();   _nop_();
	mcp_sck=0;	  _nop_();

	for(i=0;i<8;i++)         
	{ 
		mcp_sci=getBit(cmd,7);
		_nop_();_nop_();
		mcp_sck=1; //data in
		_nop_();_nop_();
		mcp_sck=0; 
		cmd <<= 1;		_nop_();
	}
    
	for(i=0;i<8;i++)          
	{ 
		
		mcp_sci=getBit(dat,7);
		_nop_();_nop_();
		mcp_sck=1;
		_nop_();_nop_();
		mcp_sck=0;
		dat <<= 1; 		_nop_();
	}
	mcp_setCS(); 	_nop_();
}

 

 

#ifndef _MCP41010_H
#define _MCP41010_H
#include "sys51.h"

extern void MCP41010_writeData(u8 cmd,u8 dat,u8 csx);
extern void MCP41010_init();


//用了2个电位器,所以有csa,csb
sbit mcp_csa=P2^4;
sbit mcp_csb=P2^5;

sbit mcp_sck=P2^6;
sbit mcp_sci=P2^7;



#endif


 

你可能感兴趣的:(mcp41010)