와 하이퍼 터미널 AT80C51RD2> 인터페이스

pls 문제에 대한 질문을 구체적.당신이 알고 싶어요.

 
여보세요

관심을 주셔서 감사합니다.물론, 제가 설명합니다.

나는 핀으로 DB9의 Rx 교차여 / h로 만든 TX는과 관련하여 / W의.제가 컴파일러 C의 노력을하는 Keil 프로그램을 통해.나는 칩 prgm으로 나의 다음 파일을의 16 진수 dwnld하지만 하이퍼 터미널로 돌아 않는 데이터가 없습니다 줘봐

#은 <reg51.h> 포함
#은 <stdio.h> 포함

# 주파수를 정의 XTAL 11059200 / / CPU의 발진기
# 전송 속도는 전송 속도 정의 9600 / / 9600 bps 통신

# 버퍼 정의 크기의 시리얼 전송 / Olen 8 /
서명되지 않은 번째 문자 ostart; / / 전송 버퍼의 시작 인덱스를
서명되지 않은 번째 문자 oend; / / 전송 버퍼 끝 인덱스를
메기 iData outbuf [Olen]; 스토리지 전송 / / 버퍼

# 버퍼를 정의 크기의 시리얼 수신 / ILEN / 8
서명되지 않은 번째 문자 istart; / / 수신 버퍼의 시작 인덱스를
서명되지 않은 번째 문자 빌려; / / 수신 버퍼의 최종 색인
메기 iData inbuf [ILEN];에 대한 수신 버퍼를 스토리지 / /

비트 sendfull은, / / 플래그 : 부호가 전송 버퍼가 가득
비트 sendactive; / / 플래그 : 부호는 송신기 활성화

/ *
* 시리얼 인터럽트 서비스 루틴
* /
정적 무효의 com_isr은 (무효) (인터럽트 1 4를 사용
메기 C;

/*-----받은 데이터를 방해.----------------------------------------*/
(만약 (아일랜드)
c는 = SBUF; / /이 문자를 읽을
아일랜드 = 0; / / 취소 인터럽트 요청 플래그
ILEN 면 (istart! = 빌려줄 래요?) (
inbuf의 [이 빌려 & (ILEN - 1)] = C; / /하지만 버퍼로 문자
)
)

/*------ 전송된 데이터가 인터럽트.------------------------------------*/
TI의 경우에는 (! = 0) (
TI의 = 0; / / 취소 인터럽트 요청 플래그
ostart면 (! = oend) (/ / 만약 버퍼의 문자와
SBUF = outbuf [ostart 및 (Olen - 1)]은, / /는 문자를 전송
sendfull = 0; / / '맑은 sendfull'깃발
)
또 (/ / 만약 모든 문자 전송
sendactive = 0; / / 확실히 'sendactive'
)
)
)

/ *
* 기능 전송 속도를 킷에는 UART를 초기화하는 직렬 포트 및.
* /
((무효 com_initialize 무효)
istart = 0; / / 빈은 버퍼를 전송
빌려 = 0;
ostart = 0; / / 빈은 버퍼를 전송
oend = 0;
sendactive = 0; / / 송신기 활성화되지 않습니다
sendfull = 0; / / '맑은 sendfull'깃발

로 전송 속도의 발전기 1 / / 구성 타이머
PCON | = 0x80으로; / / 0x80으로 = SMOD : 세트 시리얼 전송 속도 doubler
TMOD | = 0x20은; / / 2에 모드 1 타이머를하다
TH1 = (서명 번째 문자) (256 - (XTAL / (16L * 12L * 전송 속도)));
TR1 = 1; / / 1 타이머를 시작합니다

SCON = 0x50은; / / 시리얼 포트 시리얼 수신기를 활성화 모드 1,
ES의 = 1; / 인터럽트를 시리얼 / 활성화
)

/ *
* putbuf가 : 버퍼 또는 전송에 쓸 문자를 SBUF
* /

무효의 putbuf (메기 C) (
) sendfull (/ / 전송하는 경우 (! 아니라 완전한 경우에만 버퍼
(있다면! sendactive) (/ / 만약 송신기 활성화되지 않음 :
sendactive = 1; / / 직접적인 첫 번째 문자를 전송
TXD = 1;
WR = 1;
SBUF가 = C, / / 전송을 시작합니다 SBUF에
)
또 (
ES의 = 0; / / 인터럽트 비활성화 시리얼 버퍼 중에 업데이트
outbuf의 [버퍼 oend 는 & (Olen - 1)]은 = C; / 전송 번째 문자 넣어 /에
(만약 (((oend ^의 ostart) & Olen - 1)) == 0) (
sendfull = 1;
깃발을 경우 버퍼가 가득 차면 세트) / /
ES의 = 1; / 다시 인터럽트를 활성화 시리얼 /
)
)
)

/ *
도서관 putchar 루틴 표준 * 교체 루틴에 대한.
성격 * printf의 출력 함수를 사용 putchar.
* /

메기 putchar (메기 C) (
문자 n을 ') (/ / 확장 새로운 라인면 (\ C ==':
/ 기다릴 때까지 거기 우주에 버퍼 / 동안;) sendfull가 (
putbuf은 (0x0D); / / 줄> <new 이러다 전송하기 전에 LF에
)
/ 기다릴 때까지 거기 우주에 버퍼 / 동안;) sendfull가 (
C); / / 장소 문자로 버퍼 (putbuf
반환 (다);
)

/ *
표준 라이브러리 * 교체 _getkey 루틴 루틴.
* GetChar과 캐릭터를 유도할 수있는 함수가 읽기를 사용 _getkey.
* /

메기 _getkey (무효) (
메기 C;
RXD = 1;
연구 개발비 = 1;
(동안 (빌려 == istart)
까지 거기 문자 기다릴; / /
)
ES의 = 0; / / 인터럽트 비활성화 시리얼 버퍼 중에 업데이트
C = inbuf [istart & (ILEN - 1)];
ES의 = 1; / 다시 인터럽트를 활성화 시리얼 /
반환 (다);
)

/ *
시리얼 I / O를 중심 * 시작 인터럽트 메인 C 함수
* /

(무효 메인 (무효)
EA는 = 1; / *를 인터럽트 번호 * 활성화 글로벌 /
) com_initialize (; / * * O를 초기화 시리얼 인터럽트 구동 내가 / /
(동안 (1)
메기 C;
C = GetChar ();
printf ( "\ n 삭제하면, 입력한 문자 % c. \ N 개의는"C);
)-------------------------------------------------- ----------------------

나의 칩 안에 ROM을 가지고하지 않습니다.그것인가입니까 그것이 왜 작동하지 않아 솔루션을 다른 제안 또는 나에게 줄래?

BR
bloke203

 
안녕하세요,
내가 At80c51RD2을 궁금 프로그램을 사용하는 당신과 MC를 맡지으로 오전하여 같은 프로그래머가 보편적인 문제가 프로그래밍을?

많은 감사합니다,
Mohit Gadhok

 
통신 킷에는 UART를 확실히 확인을위한 하이퍼 컨트롤러 집합으로 제대로 터미널이 있습니다.

-
AMR의 알리

 

Welcome to EDABoard.com

Sponsor

Back
Top