SOGO論壇

標題: 關於C#回傳值 [列印本頁]

作者: 乂羽人乂    時間: 2013-10-28 23:15:25     標題: 關於C#回傳值

這是小弟寫的一小段副程式,我用8051做了好幾次都沒有出現我要的程式動作,不知道有什麼方法可以顯示我現在按幾次按鈕,還有我是哪裡寫法寫錯了嗎?



int push(unsigned int k)
{
int x;
while(1)
{
        if (SW == 0)   //SW代表按鈕
        {
                x =k++;
                _delayms(50);
                return(x);
        }
}
}
作者: alphi    時間: 2013-10-29 12:53:39

您的程式碼有些問題. 你可以將k設定為全域變數,或者將x 設成靜態變數,例如
  1. unsigned int k=0;
  2. int push(void)
  3. {
  4. int x;
  5. while(1)
  6. {
  7.         if (SW == 0)   //SW代表按鈕
  8.         {
  9.                 x =k++; //這邊是那裏給k值?
  10.                 _delayms(50);
  11.                 return(x);
  12.         }
  13. }
  14. }
複製代碼
或者將x設為靜態變數
  1. int push(unsigned int k)
  2. {
  3. static int x=0;
  4. while(1)
  5. {
  6.         if (SW == 0)   //SW代表按鈕
  7.         {
  8.                 x =k++;
  9.                 _delayms(50);
  10.                 return(x);
  11.         }
  12. }
  13. }
複製代碼
希望以上兩種方式對你有幫助
作者: if8051    時間: 2013-10-29 17:10:41

本帖最後由 if8051 於 2013-10-29 17:14 編輯

按鈕開關  按下  ---->  加 1  ---->  按鈕開關 放開
完成一週期的按鈕動作
  1.         do{
  2.                 while(P1_0);                   // 等待按鈕開關按下
  3.                 delay_ms(20);               // debounce 反彈跳 20mS
  4.             }while(P1_0);  

  5.         k++;                                          // 計數器 加 1
  6.         
  7.         do{
  8.                 while(!P1_0);                  // 等待按鈕開關放開
  9.                 delay_ms(20);              // debounce 反彈跳 20mS
  10.           }while(!P1_0);                    
複製代碼

作者: 乂羽人乂    時間: 2013-10-29 22:33:38

謝謝兩位前輩
也順便問問兩位前輩
我一直覺得我的C還學得不夠精(以大學生來看)
寫程式還是要看看書才會,
不知道如果想要能夠獨當一面寫程式的話大約需要累積多少實力
還有就是我應該要怎麼精進
作者: if8051    時間: 2013-10-30 09:36:46

巧婦難為無米之炊
工欲善其事,必先利其器!
若想真的學好 單晶片微電腦 MCU,我倒有以下之建議:

1. 選用 ATMEL AT89S52 : 8KB Flash ROM,有 ISP 功能,有 WDT Watchdog Timer 看門狗計時器 。
2. Keil C compiler 有內建的 RTOS 多工作業系統:#include <rtx51tny.h> 即可使用,允許最多 16 task 。
3. 買個 breadboard 和 ISP 下載傳輸線,練習硬體操作,才不致於隔靴搔癢,藉此累積實務經驗 。
3. 掌握   三個程式流程架構   四個跳躍指令   之精髓

三個程式流程架構
1. sequential  順序流程,這是 C 語言預設的流程,程式是由上而下依序執行 。
2. selection    選擇判斷   if ~ else       switch ~ case
3. iteration     重複迴圈   for loop        while loop        do ~ while loop

四個跳躍指令 : goto     return     break     continue

實際操作  多練習  錯誤中成長  假以時日  妳會成為高手 !

作者: a37583758    時間: 2013-11-1 18:58:55

請問為什麼主題是 [問題求助] 關於C#回傳值
內容卻在問 8051...





歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM