基于c8051f310的mcp41010数字电位器驱动源码
扫描二维码
随时随地手机看文章
C代码
#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_();
}
Java代码 收藏代码
#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