程序如下:
void RDAC_write(uchar rdac_value,uchar radc_choose)
{
uchar m;
_CLI();//关总中断
if(radc_choose==0)//根据rdac_choose的值为0写RDAC0,不为0则写RDAC1
{
CLR_BIT(PORTB,SDI);//向数据线写入00选择RDAC0
NOP();
NOP();
CLR_BIT(PORTB,CSI);
SET_BIT(PORTB,CLK);
NOP();
NOP();
CLR_BIT(PORTB,CLK);
NOP();
NOP();
SET_BIT(PORTB,CLK);
NOP();
NOP();
CLR_BIT(PORTB,CLK);
}
else
{
CLR_BIT(PORTB,SDI);//向数据线写入01选择RDAC1
NOP();
NOP();
CLR_BIT(PORTB,CSI);
SET_BIT(PORTB,CLK);
CLR_BIT(PORTB,CLK);
NOP();
NOP();
SET_BIT(PORTB,SDI);
NOP();
NOP();
SET_BIT(PORTB,CLK);
NOP();
NOP();
CLR_BIT(PORTB,CLK);
}
for(m=8;m>0;m--)//向数据线写入数据rdac_value
{
if(GET_BIT(rdac_value,m-1))
{
SET_BIT(PORTB,SDI);
NOP();
NOP();
SET_BIT(PORTB,CLK);
NOP();
NOP();
CLR_BIT(PORTB,CLK);
}
else
{
CLR_BIT(PORTB,SDI);
NOP();
NOP();
SET_BIT(PORTB,CLK);
NOP();
NOP();
CLR_BIT(PORTB,CLK);
}
}
SET_BIT(PORTB,CSI);//拉高片选,关闭写入
_WDR();
_SEI();//开总中断
}
这段程序,要在战舰上使用,怎么改。在下没学过AVR,初学ARM,求指教。 |