![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#10 | |
Nhập môn đệ tử
Tham gia ngày: Feb 2008
Bài gửi: 5
: |
Trích:
Nhu ban namqn da noi tren thi that dung, toi bo xung them: Ban co the sai cac port.PIN thanh Input hay Output tuy-y (fai chieu theo data sheet). Vi du ban dang sai RA.1 thanh Input ma ban muon doi no thanh output thi cu viec set cai TRISA.1 thanh LOW (tuc la = 0 cho out put). Doi khi ban muon sai nhu vay neu ban viet I2C software; ban doi DATA pin thanh IN de doc va thanh OUT de viet vao I2C. Nhung neu ban da gan pin nao do vao LED vi-du, thi READ cung khong co ich gi. Hy-vong that help, LB ;/////////////////// --- THI DU ---///////////////////// --- in MCC18 --- /-------------------------------------------- I2CBITOUT routine viet mot byte sang I2C //------------------------------------------- void I2CBITOUT(byte n) { I2CDataTris=0; // CHU-Y: cho pin nay thanh OUTPUT if(n) // m_I2CDataBit=1; // doi logic else m_I2CDataBit=0; Nop(); Nop(); m_I2CClkBit=1; // set clock line high I2CDelay(); m_I2CClkBit=0; // return clock line low I2CDelay(); } //------------------------------------------ I2CBITIN routine doc mot byte tu I2C //------------------------------------------ byte I2CBITIN(void) { byte i; I2CDataTris=1; // bien data line thanh INPUT de doc byte I2CDelay(); m_I2CClkBit=1; // set clock line high I2CDelay(); // cho chut siu i = m_I2CDataBit ? 1 : 0; // read the data bit m_I2CClkBit=0; // set clock line low return i; } ;////////////////////// --- thi du in ASM --- ////////////////////// ; ;------------------------------- ;/////////////////////////////// ; BITOUT sub for ext EEprom ;-------- ; BITOUT bcf LATA,0 ; -- doi lai 06/25/05 -- bcf TRISA,0 ; cho Sdata Output btfss Temp4,do ; bitFLAG,do ; check for state of data goto bitlow ; if low then bsf Sdata ; output a ---- HI BIT ---- goto clkout ; go toggle the clock bitlow bcf Sdata ; else output a ---- LOW BIT ---- clkout bsf Sclk ; set clk line HI call delayEE0 ; ___/"""""\___ bcf Sclk ; set clk line low bcf Sdata ; 04/20/20 da chay tot nop retlw 0 ; ;------------------------------- ;/////////////////////////////// ; BITIN sub: Read one bit of data from ee and store it in di ;-------- for ext EEprom ------ ; BITIN bcf Sdata ; ok nop ; ok nop ; ok bsf LATA,0 ; DOI LATA TO B HAY C TUY THEO port -- bsf TRISA,0 ; cho Sdata INPUT bsf Sclk ; set clock line HI __/"" ;-- call delayEE001 ; OK btfsc Sdata ; jb Sdata,btin1 goto btin1 bcf Temp4,di ; bitFlag,di ; input bit was LOW goto btin2 btin1 bsf Temp4,di ; bitFlag,di btin2 bcf Sclk ; set clock line LOW too ""\__ nop ; ok retlw 0 ; -- khi ve thi di da co mot byte cua data -- ;------------------------------- ; Hy vong cai nay giup, LB |
|
![]() |
![]() |
|
|