導航:首頁 > 操作系統 > 單片機用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區別相關的資料

熱點內容
pdf下拉 瀏覽:367
php去掉小數後面的0 瀏覽:952
阿里備案買什麼伺服器 瀏覽:261
網路驅動下載到哪個文件夾 瀏覽:481
達內程序員培訓西安 瀏覽:505
人保送車主惠app上怎麼年檢 瀏覽:604
android手機開機密碼 瀏覽:480
linux查看某個進程命令 瀏覽:529
閑置的騰訊雲伺服器 瀏覽:437
rar壓縮包mac 瀏覽:626
php混淆加密工具 瀏覽:581
java把數字拆分 瀏覽:464
如何下載svn伺服器舊版本 瀏覽:559
命令與征服4攻略 瀏覽:914
實數四則運演算法則概念 瀏覽:296
cs16優化命令 瀏覽:873
Minecraft雲伺服器免費 瀏覽:830
png壓縮最小 瀏覽:184
老韓綜app怎麼看不了了 瀏覽:229
只有一個程序員的體驗 瀏覽:323