이것은 코딩을 처음 접했을 때의 첫 번째 질문입니다.조금 두드리는 소리를 배우는 동안 붙어있다
글쎄, SPI에서 MCP 디지 포토를 사용하려고합니다. CIC로 작성한 PIC16을 사용하면서 XC8 라이브러리가 PIC16 프로젝트에 포함될 수 없다는 것을 알았습니다 ... 그래서 저는 비트 뱅잉, 내가하는 일에 대한 이해로 많은 것을 배울 것이라고 생각했습니다 ...
하지만 ... 작동하지 않는 것 같습니다! 그래서 나는 어떤 일이 일어나고 있는지를보기 위해 약간의 지연이있는 LED 버전을 만들었다.
두 가지 문제점이 있습니다. 첫째, "명령"데이터가 이동하지 않는 것 같습니다. 나는 첫 번째 비트 만 플래시를 볼 수있다. "clock"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 언어 지식이 부족할 수도 있지만 무엇을 말할 수 없었습니다.
미리 감사드립니다.
건배
정말 고마워요! 두 아이디어 모두 완벽하게 작동했습니다. –