2013-02-05 5 views
1

먼저 내 PIC는 16f1625이며 프로그래밍을 위해 MPLAB 8.86을 사용합니다. 내 문제는 간단합니다. PC와 PIC간에 통신하고, PC가 1 바이트를 보내고 PIC가이 바이트를 읽고 뭔가를합니다. 내 문제는 내가 PC에서 "R"과 같은 한 글자를 보내고 설정하고 싶은 번호를 보낸 후에 이렇게 개선하고 싶다. 오늘 나는 4 가지 가능성을 가지고있다. PC는 0,1,2 또는 5를 보내고 이것들에 따라 해상도를 설정한다.PIC에 명령 보내기

switch(i) { 
    case 1: 
     pulsesPerMm = 10; 
     break; 
    case 2: 
     pulsesPerMm = 20; 
     break; 
    case 5: 
     pulsesPerMm = 51; 
     break; 
    case 10: 
     pulsesPerMm = 102; 

     break; 
} 

나는이 같은 명령을 수신 :

while(!RCIF) /* set when register is not empty */ 
    continue; 
return RCREG; 

이 지금은 같은 것을 할 싶어 : 나는 다음 단어가 해결 될 것이라고 표시하고이 후, 2 바이트 "R"을받을 , 그 새로운 해상도가 될 것입니다 그리고 내가해야 할 것입니다 int로 문자열을 변환하는 것입니다 (atoi 사용) 그리고 나서 나는 pulsePerMm을 설정할 수 있습니다. 문제는 하나의 문자 만 필요로하는 다른 명령이 있으므로이 문자를 변경하고 싶지 않다는 것입니다.

답변

0

숫자 대신 rx chars를 켜고 'R'case 블록에서만 getChar() 함수를 호출하여 다음 두 문자와 atoi()를 반환하십시오.

+0

이해가 안됩니다. PC가 데이터를 전송할 때, 그것은 단지 그것이 언제인지 알지 못한다. 그리고 그것은 끊어짐없이 직렬로 전송할 것이므로 나는 그 바이트를 'R'으로 식별 할 시간이 없다고 생각한다. –