W
wylee
Guest
안녕하세요 사람,
현재 직면한 문제는 타이머 인터럽트 PicBasic, 이상한
광 센서를 만들 내가 CD를 사용하고 싶었 (사진 첨부)은 매 3 초 정도 걸릴 것이다 독서 광도 및 RS232를 통해 결과를 보내 참조하시기 바랍니다.PIC는 여기에 사용 PIC16F84A입니다
하지만 언제든지 프로그램의 명령어 세트를 불러 "readCDS"일상에 도달하면, 그냥 거기에, "명령은 이후"serout 실행되지 및 재부 팅 매달아!
난 '때문에 내가 "readCDS"댓글을'일시 중지, 100 "로 교체"교수형, 그것이 100ms하고 나서 실행을 일시 중지한다 "serout"명령을 눈치
내가 왜
이러는지 이해할
수 없다 ... 왜 그것을 실행할 수없습니다 "readCDS"RCTIME 명령을 사용합니다.인터럽트 사용하는 경우 테스트 & RCTIME 난 명령을 실현 prefectly 잘 실행됩니다.
이 TMR0 prescalar 1:256으로,
모든 TMR0 인터럽트
256us x (255 - 38으로 생성됩니다) = 55.552ms 설정되어있습니다."cntint"54 카운트하는 데 사용됩니다 약 째깍.3 초
또 하나 중요한 것은 지적하고, PicBasic Pro에서 MPLAB 내 코드에 어떤 오류는 표시되지 않습니다 필요해!
첨부된 내 PicBaisc 코드입니다 :'****************************PIC16F84A위한 '라이트 센서
"modedefs.bas"포함
기호 CDS = PORTB.3var CDS_raw 단어var CDS_val 바이트
기호 텍사스 = PORTB.2출력, 텍사스 주
상징 = PORTB.4
LED가
출력 LED가
DEFINE OSC 4DEFINE
1000년 CHAR_PACING
'인터럽트 카운터var intcnt 단어죄수 54 '3 초
int_tickVAR Wsave 바이트 $ 20 시스템 '저장 - 승 등록에 대한 위치VAR Ssave 바이트 bank0 체계 '저장 - 상태 레지스터에 대한 위치VAR Psave 바이트 bank0 체계 '할인 - PCLATH 등록에 대한 위치VAR Fsave 바이트 bank0 체계
DEFINE INTHAND ISR '인터럽트를 실행하기 위해 어떤 코드를 말해 PBP
고토 시작
은 ASMISRMovwf WsaveSwapf 상태, 승Clrf 상태Movwf SsaveMovf PCLATH, 승Movwf PsaveMovf FSR, 승Movwf Fsave
Endasm
TMR0 = 38
intcnt = intcnt 1
만약 다음 '3 초 intcnt = int_tickintcnt = 0
토글 LED가
'일시 정지 100readCDS '빛의 강도를 읽을 전화
Serout 텍사스, T2400, [ "=", # CDS_val, 10,13 CDS]
각각 endif
은 ASM출구bcf INTCON, 2; 재설정 TMR0 오버플로Movf Fsave, 승Movwf FSRMovf Psave, 승Movwf PCLATHSwapf Ssave, 승Movwf 상태Swapf Wsave로, FSwapf Wsave, 승RetfieEndasm
시작 :intcnt = 0TMR0 = 38OPTION_REG = % 00000111 'prescaler 256usINTCON = % 10100000 'TMR0 타이머 오버플로
start1 :고토 start1
readCDS :높은 CDS 'CDS 높은 핀일시 정지 버튼 5 '모자를 충전하자RCTIME CD를 1, CDS_raw '타임 & 기록 방전 시간
CDS_val = NCD CDS_raw반환
끝
'***************************
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요
현재 직면한 문제는 타이머 인터럽트 PicBasic, 이상한
광 센서를 만들 내가 CD를 사용하고 싶었 (사진 첨부)은 매 3 초 정도 걸릴 것이다 독서 광도 및 RS232를 통해 결과를 보내 참조하시기 바랍니다.PIC는 여기에 사용 PIC16F84A입니다
하지만 언제든지 프로그램의 명령어 세트를 불러 "readCDS"일상에 도달하면, 그냥 거기에, "명령은 이후"serout 실행되지 및 재부 팅 매달아!
난 '때문에 내가 "readCDS"댓글을'일시 중지, 100 "로 교체"교수형, 그것이 100ms하고 나서 실행을 일시 중지한다 "serout"명령을 눈치
내가 왜
이러는지 이해할
수 없다 ... 왜 그것을 실행할 수없습니다 "readCDS"RCTIME 명령을 사용합니다.인터럽트 사용하는 경우 테스트 & RCTIME 난 명령을 실현 prefectly 잘 실행됩니다.
이 TMR0 prescalar 1:256으로,
모든 TMR0 인터럽트
256us x (255 - 38으로 생성됩니다) = 55.552ms 설정되어있습니다."cntint"54 카운트하는 데 사용됩니다 약 째깍.3 초
또 하나 중요한 것은 지적하고, PicBasic Pro에서 MPLAB 내 코드에 어떤 오류는 표시되지 않습니다 필요해!
첨부된 내 PicBaisc 코드입니다 :'****************************PIC16F84A위한 '라이트 센서
"modedefs.bas"포함
기호 CDS = PORTB.3var CDS_raw 단어var CDS_val 바이트
기호 텍사스 = PORTB.2출력, 텍사스 주
상징 = PORTB.4
LED가
출력 LED가
DEFINE OSC 4DEFINE
1000년 CHAR_PACING
'인터럽트 카운터var intcnt 단어죄수 54 '3 초
int_tickVAR Wsave 바이트 $ 20 시스템 '저장 - 승 등록에 대한 위치VAR Ssave 바이트 bank0 체계 '저장 - 상태 레지스터에 대한 위치VAR Psave 바이트 bank0 체계 '할인 - PCLATH 등록에 대한 위치VAR Fsave 바이트 bank0 체계
DEFINE INTHAND ISR '인터럽트를 실행하기 위해 어떤 코드를 말해 PBP
고토 시작
은 ASMISRMovwf WsaveSwapf 상태, 승Clrf 상태Movwf SsaveMovf PCLATH, 승Movwf PsaveMovf FSR, 승Movwf Fsave
Endasm
TMR0 = 38
intcnt = intcnt 1
만약 다음 '3 초 intcnt = int_tickintcnt = 0
토글 LED가
'일시 정지 100readCDS '빛의 강도를 읽을 전화
Serout 텍사스, T2400, [ "=", # CDS_val, 10,13 CDS]
각각 endif
은 ASM출구bcf INTCON, 2; 재설정 TMR0 오버플로Movf Fsave, 승Movwf FSRMovf Psave, 승Movwf PCLATHSwapf Ssave, 승Movwf 상태Swapf Wsave로, FSwapf Wsave, 승RetfieEndasm
시작 :intcnt = 0TMR0 = 38OPTION_REG = % 00000111 'prescaler 256usINTCON = % 10100000 'TMR0 타이머 오버플로
start1 :고토 start1
readCDS :높은 CDS 'CDS 높은 핀일시 정지 버튼 5 '모자를 충전하자RCTIME CD를 1, CDS_raw '타임 & 기록 방전 시간
CDS_val = NCD CDS_raw반환
끝
'***************************
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요