首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

100分简单的程序

2012-03-12 
100分求一个简单的程序一个芯片(炬力的ATT7022B)中的寄存器存有二进制数,地址是0x01~0x0c。现在要把这些地

100分求一个简单的程序
一个芯片(炬力的ATT7022B)中的寄存器存有二进制数,地址是0x01~0x0c。
现在要把这些地址里的二进制数依次读出来,再判断最高位。
最高位如果是0,则对该数除以2^8,
最高位如果是1,则对该数取反加1再除以2^8,

我是菜鸟,实在不知道该怎么写啊,高手们帮帮忙,小弟谢谢了啊

[解决办法]
type num; //这个是读取的数据num
int len=sizeof(num)*8; //计算数据的长度,即知道最高位是哪一位
if(num> > (1 < <len)) //判断最高位是否为1
num = (~num +1)> > 8; //如果是1,则对该数取反加1再除以2^8
else num = num> > 8; // 如果是0,则对该数除以2^8
[解决办法]
炬力的 嘿嘿
:)


这是读写一个字节, 你看看能不能用上

void static inline action_writeb(UINT8 val, unsigned long reg)
{
*(volatile UINT8 *)(reg) = val;
}

static inline UINT8 action_readb(unsigned long reg)
{
return (*(volatile UINT8 *)reg);
}
[解决办法]
大概是这样的,没有测试的:
#define start 0x01
void main()
{

char number[12];
for(int i=0;i <12;i++)
{
number[i]=*(volatile unsigned char *)(start+i);
if(number[i]&(0x1 < <7))
printf( "%d\n ", (int)(!number[i]+1)/2^8);
else
printf( "%d\n ", number[i]/2^8);
}

热点排行