解释下 第一句rGPFCON &= ~((3<败世<GPF0_CON)|(3<<GPF1_CON)
|(3<<GPF2_CON)|(3<<GPF4_CON))
意思是
1:0x03左移GPF0_CON 或上 0x03左移GPF1_CON 或上0x03左移GPF2_CON 或上0x03左移GPF4_CON这些值运算后 假设得到X
2:rGPFCON =rGPFCON &(~X) 这样 就间接的给 rGPFCON 赋值了
一般来说 想给寄存器 某档竖一位 置1 应该采用或运算
想给寄存器 某一位清零 应该采用与运算
举个一目了然的例子
将rGPFCON 第3位置1
rGPFCON |=1<<3 //rGPFCON 或 0000 1000
将rGPFCON 第3位清零
rGPFCON &=~(1<<3) //rGPFCON 与 1111 0111
这样应该能明白了吧
程序略混乱,没细看,提渣册含供点简单的思路://外部事件中断处理程序
void EXTIn_IRQ()
{
static u8 key_input_time = 0//按一下亮,按一下灭
//清中断标志位
if(!key_input_time ){
rGPBDAT=0 //点灯
}else{
rGPBDAT = 0xff //全灭如笑
}
key_input_time++
}
void main()
{
System_init() //初始时钟 中断 外设配置 IO等
while(1)
{姿袭
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)