文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>关于对配置多功能的端口时先清零再置位的思考

关于对配置多功能的端口时先清零再置位的思考

时间:2009-06-22  来源:creatory

关于对配置多功能的端口时先清零再置位的思考
GPFCON在配置时可以选择多种功能,例如:
GPF0 [1:0] 00=Input 01=Output 10=EINT0 11=Reserved
如果想将GPF0配置成EINT0的形式,不能直接这样写:
GPFCON |=0x2;
试想一下,如果此时GPFCON=xxxx,xxxx,xxxx,xx11
而我们这样执行GPFCON |=0x2时就会产生:
GPFCON=xxxx,xxxx,xxxx,xx11
这样使得GPF0被配置成Reserved,这样程序就会出错。
所以我们必须先将要配置的位域清零,然后再进行操作
即:GPFCON = (GPFCON & (~0x3))|0x2;
即:0x3=0000,0000,0000,0011
 ~0x3=1111,1111,1111,1100
GPFCON & (~0x3)这样会将低两位清零,其他位保持不变
如此一来,假设我们要使用EINT0,EINT2,则可以这样做,
首先将GPFCON[1:0]和[5:4]清零然后再设置
[1:0]=00 -> ~0x3
[5:4]=00 -> ~(0x3<<4)
GPFCON &=(~0x3)|(~(0x3<<4))
[1:0]=10 -> 0x2 或 1<<1
[5:4]=10 ->0010,0000 0x20或1<<5
GPFCON |=(1<<1)|(1<<5)
合起来就是
GPFCON=(GPFCON & ((~0x3)|(~0x3<<4)))|(1<<1)|(1<<5);
相关阅读 更多 +
排行榜 更多 +
空中跑酷汉化版

空中跑酷汉化版

赛车竞速 下载
修仙传说

修仙传说

角色扮演 下载
魔界零之迷宫

魔界零之迷宫

冒险解谜 下载