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

熱點內容
命令來自剃頭的用英語怎麼說 瀏覽:765
什麼app不花一分錢買東西 瀏覽:373
布林四線指標源碼 瀏覽:968
單片機的控制板 瀏覽:218
襄陽軟體編程 瀏覽:841
sshpass命令 瀏覽:106
logo伺服器怎麼下載 瀏覽:508
如何ftp連接伺服器 瀏覽:674
creo自動編程 瀏覽:161
雲伺服器在電腦怎麼開 瀏覽:432
ipad相冊如何在文件夾中建文件夾 瀏覽:621
和家親這個app有什麼用 瀏覽:575
什麼app裡面有種樹打折 瀏覽:374
編程外掛入門教學 瀏覽:974
pdf黑白轉彩色 瀏覽:725
英國投資加密貨幣嗎 瀏覽:887
看完程序員那麼可愛後的感受 瀏覽:131
廣播在什麼APP能聽 瀏覽:678
阿克曼小車連接什麼app 瀏覽:773
all100編程器 瀏覽:182