一小段C語言程式看不懂求助

2022-11-06 15:25:25 字數 1063 閱讀 9206

1樓:匿名使用者

目測程式應該為51微控制器的程式。

unsigned char osscankey(void)unsigned char temp;

unsigned char i;

p2=0xff;//首先對埠進行寫1操作,這樣把埠置為輸入狀態temp=p1;//讀另外的一個埠

for(i=0;i<8;i++)

if((temp&(1

if(i<8)//看是否小於8,如果是小於8的說明是由於有p1口的電平為低跳出來的。因此有鍵盤按下,如果不是,則沒有按鍵按下

return i+1;//返回相應的按鍵埠號,目測你的這裡的p1好像寫錯了,你的鍵盤好像不是用的矩陣鍵盤,而是直接掛在埠上的。因此可能為p2才對,不清楚。自己斷哈

else

return0;

2樓:匿名使用者

看這段程式,應該是8*8的矩陣鍵盤的掃描。

首先問下lz

你懂得矩陣鍵盤的掃描方式嗎?若不懂先去搞明白再來看。

if((temp&(1<

這句話其實就是為了去檢測temp的值的每個位是否有為0的如果有一位為0,就證明這位的這條線上有按鍵按下。

3樓:匿名使用者

將temp按位與

0000 0001

0000 0010

0000 0100

0000 1000

0001 0000

以此類推, 目的是為了檢測末八位是否存在0

4樓:

這個程式是檢查鍵盤是否被按下,if((temp&(1<

如果結構是零的話就是temp的某一位是零,這樣的話就知道了 是那個這是時候i+1就是背按下的那個按鈕了,因為被按下的那一位是零,

希望對你有幫助

5樓:玉龍書芳閣

樓主您好,百分百是這個意思:就是1左移i位,然後和temp相與,判斷相與以後的結果是否為0,如果不為0,則執行if下面的語句

有個C語言程式看不懂

首先第一個問題 break是跳出while迴圈,也是break以後,其後面的語句不會執行 第二個問題 當輸入的值符合month 1 month 12條件時,就直接break了,不符合這個條件就會顯示error the month you entered is not valid。所以這個題的關鍵就是...

求助,搞不明白一小段c的程式

include int lowercase char void main int lowercase char ch return counter 1 你輸入的字元實際上是以字串形式存在的,對c 而言,字串的結束字元是空字元,即 0 所以它會在你輸入的字元後面加上這麼一個字元的,這就是為什麼會多一個...

新手學習C語言程式看不懂請大家幫忙

程式是從main函式開始執行的,所以你看的時候也可以從main函式開始看,從上到下看.遇到呼叫的子函式再轉到子函式去看,也是從上到下,有問題hi我吧,我白天都在 第一題還想是求素數吧,這是按照素數的定義寫的函式。我把他格式化了一下,應該能看懂了吧。int isprime int a 第二題even ...