2012-05-10 6 views
2

현재 Keil C51 프로그래밍에서 DS89C450 MCU를 사용하고 있습니다.시리얼 포트 전송에 대한 도움이 필요합니다.

나는 하강 에지 방아쇠 인 P3^2에 적외선 수신기를 연결했습니다. 리모콘의 키를 누를 때마다 인터럽트가 트리거되어 xdata X 또는 Y (비트 단위로 1 바이트 씩 500 바이트 씩)에 저장됩니다.

직렬 포트를 통해 버퍼에서 하이퍼 터미널로 데이터 비트 ('1'또는 '0')를 전송하려고합니다. 그러나 리모컨을 누를 때 데이터가 표시되지 않습니다.

누구나 전문가가 왜 그리고 어떻게 작동하게 할 수 있습니까?

프로그램

은 여기에 있습니다 :

http://pastebin.com/hpAw2ipH

+0

전송중인 데이터가 ASCII로 인코딩되었으며 부적절한 직렬 제어 문자로 정리되어 있습니까? 하이퍼 터미널은이를 보여 주며 이에 반응하므로 대개 이진 데이터를 표시하는 데 가장 적합한 프로그램이 아닙니다. 대신에 바이너리 직렬 포트 모니터를 사용해보십시오. – sonicwave

+0

@sonicwave Erm, 아니요, 송신 데이터는 2 진수 '1'과 '0'입니다. 어쩌면 MTK를 사용해야할까요? – xrainxfallx

+0

[RealTerm] (http://realterm.sourceforge.net/)에 시도해보십시오. HyperTerminal에 문제가 있으면 디버깅을 위해 ASCII 16 진수 표현으로 데이터를 변환 할 수 있습니다. –

답변

1

구글 "BR의 @ y를하여 터미널"은 HEX에서 시리얼 COMMS을 표시 할 수 있습니다. 대부분의 UART는 단일 비트를 전송할 수 없으며, 시작/정지/패리티 비트 (8 비트, 패리티 없음, 1 정지 비트가 범용 기본값 임)와 함께 보통 N 비트 (보통 7 또는 8)의 문자를 전송합니다. 데이터를 ASCII로 인코딩하는 것이 더 쉽고, 시작/정지 문자가있는 경우에도 실제 데이터를 가져 오는 시점을 알 수 있습니다.

자세한 내용은 오실로스코프, BusPirate 또는 LogicSniffer (DangerousPrototypes.com)를 사용하여 통신 데이터를 스니핑하십시오.