Re: 請問查表這樣的寫法對嗎
|
||||
---|---|---|---|---|
初級會員
|
查表 OK 但是直不能超過255
若是超過 必須建2個查表 ADC_TABLE_HIGH: ANDLW H'0F' << 依查表值的多寡 我是以 16個算 ADDWF PCL RETLW HIGH(D'928') RETLW HIGH(D'923') RETLW HIGH(D'918') RETLW HIGH(D'912') RETLW HIGH(D'907') RETLW HIGH(D'901') RETLW HIGH(D'894') RETLW HIGH(D'888') RETLW HIGH(D'881') RETLW HIGH(D'874') RETLW HIGH(D'867') RETLW HIGH(D'860') RETLW HIGH(D'852') RETLW HIGH(D'845') RETLW HIGH(D'837') RETLW HIGH(D'828') ADC_TABLE_LOW: ANDLW H'0F' ADDWF PCL RETLW LOW(D'928') RETLW LOW(D'923') RETLW LOW(D'918') RETLW LOW(D'912') RETLW LOW(D'907') RETLW LOW(D'901') RETLW LOW(D'894') RETLW LOW(D'888') RETLW LOW(D'881') RETLW LOW(D'874') RETLW LOW(D'867') RETLW LOW(D'860') RETLW LOW(D'852') RETLW LOW(D'845') RETLW LOW(D'837') RETLW LOW(D'828')
發表於: 2007/2/13 17:06
|
|||
|
Re: 請問查表這樣的寫法對嗎
|
||||
---|---|---|---|---|
高級會員
|
1..程式看起怪怪的...
2..TABLE 的值都是2BYTE耶... 3..Cwen大大的寫法..學起來...感謝 查表 -->1byte查法... //---------------------------------- MOVLW D'2' --> W=2 CALL tab_data MOVWF bReg0 ---> bReg0 = W = 2 ...... //---------------------------------- tab_data: ADDWF PCL,F --> PCL + 2 RETLW D'0' RETLW D'1' RETLW D'2' ---> RETURN W=2 RETLW D'3'
發表於: 2007/2/13 17:14
|
|||
|
Re: 請問查表這樣的寫法對嗎
|
||||
---|---|---|---|---|
初級會員
|
感謝Cwen大大和Blake的回答
我對RETLW比較清楚了 另外還有一點疑問 Cwen大大提到值不能超過255.若超過要建2個表 那ADC的值出來後是要CALL HIGH&LOW這2個表 EX.. movf adresh,w movwf acd_value call adc_high_table call adc_low_table 這樣嗎??還是 EX.. movf adresh,w movwf acd_value call adc_table adc_table addwf pcl,w adc_high_table retlw high(D'928') . . adc_low_table retlw low(D'928') . . 還是這樣嗎?? PS: 我是個大嫩咖~"~ 麻煩各位解答一下...感謝
發表於: 2007/2/13 17:45
|
|||
|
Re: 請問查表這樣的寫法對嗎
|
||||
---|---|---|---|---|
版主
|
HIGH 是 MPASM 的 directive instruction 意思就是將一個 Word 的資料理只抓出 MSB 來, LOW 是抓出 LSB 的資料。因為你的資料出過 8-bit 所以就要分兩次抓,第一次抓 High Byte 在用同樣的Index 去抓Low Byte 。
發表於: 2007/2/14 10:04
|
|||
|