-"방해 그림 컨텍스트를 저장 및 복원

C

candy66

Guest
얘들아 .... 난이 일상적인 방해를 실행하려고하지만 내가 저장하고 정확하게 내 컨텍스트를 복원 working.Did 아닌 가요? 사람이 도움이 될까요?int_servmovwf savew; W의 가치를 임시 저장소
movf 상태 승; 승 지금 상태의 사본을 가지고
clrf 상태; 우리 은행 0 당장 보장!
movwf savestatus; 상태를 저장하기btfss PIR1, 5; 나타납니다 (5)받은 데이터를 확인
고토가 나타납니다
movf RCREG, 승;하기 승에서 데이터를 수신
movlw 08H; 뒀어 등록을 1로 이동
movwf LATB; PORTB에 LED가 점등으로 이동intclean

movwf 상태; 상태를 복원합니다!(은행 =) 원래
swapf savew로, F; 원 * 은행 *에서 승 복원
swapf savew, 승; swapf 어떤 플래그에 영향을주지 않습니다

retfie

 
비록 그들이 그것을 쉽게 읽을 수 있도록, 괜찮아 보이는 코드를 태그를 사용합니다.

그럴 필요 없어요 컨텍스트를 저장하거나 18F에 승 & 상태를 복원하지 않는 경우 우선순위가 높은 인터럽트를 사용하고있습니다.

 
흠 .. 난 18F452 낮은 우선 순위 인터럽트를 사용하지만, 그것을 작동하지 않는 것 같다.

 
때문에 16F처럼 프로그래밍이 아니라서.당신이 사용해야합니다
FAST의 RETFIE
그 스택에서 승, 상태 및 BSR가 나타납니다

그 고토 ISR이 밖으로 무엇입니까?

 
흠 .... 아니, "고토가 나타납니다"교육 ISR이있다 ... 그리고 난 단지 (INTCON "7")를 활성화 .. 거기에 다른 어떤 비트를 설정해야합니다 내가 무엇입니까?흠 .. btw 난 정상이 높은이나 낮은 우선 순위를 사용하지 않는 이상 .. 방해) = 사용하고

 
너도 파이를 등록 설정해야합니다.
당신을 반환하기 전에 플래그를 비트 삭제하셨습니까?
그것은 모든 데이터 시트에 있어요.당신은 PIC를 위해 읽어 봤어?

 
그래 ... 난 아직 작동하지 않습니다 set.But 않았다 = (

 
movf RCREG, 승;하기 승에서 데이터를 수신
movlw 08H; 뒀어 등록을 1로 이동
movwf LATB; PORTB에 LED가 점등으로 이동

이 경우 :

movf RCREG, 승, 승 등록을받을로부터 데이터를 이동
"" "movlw 08H" ""; 08H의 리터럴 값을 가진 승의 데이터를 덮어
movwf LATB; PORTB 세트, 3 일 (08H)당신 승의 데이터를 덮어 쓰시겠습니까?당신은 그것을 저장 havent 그리고 다음의 명령어와 함께 그것을 덮어 씁

 
음 ... 난 이미 코드를 교체했다 :movlw 08H; 뒀어 등록을 1로 이동
movwf LATB; PORTB에 LED가 점등으로 이동

이걸로 :

BSF LATB, 3; 빛이 이끄는 RB3

 
하이라이트 선 검사intcleanmovf savestatus, 승; 저장된 상태 정보를 얻을 수

movwf 상태; 상태를 복원합니다!(은행 =) 원래
swapf savew로, F; 원 * 은행 *에서 승 복원
swapf savew, 승; swapf 어떤 플래그에 영향을주지 않습니다당신 org 0x0018 성명을 가지고 있는지 확인하십시오

당신은 그것을 쉽게 movFF 명령을 사용하여 찾을 수이 방법은 일반적으로 낮은 우선순위 인터럽트 코드 템플릿 파일의 예제입니다코드 :

; 낮은 우선순위 벡터 및 루틴이 인터럽트

;이 코드를 할 때 우선 순위가 낮은 인터럽트가 발생 실행 시작됩니다.

만약 낮은 우선 순위 인터럽트를 사용하지 않습니다;이 코드를 제거할 수있습니다.ORG는 0x0018

만약 당신이 링커를 사용하여 고토 LPINT;이 포함만약 당신이 링커를 사용하여 코드;이 포함

만약 당신이 링커를 사용하여 LPINT;이 포함movff 상태, STATUS_TEMP; 상태에 등록하기

movff WREG, WREG_TEMP; 등록 작업하기

movff BSR, BSR_TEMP; BSR 등록하기; *** 낮은 우선 순위의 코드를 여기에 ***되면 인터럽트movff BSR_TEMP, BSR; BSR 레지스터를 복원

movff WREG_TEMP, WREG; 등록하고 복원

movff STATUS_TEMP, 상태, 상태 레지스터를 복원

retfie
 
내가 RS232 시리얼 통신에 대한 작업 (com)을 2 더하기 picdem합니다. 바이트 때, LED가 up.Hm. .. 난 우선 순위가 높은 인터럽트를 실행 옴 주도 접수되었습니다 (이 저장하고 오른쪽 컨텍스트를 복원해야하지? ) ...하지만 그렇게되면 난 낮은 priortity에 (또는 저장 및 컨텍스트를 복원하지 않고)로 여전히 높은 수준 prortity과 같은 작업을 변경할 수있습니다.
당신이 뭉치 내말 아십니까? 아래에 몇 가지 set.Thx 내가 가지고있는 레지스터입니다<ORG 0x0018 벡터 ;interrupt addresses>
.
.
.
.
BSF RCON, 7
BSF PIE1, 5; 인터럽트를 활성화 usart
movlw b'11000000 '
movwf INTCON
BCF 원사 INTCON, 1; INTF - 클리어 플래그 비트의 경우 그냥

 
인용구 :

하지만 그렇게되면 난 낮은 priortity에 (또는 저장 및 컨텍스트를 복원하지 않고)로 여전히 높은 수준 prortity 같은 작품 변경
 
나는 (나는 아직도 왜) 모르는 긴 답장을 게시할 수없습니다

오후 나 봅니다 그리고 낮은 우선 순위가 높은 제 2 ISR이 코드는 당신을 보내려고 할 것입니다

 

Welcome to EDABoard.com

Sponsor

Back
Top