導航:首頁 > 操作系統 > 單片機用temp賦值給P1區別

單片機用temp賦值給P1區別

發布時間:2023-06-13 14:14:30

Ⅰ 注釋一下 單片機程序

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //8個數碼管的位選擇信號表
uchar code display[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; //1-8的共陰字碼表
sbit wei=P3^7; //P3.7用於控制哪位顯示
sbit rest=P2^7; //P2.7用於復位
void delay(uint z) //延時函數,入口參數Z.具體延時於晶振頻率有關
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
main() //主函數
{
uchar i,temp;
P0=0xff; //P0口全部拉高,置1
delay(10); //延時delay(10)MS
wei=1; //P3.7置1
while(1) //循環掃描P1口按鍵狀態
{
temp=0xfe; //temp存掃描碼
for(i=0;i<8;i++) //循環8次,即掃描8個按鍵
{
if(P1==temp) //如果P1口讀入的狀態等於當前掃描碼
{
delay(10); //延時去抖
if(P1==temp) //再讀P1口比較
{
while(1) //確定按鍵有效,進入循環體
{
if(rest==0) //如果P2.7==0
{
delay(10); //延時去抖
if(rest==0) //確定P2.7腳按鍵按下
{
P0=0xff; //P0口拉高
P3=0; //P3口送0 ,即熄滅所有LED數碼管
while(rest==0); //如果P2.7的按鍵一直按下,則等待
break; //如果P2.7按鍵彈開,則跳出循環體,重新掃描按鍵
}
}
else //如果P2.7==1,即復位鍵沒有按下
{
P0=table[i]; //P0口送出P1口按鍵對應位的位控號
P3=display[i]; //P3口送對應的段碼值,形成顯示
}
}
}
}
temp=(temp<<1)|0x01; //temp左環移,掃描下一按鍵
}
}
}
該程序實現的功能大概是:將P1口按鍵的狀態顯示到對應位的LED管上,比如按下第2個鍵,會在第2個數碼管上顯示2同時按下多個鍵也一樣,按下哪幾個就對應顯示哪幾個鍵的值.按下復位按鍵後,所有數碼管
熄滅.
希望我猜得對,忽忽

Ⅱ 52單片機,取位邏輯運算,下面兩種寫法,為什麼P1最終值不同

當然不一樣,P1=state[sta]; 是直接賦值給 P1;
而 temp|=state[sta]; 則是先 temp「或" state[sta] ,結果就有可能不等於 state[sta] 了;

閱讀全文

與單片機用temp賦值給P1區別相關的資料

熱點內容
mysql執行cmd命令 瀏覽:70
有為財經源碼 瀏覽:344
駕照預約計時app是什麼軟體 瀏覽:223
非對稱加密怎麼計算 瀏覽:55
應用被加密該怎麼辦 瀏覽:716
程序員b2等級 瀏覽:236
微信應用分身怎麼加密 瀏覽:892
黑羽命令 瀏覽:93
冰箱壓縮機上面的黑膠 瀏覽:597
單片機連線是什麼線 瀏覽:757
寬頻加密方式選擇 瀏覽:340
javaweb博客 瀏覽:70
linux監控目錄 瀏覽:446
51單片機iic通信的引腳 瀏覽:769
cmd命令如何進入c盤 瀏覽:291
金山pdf獨立版 瀏覽:241
信息在文件夾怎麼看 瀏覽:134
雲伺服器包月之後還有額外費用嗎 瀏覽:977
安卓版死神來了第27關怎麼過 瀏覽:980
河南壓縮空氣軟管采購 瀏覽:469