概要
PIC16F88とMPASM (アセンブリ言語)を使用した開発例として,LED点滅回路のプログラムを紹介します. 開発環境は下記のとおりです.
PIC | PIC16F88-I/P |
---|---|
MPLAB X IDE | MPLAB X IDE v2.15 |
MPASM | MPASMWIN v5.57 |
PICkit 2 | MPLAB X IDEを使用して書込み |
回路
回路図
電源はPICkit 2から5.0Vを供給しています. 内蔵クロック 8MHzで動作させています. RB0には,電流制限用抵抗 330Ωを経由してLEDが接続されています.
回路部品
下表は使用部品表です.
番号 | 部品名 | 型番 | 数量 | 参考単価 |
---|---|---|---|---|
U1 | PICマイコン | Microchip PIC16F88-I/P | 1 | 200円 |
LED1 | LED | 各社 各色 | 1 | 10円 |
R1 | 炭素皮膜抵抗 | 各社 1/4W 10kΩ | 1 | 1円 |
R2 | 炭素皮膜抵抗 | 各社 1/4W 330Ω | 1 | 1円 |
その他 | リード線など | 適量 |
プログラム
main.asm
下記はソースファイル「main.asm」です.参考になれば幸いです.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | LIST P=PIC16F88 #INCLUDE "P16F88.INC" ; CONFIG1 ; __config 0xEF70 __CONFIG _CONFIG1, _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CCPMX_RB3 & _CP_OFF ; CONFIG2 ; __config 0xFFFC __CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF CNT1 EQU 20H CNT2 EQU 21H CNT3 EQU 22H ORG 0 INIT BSF STATUS,RP0 ; Bank1に切替え MOVLW 70H ; 内蔵クロックの周波数を8MHzに設定 MOVWF OSCCON BCF STATUS,RP0 ; Bank0に切替え CLRF PORTA ; PORTAを初期化 CLRF PORTB ; PORTBを初期化 BSF STATUS,RP0 ; Bank1に切替え CLRF TRISA ; PORTAの入出力設定 CLRF TRISB ; PORTBの入出力設定 CLRF ANSEL ; A/D変換を無効化 CLRF ADCON1 BCF STATUS,RP0 ; Bank0に切替え CLRF ADCON0 MAIN MOVLW 01H XORWF PORTB,F ; RB0をビット反転 CALL TIMER3 ; 500ミリ秒タイマサブルーチンの呼出し GOTO MAIN ; 無限ループ TIMER1 ; 0.5ミリ秒タイマサブルーチン MOVLW D'250' MOVWF CNT1 LOOP1 NOP DECFSZ CNT1,F GOTO LOOP1 RETURN TIMER2 ; 100ミリ秒タイマサブルーチン MOVLW D'200' MOVWF CNT2 LOOP2 CALL TIMER1 DECFSZ CNT2,F GOTO LOOP2 RETURN TIMER3 ; 500ミリ秒タイマサブルーチン MOVLW D'5' MOVWF CNT3 LOOP3 CALL TIMER2 DECFSZ CNT3,F GOTO LOOP3 RETURN END |
更新履歴
2014/11/15 |
プログラムを修正(動作にほぼ影響なし)
|
---|---|
2014/11/14 | 公開開始 |
0 件のコメント:
コメントを投稿