Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
高級會員
|
看来美国是社会主义的.公司要破产了,还国家收购.
社会主义好! 鸭兄弟应该用的是5v系统吧. 5/255(也有人认为应该为256).就是每格代表的电压. 从0到5V一共等分为255份.
發表於: 2008/9/18 9:45
|
|||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
資深會員
|
鴨兄好像用組語比較多的樣子。
i ---> ADC 取到的值 di--> 20%的值 上下限就是 i + di 和 i -di <-----到這裡都是廢話 di = (i>>3)+(i>>4)+(i>>5) <---這個就很接近20% 剩下就是檢查旗標看看邊界溢位了沒....
發表於: 2008/9/18 9:57
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
版主
|
鴨先生,
如果用C寫那就簡單了,如果是 Assembly 的話這 20% 還是用查表的方式會比較好。 (3v/5v) x 256 = 153 153 x 120% = 184 153 x 80% = 122 因為 PIC16 沒有比較指令所以用減法指令方式去判斷是否介於122 ~ 184 之間。有關比較判斷的說明可以參考 101ASP 的教材。
發表於: 2008/9/18 9:58
|
|||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
資深會員
|
笨鴨只會Assembly, 其他嬤 莫宰羊啦!
謝謝各位指導 但是還是不懂??? 可能笨鴨表達能力不好 那再說明一下囉... 首先程式會經由A/D去讀一個電壓值,例如結果是3V 吧. 然後希望程式能把3V 加減 +-20% 就是 3.6V & 2.4V. 然後把3.6V & 2.4V. 存到 EEPROM 去 做為兩個上下限參考值 問題是如何寫程式 把3V 自動計算加20% & 減 20%呢? 計得好像是可以用 right or left rotate方式達到目的? 或者有其他方法來換算呢??謝謝囉....
發表於: 2008/9/19 1:38
|
|||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
資深會員
|
Master大鍋
是否可以再詳細說明, 或者是有範例可以引用呢? 3Q lor....
發表於: 2008/9/19 1:42
|
|||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
資深會員
|
參照:
沒什麼啊?只是我記得你好像都是用組語寫。那這樣乘法就很麻煩。 所以可以用位移運算去逼近接近的值。 8 bit數值 i 右移3位元(i>>3)是 i/8 是原值的 12% i>>4 是 i/16 是原值的 6% i>>5 是 i/32 是原值的 3% 所以三個相加就是21%就很接近20%,然後再和原值相加(相減),再檢查加法運算的過程中有無溢位。(減法不會發生減到小於0)而且整數運算本來就有精度損失,20跟21差不多啦。或是只做前兩項也有18%。跟20%也差不到哪裡.. 這樣你應該就能寫了吧? 您就別折騰我寫組語啦!!
發表於: 2008/9/19 3:04
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
資深會員
|
知道啦... 原來大鍋的 i >>3 就是右移. 3個bit呀.
偶只是看不懂( i >>3 )是啥摸咚咚啦 !!! 知了 謝謝啦.....
發表於: 2008/9/19 4:51
|
|||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
資深會員
|
i>>3
i>>4 i>>7 i>>8 加起來是19.921875%豈不是更接近20%
發表於: 2008/9/19 9:06
|
|||
|
Re: 笨鴨上班啦!!
|
||||
---|---|---|---|---|
資深會員
|
一個8bits的數值,右移7位之後只有0或1。右移8之後只會是0。最好是能考慮到小數點....
先生,你在搞笑嗎?請用整數思考。並且考慮到精度損失,做個右移3+右移4或是右移2-右移4就夠了。
發表於: 2008/9/19 9:10
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|