Discussion:
請問會寫8051程式的高手
(时间太久无法回复)
abook
2006-07-19 12:03:25 UTC
Permalink
假如我要讓兩組ADC輸入至89C51
然後利用89C51做相減運算後
要輸出至一組DAC
問題來了
當大的值減小的值當然沒問題
但是當小的值減大的值時
我要另DAC輸出為原本的值取絕對值
例如我ㄧ組輸入為3V(X)
一組輸入為2V(Y)
當Y減X
我要讓他為1V
這樣個程式該怎麼寫
我先將我原本相減的程式PO在下面
---------------------------------
mov a,P1
mov b,P2
subb a,b
mov P0,a
---------------------------------
這是只能做大減小
若是小減大時
就不是所謂我要的取絕對值了
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天 210.70.94.227海
abook
2006-07-19 17:41:44 UTC
Permalink
: 假如我要讓兩組ADC輸入至89C51
: 然後利用89C51做相減運算後
: 要輸出至一組DAC
: 問題來了
: 當大的值減小的值當然沒問題
: 但是當小的值減大的值時
: 我要另DAC輸出為原本的值取絕對值
: 例如我ㄧ組輸入為3V(X)
: 一組輸入為2V(Y)
: 當Y減X
: 我要讓他為1V
: 這樣個程式該怎麼寫
: 我先將我原本相減的程式PO在下面
: ---------------------------------
: mov a,P1
: mov b,P2
: subb a,b
: mov P0,a
: ---------------------------------
: 這是只能做大減小
: 若是小減大時
: 就不是所謂我要的取絕對值了
我忘記8051是不是可以直接比較大小了...
如果可以...
判斷...X>Y...則X-Y
否則Y-X...
然後輸出...
如果不能比較大小...
那以借位旗標或溢位旗標來判斷...
如果X-Y有借位的話...
則再做Y-X...然後輸出結果...
那在寫8051組合語言時
怎樣去做比較
我只知道C語言可以直接打大於或小於判斷
但是我看了課本
他所附的指令碼好像沒有大於跟小於的指令
8051的指令好像沒有像80X86那麼多
所以又得請教各位高手了

--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知 218-184-147-72.cm.dynamic.apol.com.tw海
abook
2006-07-20 14:18:56 UTC
Permalink
Post by abook
那在寫8051組合語言時
怎樣去做比較
我只知道C語言可以直接打大於或小於判斷
但是我看了課本
他所附的指令碼好像沒有大於跟小於的指令
8051的指令好像沒有像80X86那麼多
所以又得請教各位高手了
cjne a, b, $+3;
jc b_greater_than_a
cjne 會產生一個進位 flag, 這個進位 flag 產生條件跟減法一致, 瞭解了吧?
我先去試看看 多謝囉
有問題我會再發問 謝謝
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天 210.70.94.227海
abook
2006-07-26 09:22:23 UTC
Permalink
JC positive
(將P0轉正數)
因為A-B時..若為負數...CARRY=0
這樣不知道可不可行...請指教
先判斷那個大
再去減
如果 小減大 忽略借位
請問能將你所想的程式po出來嗎
我不太會用組語做判斷 謝謝
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬 pelab03.ee.ttu.edu.tw海
abook
2006-07-28 04:03:26 UTC
Permalink
JC positive
(將P0轉正數)
因為A-B時..若為負數...CARRY=0
這樣不知道可不可行...請指教
先判斷那個大
再去減
如果 小減大 忽略借位
SETB C
MOV A,P1
MOV B,P2
SUBB A,B
JC AAA
JNC BBB
AAA: CLR C
MOV A,P1
MOV B,P2
SUBB A,B
JMP ABC
BBB: CLR C
MOV B,P1
MOV A,P2
SUBB A,B
ABC: MOV P0,A


當我這樣打的時候 程式是對的
不過當89C51執行時
不是我要的
請厲害的高手幫我看看
我哪邊程式有問題
謝謝


--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知 218-184-147-72.cm.dynamic.apol.com.tw海
Loading...