K
khansaab21
Guest
디바이스 : PIC16F628A
컴파일러 : MikroC
언어 : C
두 컨트롤러의 서비스를 방해해서 사용해야합니다.외부의 인터럽트 및 시리얼 수신 인터럽트.
하지만 문제는 코드는 하드웨어에서 작동하지 않습니다.난 내 코드와 함께 뭔가 잘못 것 같다.다음 코드 조각입니다.
방해 무효 ()
(
만약 (INTCON.INTF = 1) / / 만약 외부 인터럽트
(
TRISB.F0 = 1; / / reqiured 지연에 상태를 따기 위해 입력 그걸 만들기
start_delay; / / 444 우리의 지연
start1 = ip가;
bit_delay;
start2 = ip가;
bit_delay; / / 1778 우리의 지연
토글 = ip가;
은 (i = 0;하기 전 "= 4; 난 ) / / 주소 비트
(
bit_delay;
addr [난] = ip가;
)
은 (i = 0;하기 전 "= 5; 난 ) / / 명령 비트
(
bit_delay;
통신 [난] = ip가;
)
test_inst (); / / 명령을 처리하는 함수를 호출
) / / 플래그가 인터럽트라는 명령어에서 삭제됩니다.
다른 경우 (PIR1.RCIF = 1) / / 만약 PC에 입력한 다음
(
x = Usart_Read (); / / PC에서 데이터를 수신
스위치 (x)를
(
사건 '': (포워드 (); 휴식
사건을 'B 조': (백워드 (); 휴식
사건을 'C'로 : ((오른쪽); 휴식
사건을 '패': ((); 휴식 왼쪽
경우 '이메일': (정류장 (); 휴식
)
= 0 PIR1.RCIF; / / 지우기 USART 수신 인터럽트 플래그 비트
)
)
/ / 메인 프로그램 시작
메인 무효 ()
(
TRISA.F0 = 0; / / 출력 PORTA 만들기
TRISA.F1 = 0;
TRISA.F2 = 0;
TRISA.F3 = 0;
TRISB.F4 = 0; / / 출력 (오류 표시)로 PORTB.F4 만들기
오류 = 0;
Usart_Init (2400); / / 2400에서 시리얼 Baud 속도 초기화
/ / 인터럽트 활성화
INTCON.GIE = 1; / / 글로벌 인터럽트 활성화
INTCON.PEIE = 1; / / Enalbling 주변 장치 인터럽트
/ / 활성화 시리얼 인터럽트
= 0 PIR1.RCIF; / / 지우기 USART 수신 인터럽트 플래그 비트
PIE1.RCIE = 1; / / USART inteerupt받을 활성화
/ / 외부 인터럽트 활성화
INTCON.INTF = 0; / / 지우기 외부 인터럽트 플래그
INTCON.INTE = 1; / / 외부 인터럽트 활성화
OPTION_REG.INTEDG = 1; / / 외부 상승 에지에서 인터럽트
(1); 동안 / / 여기까지 중단
)
컴파일러 : MikroC
언어 : C
두 컨트롤러의 서비스를 방해해서 사용해야합니다.외부의 인터럽트 및 시리얼 수신 인터럽트.
하지만 문제는 코드는 하드웨어에서 작동하지 않습니다.난 내 코드와 함께 뭔가 잘못 것 같다.다음 코드 조각입니다.
방해 무효 ()
(
만약 (INTCON.INTF = 1) / / 만약 외부 인터럽트
(
TRISB.F0 = 1; / / reqiured 지연에 상태를 따기 위해 입력 그걸 만들기
start_delay; / / 444 우리의 지연
start1 = ip가;
bit_delay;
start2 = ip가;
bit_delay; / / 1778 우리의 지연
토글 = ip가;
은 (i = 0;하기 전 "= 4; 난 ) / / 주소 비트
(
bit_delay;
addr [난] = ip가;
)
은 (i = 0;하기 전 "= 5; 난 ) / / 명령 비트
(
bit_delay;
통신 [난] = ip가;
)
test_inst (); / / 명령을 처리하는 함수를 호출
) / / 플래그가 인터럽트라는 명령어에서 삭제됩니다.
다른 경우 (PIR1.RCIF = 1) / / 만약 PC에 입력한 다음
(
x = Usart_Read (); / / PC에서 데이터를 수신
스위치 (x)를
(
사건 '': (포워드 (); 휴식
사건을 'B 조': (백워드 (); 휴식
사건을 'C'로 : ((오른쪽); 휴식
사건을 '패': ((); 휴식 왼쪽
경우 '이메일': (정류장 (); 휴식
)
= 0 PIR1.RCIF; / / 지우기 USART 수신 인터럽트 플래그 비트
)
)
/ / 메인 프로그램 시작
메인 무효 ()
(
TRISA.F0 = 0; / / 출력 PORTA 만들기
TRISA.F1 = 0;
TRISA.F2 = 0;
TRISA.F3 = 0;
TRISB.F4 = 0; / / 출력 (오류 표시)로 PORTB.F4 만들기
오류 = 0;
Usart_Init (2400); / / 2400에서 시리얼 Baud 속도 초기화
/ / 인터럽트 활성화
INTCON.GIE = 1; / / 글로벌 인터럽트 활성화
INTCON.PEIE = 1; / / Enalbling 주변 장치 인터럽트
/ / 활성화 시리얼 인터럽트
= 0 PIR1.RCIF; / / 지우기 USART 수신 인터럽트 플래그 비트
PIE1.RCIE = 1; / / USART inteerupt받을 활성화
/ / 외부 인터럽트 활성화
INTCON.INTF = 0; / / 지우기 외부 인터럽트 플래그
INTCON.INTE = 1; / / 외부 인터럽트 활성화
OPTION_REG.INTEDG = 1; / / 외부 상승 에지에서 인터럽트
(1); 동안 / / 여기까지 중단
)