Created
March 12, 2018 11:16
-
-
Save xiupos/8ed5ebd4295027b7969c8a1ca49f7cfc to your computer and use it in GitHub Desktop.
16F84A+SD1602H
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; キャラクタLCD | |
; ha2zakura | |
list p=16F84A ; 使用するPICの種類の定義 | |
#include <p16F84A.inc> ; 設定ファイルの指定 | |
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC | |
; _CP_OFF プログラムコードプロテクト無効 | |
; _WDT_OFF ウォッチドドック・タイマ無効 | |
; _PWRTE_ON パワーアップタイム有効 | |
; _HS_OSC 外部クロック(4MHz-20MHz) | |
;***** 定数の定義 ** | |
TIM1 EQU 0x0C ; タイマー用 | |
TIM2 EQU 0x0D ; タイマー用 | |
ADR EQU 0x0E ; アドレスデータ | |
DAT EQU 0x0F ; 書き込みデータ | |
NP EQU 0x10 | |
;********************************************************************** | |
ORG 0x000 ; リセット | |
BSF STATUS, RP0 | |
CLRF TRISA ; 0 : 出力, 1 : 入力 | |
CLRF TRISB ; bit0 -> RA0(RB0) | |
BCF STATUS, RP0 | |
call TIMTIM ; SD1602Hが起動するまで待つ | |
call TIMTIM | |
call TIMTIM | |
goto MAIN ; MAINへ移動 | |
;********************************************************************** | |
; メイン | |
MAIN call STARTUP ; 初期設定 | |
movlw 02H+80H ; Set DDRAM address | |
movwf DAT ; (カーソル位置) | |
call SUB1 | |
call TIM | |
movlw 'H' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'e' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'l' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'l' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'o' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw ',' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'w' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'o' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'r' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'l' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'd' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw '!' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 01H+40H+80H | |
movwf DAT | |
call SUB1 | |
call TIM | |
movlw 'w' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'i' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 't' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'h' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw ' ' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'P' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'I' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'C' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw '1' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw '6' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'F' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw '8' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw '4' | |
movwf DAT | |
call SUB2 | |
call TIM | |
movlw 'A' | |
movwf DAT | |
call SUB2 | |
call TIM | |
LOOP goto LOOP | |
STARTUP movlw B'00111000' ; Function set | |
movwf DAT ; [2](0)5x7dot [3](1)2行 | |
call SUB1 | |
call TIM | |
movlw B'00111000' ; Function set | |
movwf DAT ; [2](0)5x7dot [3](1)2行 | |
call SUB1 | |
call TIM | |
movlw B'00111000' ; Function set | |
movwf DAT ; [2](0)5x7dot [3](1)2行 | |
call SUB1 | |
call TIMTIM | |
movlw B'00111000' ; Function set | |
movwf DAT ; [2](0)5x7dot [3](1)2行 | |
call SUB1 | |
call TIM | |
movlw B'00001100' ; Display ON/OFF | |
movwf DAT ; [0]ブリンク [1]ブロックカーソル | |
call SUB1 ; [2]ディスプレイ | |
call TIM | |
movlw B'00000001' ; Display clear | |
movwf DAT | |
call SUB1 | |
call TIMTIM | |
movlw B'00000110' ; Entry mode | |
movwf DAT ; [0]表示シフト [1](1)右 | |
call SUB1 | |
call TIMTIM | |
return | |
; 書き込み ; E RW RS Data | |
SUB1 movlw B'00000100' ; 1 0 0 | |
movwf PORTA | |
movf DAT, W ; 1 0 0 Data | |
movwf PORTB | |
movlw B'00000000' ; 0 0 0 Data | |
movwf PORTA ; Dataを書き込む | |
return | |
; RAM書き込み ; E RW RS Data | |
SUB2 movlw B'00000101' ; 1 0 1 | |
movwf PORTA | |
movf DAT, W ; 1 0 1 Data | |
movwf PORTB | |
movlw B'00000001' ; 0 0 1 Data | |
movwf PORTA ; Dataを書き込む | |
return | |
; タイマー | |
TIM movlw 0x0FF | |
movwf TIM1 | |
TIMLP nop | |
decfsz TIM1, F | |
goto TIMLP | |
return | |
TIMTIM movlw 0x066 | |
movwf TIM2 | |
TIMLP2 call TIM | |
decfsz TIM2, F | |
goto TIMLP2 | |
return | |
END | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment