- 締切済み
PIC16F18857 Timero割り込み
- PIC16F18857のTimer0の割り込みが掛からず困っています。
- マニュアルに書かれている項目の設定はしているつもりですが、何かが抜けているように思います。
- ご教授お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- koujikuu
- ベストアンサー率43% (429/993)
肝心の、TMR0設定、割り込み処理が未記載です _CSWEN_OFF ; The NOSC and NDIV bits cannot be changed by user software BANKSELOSCCON1 MOVLWB'01100101'; <NOSC><NDIV>Clock 1Mhz MOVWFOSCCON1 BANKSELOSCCON2 MOVLWB'01100101'; <COSC><CDIV>Clock READ ONLY 設定が矛盾しています 参考 TMR0_BLINK RA2 processor 16F18857 #include "P16F18857.INC" __CONFIG _CONFIG1 , _FEXTOSC_OFF & _RSTOSC_HFINT32 & _CLKOUTEN_ON & _CSWEN_ON & _FCMEN_ON __CONFIG _CONFIG2 , _MCLRE_ON & _PWRTE_OFF & _LPBOREN_OFF & _BOREN_ON & _BORV_LO & _ZCD_OFF & _PPS1WAY_OFF & _STVREN_ON & _DEBUG_OFF __CONFIG _CONFIG3 , _WDTCPS_WDTCPS_31 & _WDTE_OFF & _WDTCWS_WDTCWS_7 & _WDTCCS_SC __CONFIG _CONFIG4 , _WRT_OFF & _SCANE_not_available & _LVP_OFF __CONFIG _CONFIG5 , _CP_OFF & _CPD_OFF ORG 0 GOTO MAIN ORG 4 BANKSEL PIE0 BTFSS PIE0,TMR0IE BRA INT_R BANKSEL PIR0 BTFSS PIR0,TMR0IF BRA INT_R BCF PIR0,TMR0IF BANKSEL LATA MOVLW 0x04 ; RA2 BLINK XORWF LATA,F INT_R RETFIE MAIN BANKSEL OSCCON1 MOVLW 0x02 ; HFINT32 , 32MHz / 4 = 8MHz (FOSC) IORWF OSCCON1,F BANKSEL ANSELA ; RA2 OUTPUT BCF ANSELA,ANSA2 BANKSEL TRISA BCF TRISA,TRISA2 BANKSEL T0CON1 MOVLW 0x4C ; FOSC/4 , 1:4096 MOVWF T0CON1 ; 2MHz / 4096 / 256 = 1.9Hz BSF T0CON0,T0EN ; TMR0 START BANKSEL PIE0 BSF PIE0,TMR0IE ; Enables the TMR0 interrupt BSF INTCON,GIE ; Enables all active interrupts BRA $ ; STOP END
- koujikuu
- ベストアンサー率43% (429/993)
具体的な環境、プログラムの提示がないと 答えようがありません。
補足
以下のファイルです。 ;***************************************************************** ; Filename: Shanp100 * ; Date: 2019.5.21 * ; File Version: 0.9 * ; Author: Hayashi Masahiro * ; Description: * ; * ;**************************************************************** ;**************************************************************** ; * ; Revision History: * ; * ;**************************************************************** ;**************************************************************** ; MAIN PROGRAM ;**************************************************************** LIST P=PIC16F18857 #INCLUDE "p16f18857.inc" ; CONFIG1 ; __config 0x17EC __CONFIG _CONFIG1, _FEXTOSC_OFF & _RSTOSC_HFINT1 & _CLKOUTEN_OFF & _CSWEN_OFF & _FCMEN_OFF ; CONFIG2 ; __config 0x373F __CONFIG _CONFIG2, _MCLRE_ON & _PWRTE_OFF & _LPBOREN_OFF & _BOREN_OFF & _BORV_LO & _ZCD_OFF & _PPS1WAY_OFF & _STVREN_ON ; CONFIG3 ; __config 0x3AA __CONFIG _CONFIG3, _WDTCPS_WDTCPS_10 & _WDTE_SWDTEN & _WDTCWS_WDTCWS_3 & _WDTCCS_LFINTOSC ; CONFIG4 ; __config 0x2FFF __CONFIG _CONFIG4, _WRT_OFF & _SCANE_not_available & _LVP_ON ; CONFIG5 ; __config 0x3FFF __CONFIG _CONFIG5, _CP_OFF & _CPD_OFF ; ; ;******************************************************************************* ; EQU ;******************************************************************************* ; ;========================================================================== ; ; Register Definitions ; ;========================================================================== ; ;------User setting ----------------------------------------------------- ; USER_FLG EQU 0030H INT_FLG EQU 0031H HOLD_FLG EQU 0032H MOVE_FLG EQU 0033H MANU_FLG EQU 0034H MANUA_FLG EQU 0035H MANUB_FLG EQU 0036H MANUC_FLG EQU 0037H Dummy_FLG EQU 0038H INT_TMP EQU 0039H PORTAA EQU 003AH PORTA1 EQU 003BH PORTA2 EQU 003CH PORTA3 EQU 003DH PORTBA EQU 003EH PORTB1 EQU 003FH PORTB2 EQU 0040H PORTB3 EQU 0041H PORTCA EQU 0042H PORTC1 EQU 0043H PORTC2 EQU 0044H PORTC3 EQU 0045H TIM_BUFF EQU 004AH ; unused TIM_BUF1 EQU 004BH TIM_BUF2 EQU 004CH TIM_BUF3 EQU 004DH TIM_BUF4 EQU 004EH TIM_BUF5 EQU 004FH TIM_BUF6 EQU 0050H TIM_BUF7 EQU 0051H TIM_BUF8 EQU 0052H TIM_BUF9 EQU 0053H TIM_BUFA EQU 0054H TIM_BUFB EQU 0055H TIM_BUFC EQU 0056H ; unused Timer0_ON EQU B'00100000' Timer0_OFF EQU B'00000000' GIE_ON EQU B'11000000' GIE_OFF EQU B'00000000' SEC_2STEP EQU 5 ; 400msec Count SEC_1 EQU 5 ; 1sec Count SEC_30 EQU 5*30 ; 30sec Count ; ; ;------------------------------------------------------------------------ ; ; Program Start ; ;------------------------------------------------------------------------ ORG 00H GOTO INITAL ; Reset Vector ORG 04H GOTO INTERVAL ; Interrupt Vector ORG 08H MAIN_PROG CODE ; let linker place main program INITAL CLRW MOVLW H'00' MOVWF BSR ; Bank0 Select CLRF USER_FLG CLRF INT_FLG CLRF HOLD_FLG CLRF MOVE_FLG CLRF MANU_FLG CLRF MANUA_FLG CLRF MANUB_FLG CLRF MANUC_FLG CLRF INT_TMP CLRF PORTAA CLRF PORTA1 CLRF PORTA2 CLRF PORTA3 CLRF PORTBA CLRF PORTB1 CLRF PORTB2 CLRF PORTB3 CLRF PORTCA CLRF PORTC1 CLRF PORTC2 CLRF PORTC3 CLRF TIM_BUFF CLRF TIM_BUF1 CLRF TIM_BUF2 CLRF TIM_BUF3 CLRF TIM_BUF4 CLRF TIM_BUF5 CLRF TIM_BUF6 CLRF TIM_BUF7 CLRF TIM_BUF8 CLRF TIM_BUF9 CLRF TIM_BUFA CLRF TIM_BUFB CLRF TIM_BUFC BANKSEL TRISA MOVLW B'00111011' ; OOIIXOII MOVWF TRISA ; PORTA BANKSEL TRISB MOVLW B'11111111' ; XXIIXXII MOVWF TRISB ; PORTB BANKSEL TRISC MOVLW B'11111100' ; IIIIIXOO MOVWF TRISC ; PORTC BANKSEL OSCCON1 MOVLW B'01100101' ; <NOSC><NDIV>Clock 1Mhz MOVWF OSCCON1 BANKSEL OSCCON2 MOVLW B'01100101' ; <COSC><CDIV>Clock