[問題] 使用MPLAB C18 for pic, SPI UART的問題

看板Programming作者 (離人)時間13年前 (2012/08/11 11:04), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
大家好,我的問題是需要知道如何設定與操作SPI和USART 背景: 公司臨危受命要我寫一個韌體, 我的背景是應用層的軟體,會點C語言, 但還沒寫過跟硬體連接的部分(連硬體概念都沒有), 後面如果有描述不正確的請指正。 我有看MPLAB對USART和SPI的範例,以及其他討論區的範例, http://www.ermicro.com/blog/?p=1846 還有東拼西湊回來的知識... 架構: PC-PIC(MCU)-設備(板子上的另一塊電路板) 要寫MCU裡面的韌體,也就是 PC-USART-SPI-設備 使用MPLAB ICD3 C18作工具 腳位: USART部分: RC6:TX RC7:RX SPI部分: RC5:OUT RC4:IN RC3:CLK RC2:EN ,對設備的話要設為high 我有把SPI的SI和CLK拉出到示波器(也不會看 = =),都是兩條橫線不會變化 在猜是不是我的設定設錯,再來是寫的函式用法對不對..煩請指教 以下是我的程式: void main (void) { //設定UART和SPI的方向與in/out TRISC = 0; TRISCbits.RC4 = 1; TRISCbits.RC7 = 1; PORTC = 0; PORTCbits.RC4 = 1; PORTCbits.RC2 = 1; SPI_Write(0x20, 0x26);//對設備的0x20寫入0x26 if(SPI_Read(0x20)==0x26) //若設備的0x20位置是0x26 LED_ON();//讓LED亮起來 //(單獨讓LED亮起來這個功能驗正可以動作了,但在這個if下不會) //USART的部分還沒寫..前面SPI已經卡住了 >"< } 以下是參考別人來的: void SPI_Write(unsigned char addr,unsigned char data) { SSPBUF = addr; // Wait for Data Transmit/Receipt complete while(!SSPSTATbits.BF); // Start Data transmission SSPBUF = data; // Wait for Data Transmit/Receipt complete while(!SSPSTATbits.BF); } unsigned char SPI_Read(unsigned char addr) { SSPBUF = addr; // Wait for Data Transmit/Receipt complete while(!SSPSTATbits.BF); // Send Dummy transmission for reading the data SSPBUF = 0x00; // Wait for Data Transmit/Receipt complete while(!SSPSTATbits.BF); return(SSPBUF); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.33.240
文章代碼(AID): #1G9Sl7ZF (Programming)
文章代碼(AID): #1G9Sl7ZF (Programming)