目次
前
次
カウンタの使い方
オシロジイラズ基板には、74LS193と4040を用意しています。
74LS193のQD出力に4040のクロック入力を接続。
74LS193の2つのクロック入力は、基板上の発振器
(2種あり)の出力とクリップワイヤーで接続。
カウンタ周辺の回路図は、以下。
カウンタの出力のうち、複数ビットを選んで、テストや
デバッグしたい回路に与えることができます。
1秒以上続く信号を生成したい場合、発振器の周波数を
下げるか4040の出力を対象回路に印加します。
4040の出力は、12ビットあるので、最大で4096倍の
時間幅をもつ信号を生成できます。
出力は、DIPスイッチで指定する論理値を利用するので
手動でDIPスイッチの論理値を変えて、クロックにする
こともできます。
手動でDIPスイッチの論理値を変えることは、面倒なので
PICで1Hz、10Hzを生成しています。
この回路図は、以下。
1Hz、10Hzを74LS193のクロック入力に接続できます。
カウンタのクロック信号源は、次の4種になります。
- 74HC14出力#0
- 74HC14出力#1
- PIC出力 10Hz
- PIC出力 1Hz
回路図でみると、以下。
PICは、8ピンのICソケットに挿してあります。
ワンチップマイコンを利用すると、100Hz以下の
任意の周波数を生成できます。
必要ならばファームウエアを書き換えて対応。
PIC12F509が、死蔵品になっていたので
次のファームウエアを書き込んで利用。
list p=12F509 ; list directive to define processor
#include <p12F509.inc> ; processor specific variable definitions
;+++++++++++++++++++++++++++++++++++++
; configrate
; system clock intenal 4MHz
; enable MCLR pin
; disable Watch Dog Timer
;+++++++++++++++++++++++++++++++++++++
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC
; data area address
XCNT EQU 0x10
EXEFLG EQU 0x11
HCNT EQU 0x12
LCNT EQU 0x13
CNTH EQU 0x14
CNTL EQU 0x15
;*** reset entry ***
ORG 0x000
START:
;************
; initialize
;************
; initialize GPIO
CLRF GPIO
; initialize GPIO direction
MOVLW 0x38
TRIS 6
; clear TMR0
CLRF TMR0
; initialize Timer0 prescaler
; 4MHz / 4 = 1MHz , 1MHz / 8 = 125kHz
MOVLW 0xC2
OPTION
; others
CLRF XCNT
CLRF EXEFLG
CLRF CNTH
CLRF CNTL
; 25 -> HCNT
MOVLW 0x19
MOVWF HCNT
; 250 -> LCNT
MOVLW 0xFA
MOVWF LCNT
;++++++++++++++++++++
; main
;++++++++++++++++++++
MAIN:
; monitor for debug
BTFSC XCNT,0
GOTO MAIN1
BCF GPIO,2
GOTO MAIN2
MAIN1:
BSF GPIO,2
MAIN2:
INCF XCNT,F
; get TMR0
G_M:
; clear flag
CLRF EXEFLG
; get TMR0
MOVF TMR0,W
; ? TMR0 = 250
XORLW 0xFA
BTFSS STATUS,Z
GOTO G_M_E
; 0 -> TMR0
CLRF TMR0
; if TMR0 = 250 , set flag
BSF EXEFLG,0
G_M_E:
; judge
BTFSS EXEFLG,0
GOTO MAIN4
; decrement 10Hz counter
DECF HCNT,F
MOVF HCNT,W
; ? HCNT = 0
BTFSS STATUS,Z
GOTO MAIN3
; 25 -> HCNT
MOVLW 0x19
MOVWF HCNT
; increment (20Hz counter)
INCF CNTH,F
;
MAIN3:
; decrement 1Hz counter
DECF LCNT,F
MOVF LCNT,W
; ? LCNT = 0
BTFSS STATUS,Z
GOTO MAIN4
; 250 -> LCNT
MOVLW 0xFA
MOVWF LCNT
; increment (2Hz counter)
INCF CNTL,F
MAIN4:
; impress
BTFSC CNTH,0
GOTO MAIN5
BCF GPIO,0
GOTO MAIN6
MAIN5:
BSF GPIO,0
MAIN6:
BTFSC CNTL,0
GOTO MAIN7
BCF GPIO,1
GOTO MAIN8
MAIN7:
BSF GPIO,1
MAIN8:
GOTO MAIN
END
アセンブル、リンクには、MPLABを利用したので
これも在り合わせのソフトウエアを活用したこと
になるでしょう。
発振は、オシロジイラズの入力をモニタする
LEDを使って確認しました。
LEDのブリンクで、内蔵発振を確認するのは、オシロ
スコープの1kHz発振を使い、プローブの調整をする
操作に似ていると思います。
目次
前
次