專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

進(jìn)制位(CY)與數(shù)據(jù)左、右移動(dòng)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月12日   【字體:

1、圖
2、代碼
3、小結(jié)

 


  代  碼
 
#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--)
 {
     //大致延時(shí)1mS
     DelayUs2x(245);
DelayUs2x(245);
 }
}
/*以下函數(shù)就是反轉(zhuǎn)掃描的精華*/
unsigned char jpsm() //矩陣鍵盤反轉(zhuǎn)掃描
{
unsigned char i=0; //用于接收按鍵數(shù)值
P0 = 0x0f; //檢測(cè)低4位
if(0x0f != P0) //檢測(cè)按鍵是否按下
{
DelayMs(10); //去抖
if(0x0f != P0) //在次判斷按鍵是否真的按下而不是其他干擾
{
i = P0; //把低4位賦值給i
P0 = 0xf0; //檢測(cè)高4位
DelayUs2x(5); //稍微延時(shí)。。這條語句可以去掉
i = i | P0; //把低4位和高4位組合成完整的按鍵數(shù)值
while( 0xf0 != P0 ) //檢測(cè)按鍵是否松開
{
;
}
return i; //返回按鍵數(shù)值
}
}
return 0; //按鍵沒有按下返回0
}

void main()
{
unsigned char i=0xaa;
while(1)
{
if(126 ==jpsm()) //判斷按鍵1是否按下
{
/*i <<= 1; //注:在Keil編譯器中不管是左移還是右移,移出的數(shù)據(jù)都是放在CY中
led = CY;*/
i >>=1;
led = CY;
        }

}


小結(jié)
1、什么是進(jìn)制位
    答:就是保存進(jìn)位的。

關(guān)閉窗口

相關(guān)文章