會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





關於pic24 C30語言上的問題
新會員
註冊日期:
6月20日 10:07:07
所屬群組:
註冊會員
文章: 5
等級: 1; EXP: 34
HP : 0 / 8
MP : 1 / 10
離線
define sped1 = 4ms
define sped2 = 2ms

void Process(void)
{
if (flag == 0) {
if (PORTA.RA1== 0) {
if (++Dly_timer < sped1) return;
flag = 1;

}
}
else {
if (PORTA.RA1 == 1) {
if (++Dly_timer < sped2) return;
flag= 0;
}
}
Dly_timer = 0;
}


請問這段作用到底是甚麼意思,if(++ 這邊的用意是甚麼,假設第一段三個if到if(++Dly_timer < sped1)return成立了 flag = 1;會執行嗎,還是不成立才執行..為什麼最後會有 Dly_timer = 0;

7月07日 09:58:19
轉換PDF檔 列印


Re: 關於pic24 C30語言上的問題
高級會員
註冊日期:
2014/12/02 11:55
所屬群組:
註冊會員
文章: 82
等級: 8; EXP: 0
HP : 0 / 175
MP : 27 / 1523
離線
引用:

fkill6210 寫道:
define sped1 = 4ms
define sped2 = 2ms

void Process(void)
{
if (flag == 0) {
if (PORTA.RA1== 0) {
if (++Dly_timer < sped1) return;
flag = 1;

}
}
else {
if (PORTA.RA1 == 1) {
if (++Dly_timer < sped2) return;
flag= 0;
}
}
Dly_timer = 0;
}


請問這段作用到底是甚麼意思,if(++ 這邊的用意是甚麼,假設第一段三個if到if(++Dly_timer < sped1)return成立了 flag = 1;會執行嗎,還是不成立才執行..為什麼最後會有 Dly_timer = 0;



1. 加加 是先把變數加了,再去做判定的動作

2. return成立了就跳離這隻副程式,回到你進入這隻副程式之前的點,所以flag=1並不會執行

3. Dly_timer = 0;是因為延遲已經算完了所以要重制阿



建議先把C語言基本規則搞懂
才看得懂別人寫這些code當初是在想什麼而寫這些東西出來的

7月07日 10:40:14
轉換PDF檔 列印


Re: 關於pic24 C30語言上的問題
資深會員
註冊日期:
2007/06/05 21:45
所屬群組:
註冊會員
文章: 948
等級: 27; EXP: 37
HP : 0 / 659
MP : 316 / 20174
離線
++Dly_timer 自增

++ 有兩種
1. 前置
++variable
先加1,後傳回

2. 後置
variable++
先傳回,後加1

這兩種, 對於變數variable而言
沒有差別 都是加1

但對於 傳回值或其他判斷就有所差別

if(++variable < 10) ....
如果,在if之前 variable 是9, ++variable回傳是10
結果 不成立

if(variable++ < 10) ....
如果,在if之前 variable 是9, variable++回傳是9
結果 成立

7月07日 10:56:29
_________________
程式是
依照寫出來(的code),跑出結果
不是依照你想出來的,得到結果

先有需求規格 後有解決方案
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project