目次

カウンタの使い方

 オシロジイラズ基板には、74LS193と4040を用意しています。

 74LS193のQD出力に4040のクロック入力を接続。

 74LS193の2つのクロック入力は、基板上の発振器
 (2種あり)の出力とクリップワイヤーで接続。

 カウンタ周辺の回路図は、以下。




 カウンタの出力のうち、複数ビットを選んで、テストや
 デバッグしたい回路に与えることができます。

 1秒以上続く信号を生成したい場合、発振器の周波数を
 下げるか4040の出力を対象回路に印加します。

 4040の出力は、12ビットあるので、最大で4096倍の
 時間幅をもつ信号を生成できます。

 出力は、DIPスイッチで指定する論理値を利用するので
 手動でDIPスイッチの論理値を変えて、クロックにする
 こともできます。

 手動でDIPスイッチの論理値を変えることは、面倒なので
 PICで1Hz、10Hzを生成しています。

 この回路図は、以下。



 1Hz、10Hzを74LS193のクロック入力に接続できます。

 カウンタのクロック信号源は、次の4種になります。

 回路図でみると、以下。



 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発振を使い、プローブの調整をする
 操作に似ていると思います。


目次

inserted by FC2 system