這是我的第一個問題,因爲我是編碼新手。卡在學習位時
那麼,我想在SPI中使用一個MCP digipot。由於我使用的是PIC16,使用C語言編寫,我瞭解到XC8庫不能包含在PIC16項目中......所以我認爲我會學到很多東西,通過點擊,理解我的工作......
但是...似乎沒有工作!所以我做了一些延遲的LED版本,以便看看發生了什麼。
我有兩個問題:第一,「命令」數據似乎沒有轉移。我只能看到第一個閃光燈,然後結果。 「時鐘」LED工作正常,閃爍8次。
另外,我不明白爲什麼我的無限循環不是無限的。我得到幾個週期,然後主函數被回調,等等。這與我的延遲有關,因爲當我改變延遲時,它會改變週期數。
這裏是我的代碼:
#include <stdio.h>
#include <pic16f18875.h>
#define temoin LATAbits.LATA0
#define CS LATAbits.LATA1
#define CLK LATAbits.LATA2
#define DAT LATAbits.LATA3
#define MASK = 0x80 //isolate the MSB
unsigned char commande = 0b10011000; //led sequence to be observed (command)
void delay(void)
{ int f, g;
for(f=0;f<1000;f++)
{
for(g=0;g<1;g++)
{ } } } //simple delay
void main()
{
int i;
//init
TRISA=0x00; //porta as output
LATA = 0x00; //init all bits to 0
CS=0; //enable writing
//send command
for (i=0; i<8; i++) //browse through the command byte
{
if (commande & MASK) //read msb and compare
DAT = 1;
else
DAT = 0;
CLK=1; //clock signal
delay();
CLK=0;
delay();
commande <<=1; //left shift, read next bit
}
CS = 1;
while (1) //just a heartbeat
{
temoin = 1;
delay();
temoin = 0;
delay();
}
}
我真的嘗試了很多在網上找到的任何信息,但沒有爲我工作的罰款。我可能只是缺乏特殊的C語言知識,但我無法分辨出什麼。
在此先感謝!
乾杯
非常感謝這麼多人! 它適用於兩個想法,完美。 –