掲示板


[記事リスト] [返信する] [新着記事] [過去ログ] [ワード検索] [留意事項] [管理用]

記事No 1212
タイトル タイマー0割り込みの設定
投稿日 : 2018/10/01(Mon) 16:10:51
投稿者 河原 利昭   <kawahara6_16_4@yahoo.co.jp>
参照先
アセンブラで記述し16F18857,16F18313両方で試しましたがタイマー0割り込みの設定できません。ご教示方宜しくお願いします。
tes18313A.asmファイルをコピペしました。
MPLAB X IDE v4.15 のシミュレータの割り込みルーチンにブレークポイントを設定して確認しました。
尚、PICに書き込みしてNCOは NCO1INCL データを変更すると周波数が変化しているので動作していると思います。
********
; ファイル名 tes18313A.asm
; タイマー0割込み、アナログ処理 NCO テスト用
; RA0-DAC1OUT RA1-ANSA1 RA2-NCO1 RA3-IN RA4-LATA4 RA5-LATA5
LIST P=16F18313
INCLUDE P16F18313.INC

__CONFIG _CONFIG1, _RSTOSC_HFINT1 & _FEXTOSC_OFF
__CONFIG _CONFIG2, _MCLRE_OFF & _WDTE_OFF
__CONFIG _CONFIG3, _LVP_OFF

CNT50us EQU 20h ;*
CNT5ms EQU 21h ;*
CNT1ms EQU 22h ;*
timer EQU 23h ;*タイマー割り込み・ステージフラグ
T1ms EQU 00h ; TMR0割り込み1mSecフラグ
Steg00 EQU 24h ;*ステージカウンター00
St01 EQU 00h ;
St02 EQU 01h ;
St03 EQU 02h ;

swADA0 EQU 78h ;*sw抵抗ラダーRA0 A/D変換結果

;◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆
; -----------------------------------------------------
ORG 0h
GOTO init

; -----------------------------------------------------
; 割込み処理 <1msecタイマー割り込み>

ORG 4h ; 新16Fは復帰時のアドレス値がスタックに保存される
intr
CLRF PCLATH ; 割り込み処理内はページ‘0’の為クリアする

BSF PORTA,RA5 ;“ 1 ”にする(デバック用)

BTFSC PIR0,INTF ; RB0 変化割込み
GOTO MOintr

OUTMOin
BTFSS PIR0,TMR0IF ; タイマー0 割り込み
GOTO OUTintr

BCF PIR0,TMR0IF ; タイマー割り込みフラグクリア
BSF timer,T1ms

BCF PORTA,RA5 ;“ 0 ”にする(デバック用)

OUTintr ; 新16Fは復帰時自動的にレジスタ値が回復される
RETFIE ; 割込み許可リターン

MOintr
; BSF Poji,MOCin ;
BCF PIR0,INTF ;
GOTO OUTMOin

; -----------------------------------------------------
; 初期処理 <クロック&ポート設定 各種信号初期化>
init
; <TMR0割込みの設定>
BANKSEL T0CON0 ; ■ バンク T0CON0 に切替え
MOVLW B'10000000' ; TMR0 割り込み許可 ポストスケーラ 1:1
MOVWF T0CON0 ;
MOVLW B'01110100' ; HFINTOSC プリスケーラ 1:16
MOVWF T0CON1 ;

BANKSEL INTCON ; ■ バンク INTCON に切替え
MOVLW B'10000001' ; GIE RB0/INT 立ち上がりエッジ
MOVWF INTCON ; 割り込み許可

BANKSEL PIE0 ; ■ バンク PIE0 に切替え
MOVLW B'00100001' ; TMR0 RB0/INT 割り込み許可
MOVWF PIE0 ;
MOVLB 0 ; ■ バンク0に切替え

CLRF TMR0H ; TMR0をクリア
; BSF T0CON0,T0EN ; 念のため入れてみた 変化無かった
BSF Steg00,St01 ; ステージ1

; <クロック設定>
BANKSEL OSCFRQ ; ■ バンク OSCFRQ に切替え
MOVLW B'00000011' ; B'00000011' B'00000101'
MOVWF OSCFRQ ; CLOCK=8MHz CLOCK=16MHz

; <ポート設定>
MOVLB 0 ; ■ バンク0に切替え 
MOVLW B'00001010' ; 00001010
MOVWF TRISA ; RA1 はアナログ入力 RA3 はデジタル入力
MOVLW B'00101001' ; 00101001

; <A/D設定>
; BANKSEL ADCON0 ; ■ バンク ADCON0 に切替え
; MOVLW B'10000000' ; B'1000 0000'
; MOVWF ADCON0 ; A/D変換設定 左詰め ADCLK '000111'
; MOVLW B'00000111' ; B'0000 0001'
; MOVWF ADCLK ; Fosc/16
; MOVLW B'00000000' ; B'0000 000'
; MOVWF ADREF ; リファレンス電圧 マイナス側 VSS プラス側 VDD

BANKSEL ANSELA ; ■ バンク ANSELA に切替え
MOVLW B'00000010' ; B'0000 0010'
MOVWF ANSELA ; ANSA1をアナログ入力に設定
MOVLB 0 ; ■ バンク0に切替え

; <NCOの設定>
BANKSEL RA2PPS ; ■ バンク RC2PPS に切替え
MOVLW 0x1D ; NCO
MOVWF RA2PPS ; RC2をNCO出力に設定

BANKSEL NCO1CON ; ■ バンク NCO1CON に切替え
MOVLW B'10110000' ;
MOVWF NCO1CON ; NCOモジュール有効 FDC50%デューティ出力
CLRF NCO1CLK ; NCOクロック Fosc 選択
MOVLW B'00000111' ;
MOVWF NCO1INCL ; 初期値設定?
MOVLB 0 ; ■ バンク0に切替え
NOP
; -----------------------------------------------------
; メイン処理
main
BTFSS timer,T1ms ; タイマーフラグチェック
GOTO main ;

BCF timer,T1ms ; タイマーフラグクリア ★
BTFSC Steg00,St01 ; ステージ1?
GOTO Steg001

BTFSC Steg00,St02 ; ステージ2?
GOTO Steg02

BTFSC Steg00,St03 ; ステージ3?
GOTO Steg03

GOTO main

;◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆
;------------------ ステージ1 学習運転・D41+41G= 錠SW StRunOk 処理
Steg001

;------- A/D変換ポート指定
BANKSEL ADCON0 ; ■ バンク ADPCH に切替え
MOVLW B'00000101' ;
MOVWF ADCON0 ; ANA1 ADONを選択
MOVLB 0 ; ■ バンク0に切替え

; GOTO St01in

St01Out
BCF Steg00,St01 ;ステージ1をクリア
BSF Steg00,St02 ;ステージ2をセットしてMainへ
GOTO main ;



;◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆
;------------- ステージ2 AN0 A/D変換判定処理
Steg02

;--------- A/D変換指令
BANKSEL ADCON0 ; ■ バンク ADCON0 に切替え
BSF ADCON0,GO ; アナログポート ANA1 変換指令 
MOVLB 0 ; ■ バンク0に切替え

; GOTO St02in

St02Out
BCF Steg00,St02 ;ステージ2をクリア
BSF Steg00,St03 ;ステージ3をセットしてMainへ ※※
GOTO main

;◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆
;---------------------- ステージ3 AN1 A/D変換判定処理
Steg03

;--------- A/D変換ポート指定
BANKSEL ADRESH ; ■ バンク ADRESH に切替え
MOVF ADRESH,W ; AD変換結果
MOVWF swADA0 ; swADA0 に保存
MOVLB 0 ; ■ バンク0に切替え

; GOTO St03in

St03Out
BCF Steg00,St03 ;ステージ3をクリア
BSF Steg00,St01 ;ステージ1をセットしてMainへ
GOTO main ;

END

- 関連一覧ツリー (▼ をクリックするとツリーを一括表示します)


- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ
参照先
画像UP
暗証キー (英数字で8文字以内)
投稿キー (右画像の数字を入力) 投稿キー


- 投稿記事修正/削除フォーム -
処理 No 暗証キー

- WebForum -