PICBASIC 어셈블러 처리 방해가 됐나?

N

nebisman

Guest
안녕, 친구 :누구도 날 어셈블러 수준의 인터럽트 처리의 완벽한 예를 보여 드릴까요 PIC는 기본 프로.만약 예를 들어 USART RX와 방해가되었다 (그것은, 그러나 어떤 예를 들어 매우 감사합니다) 좋을 것

미리 감사드립니다
Nebisman

 
좀 봐 :
http://www.melabs.com/resources/samples.htm
거기 PBP에 대한 몇 가지 예제 코드를 ...은 ASM 구현의 사용 중단을 포함했다.

 
어셈블리 언어에서 '인터럽트
'을 켜십했다.PORTB.0에 (Inte) 인터럽트 LED 꺼짐으로 변합니다.
'프로그램과 .5 초 동안 기다립니다 뒷면에 LED가 변합니다.

var PORTB.7 주도

wsave var $ 20 바이트 시스템
'bank1의 RAM과 장치에 대한 wsave1 var 바이트 $ A0 시스템'필요
'bank2의 RAM과 장치에 대한 wsave2 var 바이트 $ 120 시스템'필요
'bank3의 RAM과 장치에 대한 wsave3 var 바이트 $ 1a0 시스템'필요
ssave var 바이트 bank0 시스템
psave var 바이트 bank0 시스템고토 시작하는 '본문 주위에 인터럽트 핸들러

'정의 인터럽트 핸들러
INTHAND myint 정의

'Assembly language로 인터럽트 핸들러
은 ASM

; 할인 승, 상태 및 PCLATH 레지스터, 만약 이전에 끝나지 않았어
myint movwf wsave
swapf 상태, 승
clrf 상태
movwf ssave
movf PCLATH, 승
movwf psave

; 여기서 인터럽트 코드를 삽입합니다
; 사용 금액 및 FSR 복원 및 기타 등록

BCF 원사 _led; 경우, LED는 인터럽트 해제
BCF 원사 INTCON, 1; 지우기 플래그가 인터럽트

; 저장된 레지스터 복원
movf psave, 승
movwf PCLATH
swapf ssave, 승
movwf 상태
swapf wsave로, F
swapf wsave, 승

retfie;의 방해로 돌아가기

endasm시작 : TRISB = $ 7 층 '의 나머지 LED는
OPTION_REG = $ 7 층 '활성화 PORTB pullups

INTCON = $ 90 '활성화 Inte 인터럽트

주도 = 1 '을 켜십시오 LED가

루프 : 만약 = 1 주도 그럼 루프를 '잠깐, 여기에있는 동안 LED가 여전히 계속되고있다
만약 우리가 여기 ', LED가 꺼져있습니다
일시 500 '잠깐 .5 초
고토 시작 '시작을 (다시) LED가 차례

 

Welcome to EDABoard.com

Sponsor

Back
Top