单片机 的寄存器赋值 为 -1 是什么意思?

#include<ADuC834.h>//sfr定义用头文件//Delayroutine//延时用子程序voiddelay(inta){intlength;for(;a>... #include<ADuC834.h> //sfr定义用头文件

// Delay routine //延时用子程序
void delay(int a)
{
int length;
for(;a>0;a--)
{
length=10000;
while (length >=0)
length--;
}
}

void main(void)
{

PLLCON=PLLCON&0XF8; //CPU主频为12.58MHZ
SCON=SCON|0X50; //UART WORK IN MODE 2

RCAP2H=-1;
RCAP2L=-41; //使用定时器T2,产生9600的波特率

T2CON=T2CON|0X30; //设定定时器T2的工作方式
TR2=1; //开启定时器T2

for(;;)
{
SBUF='a'; //将要发送到串口的数据送入缓冲
for(;;)
{
if(SCON&0X02==0X02) //是否发送完毕
TI=0; //关串口接收中断
break; //退出查寻
}
delay(2); //延时
}

}

其中的RCAP2H=-1;
RCAP2L=-41;
是什么意思啊..

是不是这是补码
相当于
RCAP2H=FF;
RCAP2L=D7; ?
展开
 我来答
16减7等于11
2009-02-01 · TA获得超过497个赞
知道小有建树答主
回答量:193
采纳率:0%
帮助的人:176万
展开全部
给寄存器赋值-1,事实上就是将寄存器各位设为“1”,因为-1的补码就是全部是“1”。
箩筐筐
2009-02-01 · TA获得超过1119个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:402万
展开全部
RCAP2H、RCAP2的最高位是1。
实际上不是负数,这个写程序的估计是个不愿意让人读懂他程序的人,他是故意搅和的。对MCU的控制寄存器赋值,目的就是针对某个控制位赋值,从而实现某个控制功能。

比如 RCAP2L=-41;
实际就是 RCAP2L=0xA9;
我想他是故意把0xA9写成-41的。

你试试,效果应该一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sxrmq
2009-02-02 · 超过23用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:74.9万
展开全部
负数的补码是:取反加1
00000001取反为11111110
加1为11111111即0XFF
不同的编译器可能有所差异。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
顽健又通顺的小虎鲸
2009-02-03 · TA获得超过632个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:120万
展开全部
这就是补码的形式赋值,你说的不错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式