PIC 12F675를 프로그래밍하여 GPIO 0 핀 (핀 번호 7)에 연결된 LED 다이오드를 깜박 거려했습니다. I는 출력으로 모두 설정지연 루프 PIC 어셈블리 코드가 브레드 보드에서 작동하지 않습니다.
clrf ANSEL
:
는 I는 디지털 모드로 핀 설정
clrf TRISIO
하고 마침내는 I가 사용되는 루프이다
;this delay loop should consume 1 000 000 ticks
;which is 1 second approximately
movlw 0xff ;assigned the highest 8bit value to accumulator
movwf 0x20 ;moved the value to general purpose register 20
movwf 0x21 ;moved the value to GPR 21
clrw ;cleared the working register (accumulator)
movlw 0x15 ;assigned the value 15 to accumulator
movwf 0x22 ;moved the value to GPR 22
bsf GPIO,0 ;set the first pin high
loop1
decfsz 0x20, 1
goto loop1
decfsz 0x21, 1
goto loop1
decfsz 0x22, 1
goto loop1 ;nested loops to delay further action
bcf GPIO,0 ;set the first pin low
은
그리고 마침내 이것은 주먹 장소에서 칩을 구성하기 위해 사용한 코드입니다.
__CONFIG _FOSC_INTRCIO & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _CP_OFF & _CPD_ON
내 문제는 MPLAB X에서 프로그램을 컴파일하고 단계별로 디버깅 할 때 프로그램 실행에 문제가 없다는 것입니다. 비트 GPIO 0은 실제로 루프에 따라 상태를 변경합니다. 그러나 칩을 브레드 보드에 연결할 때 LED가 깜박이지 않고 계속 켜져 있습니다.
제 질문은 : 문제가 오실레이터 구성 오류 때문일 수 있습니까? (나는 또한 100 nF 디커플링 세라믹 커패시터를 사용한다.)
나는 꽤 많은 코드 변형을 시도했다. 어떤 조언을 환영합니다. 내가 사용
전체 .ASM 코드 :
list p=12F675
#include <p12F675.inc>
__CONFIG _FOSC_INTRCIO & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _CP_OFF & _CPD_ON
OSCCAL equ 0x90
TRISIO equ 0x85
ANSEL equ 0x9f
GPIO equ 0x05
org 0x00
bsf 0x03,5 ;bank1
movlw b'00111100' ;osccal value
clrf OSCCAL
movwf OSCCAL ;osccal set
movlw b'11111110' ;ansel value
movwf ANSEL ;set pin AN0 as digital I/O
movlw b'11111110' ;trisio value
movfw TRISIO ;set pin GPIO0 as output
clrf TRISIO
bcf 0x83,5 ;bank0
clrf GPIO ;clear GPIO port
start
movlw 0xff
movwf 0x20
movwf 0x21
clrw
movlw 0x15
movwf 0x22
bsf GPIO,0
loop1
decfsz 0x20, 1
goto loop1
decfsz 0x21, 1
goto loop1
decfsz 0x22, 1
goto loop1
bcf GPIO,0
movlw 0xff
movwf 0x20
movwf 0x21
clrw
movlw 0x15
movwf 0x22
loop2
decfsz 0x20, 1
goto loop2
decfsz 0x21, 1
goto loop2
decfsz 0x22, 1
goto loop2
goto start
end
워치 독 타이머가 켜지거나 꺼져 있습니까? –
이 코드 조각을 생성했습니다 : _WDTE_OFF, 나는 그것이 꺼져 있다고 생각합니다. 모든 생성 된 컨디션 비트 코드 : __CONFIG _FOSC_INTRCIO & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _CP_OFF & _CPD_ON – Avo
@Aboe 질문을 편집하여 자세한 내용을 추가하십시오. –