专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

进制位(CY)与数据左、右移动

作者:佚名   来源:本站原创   点击数:  更新时间:2013年12月12日   【字体:

1、图
2、代码
3、小结

 


  代  码
 
#include <reg52.h>
sbit led=P2^0;
sbit led2=P2^1;
void DelayUs2x(unsigned char t)
{  
 while(--t);
}
void DelayMs(unsigned char t)
{
    
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
DelayUs2x(245);
 }
}
/*以下函数就是反转扫描的精华*/
unsigned char jpsm() //矩阵键盘反转扫描
{
unsigned char i=0; //用于接收按键数值
P0 = 0x0f; //检测低4位
if(0x0f != P0) //检测按键是否按下
{
DelayMs(10); //去抖
if(0x0f != P0) //在次判断按键是否真的按下而不是其他干扰
{
i = P0; //把低4位赋值给i
P0 = 0xf0; //检测高4位
DelayUs2x(5); //稍微延时。。这条语句可以去掉
i = i | P0; //把低4位和高4位组合成完整的按键数值
while( 0xf0 != P0 ) //检测按键是否松开
{
;
}
return i; //返回按键数值
}
}
return 0; //按键没有按下返回0
}

void main()
{
unsigned char i=0xaa;
while(1)
{
if(126 ==jpsm()) //判断按键1是否按下
{
/*i <<= 1; //注:在Keil编译器中不管是左移还是右移,移出的数据都是放在CY中
led = CY;*/
i >>=1;
led = CY;
        }

}


小结
1、什么是进制位
    答:就是保存进位的。

关闭窗口

相关文章