SOGO論壇
  登入   註冊   找回密碼
查看: 1320|回覆: 5
列印 上一主題 下一主題

[問題求助] 關於C#回傳值 [複製連結]

Rank: 4

狀態︰ 離線
跳轉到指定樓層
1
發表於 2013-10-28 23:15:25 |只看該作者 |倒序瀏覽
這是小弟寫的一小段副程式,我用8051做了好幾次都沒有出現我要的程式動作,不知道有什麼方法可以顯示我現在按幾次按鈕,還有我是哪裡寫法寫錯了嗎?



int push(unsigned int k)
{
int x;
while(1)
{
        if (SW == 0)   //SW代表按鈕
        {
                x =k++;
                _delayms(50);
                return(x);
        }
}
}
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 5Rank: 5

數位軟體勳章

狀態︰ 離線
2
發表於 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. }
複製代碼
希望以上兩種方式對你有幫助
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

失敗只有一種:那就是半途而廢

Rank: 4

數位軟體勳章

狀態︰ 離線
3
發表於 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);                    
複製代碼
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

Rank: 4

狀態︰ 離線
4
發表於 2013-10-29 22:33:38 |只看該作者
謝謝兩位前輩
也順便問問兩位前輩
我一直覺得我的C還學得不夠精(以大學生來看)
寫程式還是要看看書才會,
不知道如果想要能夠獨當一面寫程式的話大約需要累積多少實力
還有就是我應該要怎麼精進

Rank: 4

數位軟體勳章

狀態︰ 離線
5
發表於 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

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

Rank: 10Rank: 10Rank: 10

狀態︰ 離線
6
發表於 2013-11-1 18:58:55 |只看該作者
請問為什麼主題是 [問題求助] 關於C#回傳值
內容卻在問 8051...
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-4 08:27

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部