📄 mcp41010.c.130220144100
字号:
#include<iom16v.h>
#define r_full 9340
#define cs_ddr DDRA
#define cs_port PORTA
#define sck_ddr DDRA
#define sck_port PORTA
#define si_ddr DDRA
#define si_port PORTA
#define cs 0x01
#define sck 0x02
#define si 0x04
void r_io_init(void)
{
cs_ddr|=cs;
sck_ddr|=sck;
si_ddr|=si;
cs_port|=cs;
sck_port&=~sck;
si_port&=~si;
}
void write_r(unsigned char cmd,unsigned char dat) //cmd=0x11:write data; cmd=0x31:cut off
{
unsigned char count=0;
sck_port&=~sck;//sck=0
si_port&=~si;//si=0
cs_port&=~cs;//cs=0
sck_port|=sck; //0
sck_port&=~sck;
sck_port|=sck; //1
sck_port&=~sck;
if(cmd&0x20)
si_port|=si;
else
si_port&=~si;
sck_port|=sck; //2
sck_port&=~sck;
if(cmd&0x10)
si_port|=si;
else
si_port&=~si;
sck_port|=sck; //3
sck_port&=~sck;
si_port&=~si;
sck_port|=sck; //4
sck_port&=~sck;
sck_port|=sck; //5
sck_port&=~sck;
if(cmd&0x02)
si_port|=si;
else
si_port&=~si;
sck_port|=sck; //6
sck_port&=~sck;
if(cmd&0x01)
si_port|=si;
else
si_port&=~si;
sck_port|=sck; //7
sck_port&=~sck;
for(count=0;count<8;count++)
{
if(dat&0x80)
si_port|=si;
else
si_port&=~si;
sck_port|=sck;
sck_port&=~sck;
dat=dat<<1;
}
cs_port|=cs;
}
void r_init(void)
{
r_io_init();
write_r(0x11,0x7f);
}
void set_r(unsigned int r)
{
float buf0=0;
unsigned char buf1=0;
buf0=r_full/255;
buf0=r/buf0;
buf1=(unsigned char)buf0;
write_r(0x11,buf1);
}
//main.c
void main(void)
{
r_init();
while(1)
{
set_r(4800);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -