請問各位高手
|
||||
---|---|---|---|---|
新會員
|
用PIC18F452 能做到週期為 14.25us 的pwm波形嗎
大概可做到小數點第幾位 謝謝
發表於: 2005/8/9 22:12
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
新會員
|
哇~再次感謝pic5566的熱情解答
感激感激~~~
發表於: 2005/8/9 21:18
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
嗯
解開就好,有問題再問好了。
發表於: 2005/8/9 19:14
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
這是針對pic12f675所寫的
所以運用在pic18fxx你要讀一下data sheet .................... ack = input(P_SDA); 005F: BSF 03.5 0060: BSF 05.5 0061: BCF 03.5 0062: CLRF 2D 0063: BTFSC 05.5 0064: INCF 2D,F 回應一下INPUT()所產生的CODE 很嚇人喔,但是保證不會出錯因為你每input()他都會幫你切BANK設輸入但是CODE真的比較多 .................... output_low(P_SCL); 0065: BSF 03.5 0066: BCF 05.4 0067: BCF 03.5 0068: BCF 05.4 output()也一樣 在C18你可以以一行就解決 這是你問的delay_us() and delay_ms() CCS C compiler所產生的CODES .................... delay_ms(250); 01B3: MOVLW FA 01B4: MOVWF 25 01B5: CALL 00A 000A: MOVLW 25 000B: MOVWF 04 000C: MOVF 00,W 000D: BTFSC 03.2 000E: GOTO 01E 000F: MOVLW 01 0010: MOVWF 21 0011: CLRF 20 0012: DECFSZ 20,F 0013: GOTO 012 0014: DECFSZ 21,F 0015: GOTO 011 0016: MOVLW 4A 0017: MOVWF 20 0018: DECFSZ 20,F 0019: GOTO 018 001A: NOP 001B: NOP 001C: DECFSZ 00,F 001D: GOTO 00F 001E: RETLW 00 總之希望對你有所幫助
發表於: 2005/8/9 19:12
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
新會員
|
一切謎底都解開了
感謝 pic5566 的熱情與解答 小弟我感激不盡
發表於: 2005/8/9 19:10
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
Re: 想請問I2C應用範例
版主~各位大大~ 小弟我想把上述的程式改成C18可以compiler的程式 不過在"解讀"上述ccs的程式時遇到一些問題= =" 問題如下: 問題一 函式input()的作用是做什麼用的? 就是c18 的 if (Port==1 or 0) CCS 比較C化他都幫使用者寫好函數但是他也是笨笨的不管怎樣他都會翻出比較多的CODE 難道作用在於讀取腳位電位?如果是,是不是對應到C18指的PORTXbits.RXX? ans: 對 問題二 函式debug_pin()的作用是做什麼用的? ans: 由於我沒有ICE,PIC12Fxx實在太小顆了,我很窮沒錢買ICE,我只有一台三十幾萬的是波器而已,所以我會利用一隻IO腳輸出信號用示波器量測看輸出幾個脈波就可以知道程式跑到那裡了,這是一種DEBUG技巧,有時你無法停下MCU,所以就必須藉助這一個方法來做。 乾脆我再送你一個我的DEBUG(); 這一個我是用C18寫的希望你好好運用一下窮人DEBUG法說不定你會用到 使用方法: 例如你要輸出一個脈波 debug_p4(1); ----+ +-------- | | +--+ 就會在示波器顯示這樣的波形 void debug_p4(uchar i) { switch(i) { case 10: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 9: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 8: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 7: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 6: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 5: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 4: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 3: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 2: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; case 1: L_TEST2 = 0; DLY10US(); L_TEST2 = 1; default: break; } } 我再示範一下 ex: switch(step) { case 1: { debug_p4(1); break;} case 2: { debug_p4(2);break} . . } 問題三 delay_us(2)--->延遲2us?? ans--->yes這也是CCS C compiler所提供的函數 delay_ms(100)--->延遲100ms?? ans -->yes這也是CCS C compiler所提供的函數 問題四 BUFFER1 = IIC_RECEIVE_BYTE(); BUFFER2 = IIC_RECEIVE_BYTE(); PORTDATA = IIC_RECEIVE_BYTE(); input(P_INTERRUPT); 問題四 C code 中提到BURRER1、BURRER2、 PORTDATA、P_INTERRUPT分別指的是什麼?? 透過IIC_RECEIVE_BYTE()向裝置讀資料進來然後放在記憶體備用因為我需要讀兩筆資料所以開兩個bytes的記憶體 input(P_INTERRUPT); 將IO port設定為輸入端,因為我這一個程式是用來控制MICROCHIP公司的MCP23016 IO PORTS EXPANDER 所以他有一隻腳是在通知io port有輸入 我是原作者啦~~~~不好意思喔害你讀的這麼辛苦 版主還有其他大大可以幫忙解答嗎?? 小弟我感激不盡!!!
發表於: 2005/8/9 18:21
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
新會員
|
版主~各位大大~
小弟我想把上述的程式改成C18可以compiler的程式 不過在"解讀"上述ccs的程式時遇到一些問題= =" 問題如下: 問題一 函式input()的作用是做什麼用的? 難道作用在於讀取腳位電位?如果是,是不是對應到C18指的PORTXbits.RXX? 問題二 函式debug_pin()的作用是做什麼用的? 問題三 delay_us(2)--->延遲2us?? delay_ms(100)--->延遲100ms?? 問題四 BUFFER1 = IIC_RECEIVE_BYTE(); BUFFER2 = IIC_RECEIVE_BYTE(); PORTDATA = IIC_RECEIVE_BYTE(); input(P_INTERRUPT); 問題四 C code 中提到BURRER1、BURRER2、 PORTDATA、P_INTERRUPT分別指的是什麼?? 版主還有其他大大可以幫忙解答嗎?? 小弟我感激不盡!!!
發表於: 2005/8/9 17:48
|
|||
|
Re: rs232 接收值?
|
||||
---|---|---|---|---|
高級會員
|
謝謝您的回應~~~~
發表於: 2005/8/9 17:47
|
|||
|
Re: 請問一下C18函式庫
|
||||
---|---|---|---|---|
初級會員
|
謝了各位!
發表於: 2005/8/9 17:38
|
|||
|