下面是写的程序,粘到记事本里看,百度敬渣枯上显得乱。
/* ADS8344 */
#define uchar unsigned char
#define uword unsigned int
sbit ADS_SHDN =
sbit ADS_CS =
sbit ADS_DCLK =
sbit ADS_DIN =
sbit ADS_BUSY =
sbit ADS_DOUT =
// (MSB) (LSB)
// BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
// SA2 A1 A0 —SGL/DIF PD1 PD0
void ads_com(uchar ads_comchar)
{
uchar i=0
for (i=8i>0i--)
{
ADS_DIN = ads_comchar&0x80//取最高位
ADS_DCLK = 0
ADS_DCLK = 1
ads_comchar<<=1//左移数据
}
}
// (MSB)(LSB)
// BIT15 ...... BIT0
uword ads_dat(void)
{
uword ads_datword = 0
uchar i=0
for (i=16i>0i--)
{
ads_datword<<=1//左移数据
ADS_DCLK = 0
if(DOUT==1) ads_datword = ads_datword|0x01/亮洞/最低位或
ADS_DCLK = 1
}
return(ads_datword)
}
void main()
{
uword ADS_DataWord = 0
ADS_SHDN = 1
ADS_CS = 1
ADS_DCLK = 0
ADS_CS = 0
// SA2 A1 A0 —SGL/DIF PD1 PD0
// 1000— 1 11
ads_com(0x87)//10000111
ADS_DCLK = 0
ADS_DCLK = 1
while(ADS_BUSY == 1)
ADS_DataWord = ads_dat()
ADS_CS = 1
while(1)
}
我不是神人,但我希望可以帮你解决问题,呵呵……首先,我有个小问题,你要求算的是2+4+8+……+100,是不是2的1次方,2次方,3次方?如果是,那应该是2+4+8+16+32+64,怎么有还加100呢?或者你笔误,应该是2—100之间的偶数相加呢?
好,下面来解决你的问题:
1.用ADS1.2运行你的加法程序,要注意一点就是ADS不能直链接运行C遍出来的程序,要用汇编代码启动。下面是启动代码startup.s文件(我空间有关于这个代码的分析,你可以去看看):
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
IMPORT Main 声明C程序中的Main()函数
AREA Start,CODE,READONLY 声明代码段Start
ENTRY标识程序入口
CODE32声明32位ARM指令
Reset LDR SP,=0x40003F00
初始化C程序的运行环境
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0 CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2 CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
B Main 跳转到C程序代判差码Main()函数
END
2. 启动代码写好后,再编写C代码,运行你的程序(按你的意思算)
#define uint8 unsigned char //这两个宏定义是ADS里面防止数据溢迹冲好出带的
#define uint32 unsigned int
#define N 100
uint32 sum
// 使用加法运算来计算2+4+8+……+N的值。
void Main(void)
{ uint32 i
sum = 0
for(i=0i<=Ni=i*2)
{ sum += i
}
while(1)
}
3. 这两个程序合在一起才是是完整的ADS实现程序,希望可以解决你的困惑。姿铅
祝你进步!
,关键是ADS8341,感觉散伍TI的资料上面讲的也不是很详细对ADS8341写过控制字以后是不是ADS8341就直接开始连续AD转换了,并且不断向DSP发送转换结果,DSP接收携饥以后如辩掘返何区分是哪个通道的采样结果啊? DSP是否可以在需要的时候再读AD转换结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)