#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
?
原文:http://xouou.iteye.com/blog/2211780