;
; ためしに動かしてみる
;                                      2001/11/14
;
; 秋月アセンブラ用



;              ----__----
;       RA2 1-|*         |-18 RA1
;       RA3 2-|          |-17 RA0
; RA4 TOCKI 3-|          |-16 OSC1 CLKIN
;     /MCLR 4-|          |-15 OSC2 CLKOUT
;       Vss 5-| PIC16C84 |-14 Vdd
;   RB0 INT 6-|          |-13 RB7
;       RB1 7-|          |-12 RB6
;       RB2 8-|          |-11 RB5
;       RB3 9-|          |-10 RB4
;              ----------



	include	16c84.h		; シンボルの定義

	.16c84				; デバイスの設定（省略できません）
	
	.osc	HS			; 発振タイプの設定
						; LP	ローパワー発振子（～約２００ｋＨｚ）
						; HS	高速クリスタル（約４ＭＨｚ～２０ＭＨｚ）
						; RC	ＲＣ発振
						; XT	クリスタル・セラロック（～約４ＭＨｚ）

	.wdt	off			; ウォッチドックタイマの有効・無効の設定
						; 省略時は“on”
						
	.pwrt	on			; パワーアップタイマの有効・無効の設定
	
	.protect	off		; プロテクトの設定
						; “on”にすると、その IC からプログラムを読み出す事が
						; 出来なくなる
						; 省略時は“off”

;	eedata	{value[,value..]}	; データ EEPROM の初期値をセットする
								; この命令を使用することで、プログラムの
								; 書き込みと同時にデータ EEPROM の内容を
								; 書き込む事が出来る
								; （PIC16x84 のみ有効）

;	eeorg	{value}		; データ EEPROMのアセンブラ内部アドレスをセットする
						; （eedata 命令で書き込むアドレスをセットする）
						; （PIC16x84 のみ有効）

; -----------------------------------------------------------------------------

STATUS	equ		03h		; ステータスレジスタ(BANK0)
RP0		equ		5		; STATUS,RP0 RAMのバンク切り替え
TRISA	equ		05h		; ポートA出力/入力設定 0:出力 1:入力(BANK1)
TRISB	equ		06h		; ポートB出力/入力設定 0:出力 1:入力(BANK1)
PORTA	equ		05h		; I/OポートA(BANK0)
PORTB	equ		06h		; I/OポートB(BANK0)
OPTION	equ		01h		; オプションレジスタ(BANK1)
RBPU	equ		7		; OPTION,RBPU ポートBのプルアップ 0:行う 1:行わない

		org		0ch
a		ds		1		; 0ch から 1 バイト分のメモリを確保し、
						; ラベル“a”を付ける（変数a）

; -----------------------------------------------------------------------------

		org		000h		; リセット時は 000h からプログラムがスタート
		goto	start

		org		004h		; 割り込み時 004h にジャンプしてくる
		retfie

start
		bsf		STATUS,RP0	; bank1
		movlw	11100000b	;
		movwf	TRISA		; ポートAを出力に設定

		movlw	00000000b	;
		movwf	TRISB		; ポートBを出力に設定

		bsf		OPTION,RBPU	; ポートBのプルアップを有効

		bcf		STATUS,RP0	; bank0
		
		clrf	a			; 変数aをクリア
		
loop
		movlw	00011111b	; w=00011111b
		movwf	PORTA		; PORTA=w
		movlw	11111111b	; w=11111111b
		movwf	PORTB		; PORTB=w

		movlw	00000000b	; w=00000000b
		movwf	PORTA		; PORTA=w
		movwf	PORTB		; PORTB=w
		
		goto	loop
		