8051 用C 寫buttons 問題 (已解決), 新問題, #9

本帖最後由 shingzhk 於 2010-5-4 00:49 編輯

Button 多時,我loop住黎check每次pin既電壓
即係
  1. JB P3.1, JUMP1
  2. CALL PRO1
  3. JUMP1:  JB P3.2 JUMP2
  4. CALL PRO2
  5. JUMP2: JB P3.3 JUMP3
  6. ....................
複製代碼
但近排轉行寫C,改落做if(P3^1 == 0){ } /  if(P3 == 0x02){}........
就完全唔work,就算禁左制(P3.1 to 0V),
佢都loop唔入個if( )
想問感樣應該點寫?

回復 1# shingzhk
  1.     if(P1_1 == 0)
  2.           {
  3.            }
複製代碼
唔知得唔得呢??

TOP

本帖最後由 shingzhk 於 2010-5-3 22:09 編輯

已解決,從網上找來既方法
唔直接用P3^1, 而要先開個variable sbit P31 = P3^1;
再set
P31 = 1; // Configure P3.1 as an input */
以後將P31代替P3^1黎用,

至於點解唔可以直接用,意義不明

TOP

我仲用緊ASM,.,.,.
好快會轉玩C 0.0

TOP

回復 4# jackli
C 方便好多
不過係好多時候寫D簡單forward 我又未handle 到
仲慘係冇得係Keil 入面睇D Register點變

TOP

回復 5# shingzhk
有的 開DEBUG 就看到啦
RRR.JPG
2010-5-3 23:23

TOP

回復 6# oYueno
講錯左,唔應該話register,應該話variable
我開個int A, 好似係睇唔到佢點變

TOP

係咪姐係要#define...

TOP

本帖最後由 shingzhk 於 2010-5-4 00:51 編輯

回復 8# lok418
應該唔係,如果用define即係改過個pin name
同directly 用冇分別,但我感寫點解會work,其實都唔多明


=================================================
仲有個問題,其實MCU有冇得save野, (8051 / PIC)
即係例如我今次用個button 做control,禁一下, P1 8支pin都on, 禁多野off哂
我想斷電腦下次開,可以load返熄機前狀態 (1 bit禁大把), 做唔做到? (唔落EROM)
如果可以記住幾個variable, 就算得幾bit 都夠

TOP

本帖最後由 oYueno 於 2010-5-4 00:57 編輯

回復 9# shingzhk

如果你用
AT89S8253
AT89LP828
AT89LP6440
at89LP428
AT89C511d2
AT89C5115
他們是有內置epprom 的

TOP