一、范例
void key_proc()
{
switch(uckey_read())
{
case 0x10:
ucled <<=1;
if(ucled==0x10)
ucled=0x01;
break;
case 0x20:
ucled >>=1;
if(ucled==0x00)
ucled=0x08;
}
P0=~ucled;
}
二、解析
switch(uckey_read())
中uckey_read()
调用按键读取函数。case 0x10:
,case 0x20:
判断SW按键按下状态:(1)SW1按下时由按键读取函数返回的数值为0x10 二进制表示为
0001 0000
(2)SW2按下时由按键读取函数返回的数值为0x20 二进制表示为
0010 0000
ucled <<=1;
,ucled >>=1;
使用双目位移运算符控制LED实现流水灯效果。<<
在双目位移运算符中代表左移,>>
在双目位移运算符中代表右移。-
if(ucled==0x10) //如果LED4亮后 ucled=0x01; //LED1点亮 if(ucled==0x00) //如果LED1亮后 ucled=0x08; //LED4点亮
流水灯点循环点亮4个灯后,重载LED点亮状态
P0=~ucled;
代码中以1为点亮状态0为熄灭状态与单片机逻辑相反,翻转二进制数值是单片机可以正常识别。
没有回复内容