基于c8051f310的mcp41010数字电位器驱动源码
程序员文章站
2022-06-01 14:29:10
...
#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