Re: 請問查表這樣的寫法對嗎
|
||||
---|---|---|---|---|
版主
|
HIGH 是 MPASM 的 directive instruction 意思就是將一個 Word 的資料理只抓出 MSB 來, LOW 是抓出 LSB 的資料。因為你的資料出過 8-bit 所以就要分兩次抓,第一次抓 High Byte 在用同樣的Index 去抓Low Byte 。
發表於: 2007/2/14 10:04
|
|||
|
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: 請問查表這樣的寫法對嗎
|
||||
---|---|---|---|---|
初級會員
|
查表 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
|
|||
|
請問查表這樣的寫法對嗎
|
||||
---|---|---|---|---|
初級會員
|
這是我練習寫ADC的一部份程式
我只想讀出特定幾個值.所以加了一張TABLE 想把表中的特定值抓出來就好 請問這樣子的寫法對嗎 AD_CONVERT BSF ADCON0,GO ADC_WAIT BTFSC ADCON0,GO GOTO ADC_WAIT movf ADRESH,W MOVWF ADC_TEMP1 CALL ADC_VAL MOVWF TMR1H BSF ADCON0,GO goto AD_CONVERT ADC_TABLE ADDWF PCL,F RETLW D'928' RETLW D'923' RETLW D'918' RETLW D'912' RETLW D'907' RETLW D'901' RETLW D'894' RETLW D'888' RETLW D'881' RETLW D'874' RETLW D'867' RETLW D'860' RETLW D'852' RETLW D'845' RETLW D'837' RETLW D'828' RETLW D'820' RETLW D'811'
發表於: 2007/2/13 16:31
|
|||
|