• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts




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
頂部


Re: 請問內部RC四倍頻怎麼弄?
資深會員
資深會員


我試過了
組態設定改成 HS-PLL也是不行

我要做的是
使用內部RC震盪器並經過4倍頻電路
把4MHz升為16MHz
不是外部輸入震盪訊號並經過內部4倍頻電路喔...

發表於: 2005/8/9 17:32
頂部


Re: 請問內部RC四倍頻怎麼弄?
新會員
新會員


Configuration Bits 設定:
PLL 4x

發表於: 2005/8/9 17:24
頂部


dsPIC I2C Slave mode 的問題
新會員
新會員


使用dsPIC30F2010 做為 I2C Slave:

Write Data to Slave 時: 一切正常, 但
Read Data from Slave 時:
I2CSTAT 之 D_A 一直為 0 (address) ?
好像是 dsPIC30F2010 的硬體問題吧 ??
還是軟體上有哪些 Register 必須設定 ?

發表於: 2005/8/9 16:59
頂部


Re: rs232 接收值?
新會員
新會員


你可以宣告一個共用空間,然後在利用位元欄位即可取出,如下所示
union{
unsigned char ALL;
struct{
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
};
}UrRxbits;

然後將UrRxbits.ALL=Rxdata,接著UrRxbits.b0即為你收到bit0的資料,以此類推即可抓出你要的資料。

發表於: 2005/8/9 16:45
頂部



« 1 ... 6977 6978 6979 (6980) 6981 6982 6983 ... 7522 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------