智能车制作

标题: 哪位给解释下这小段程序 [打印本页]

作者: woruoweiwang    时间: 2013-8-11 20:10
标题: 哪位给解释下这小段程序
void Init_PORT(void)//接口初始化
{
    DDRT&=~(1<<SIGNAL);
    PERT|=(1<<SIGNAL);//编码器脉冲累加器口为输入,上拉有效。其他口没作用。
    PPST&=~(1<<SIGNAL);//T口是输入,上啦电阻全部有效(如果作为外部输入口,要读取PTIT)?
    //数据寄存器是PTT




左移有什么作用吗?像这种左移、右移的写法,怎么看着这么不顺眼呢


作者: 机遇    时间: 2013-8-11 20:41
上面有使该位置一或者置零
作者: woruoweiwang    时间: 2013-8-11 21:01
机遇 发表于 2013-8-11 20:41
上面有使该位置一或者置零

那要是把原来的二进制数左移一位,不就相当于是把该置一的位置零了,把该置零的位置一了吗?置位为什么不用****=0x00,这种形式置位呢

作者: 宫野明美    时间: 2013-8-11 23:54
SIGNAL是指相应的位,比如他为6,1<<SIGNAL的意思是将0000000000000001H左移6位,则得到0000000000100000H取反之后再和DDRT本身的值相与,结果会使DDRT的第六位变为零,而其他位的值保持原来的不变
作者: Neozoic    时间: 2013-8-12 10:16
这种写法方便调用,给某一位置零或者置一都比较方便,而且是保证其他位不会被改变。设想你要是改变一个16位寄存器的某几位,是不是改变其中的某些位,想要用十六进制操作的话,就要运算好一会儿,浪费时间。
作者: woruoweiwang    时间: 2013-8-12 19:14
Neozoic 发表于 2013-8-12 10:16
这种写法方便调用,给某一位置零或者置一都比较方便,而且是保证其他位不会被改变。设想你要是改变一个16位 ...

嗯,是这么回事,谢谢了

作者: Neozoic    时间: 2013-8-13 08:54
woruoweiwang 发表于 2013-8-12 19:14
嗯,是这么回事,谢谢了

不客气,好好加油





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2