Quantcast
Channel: JH7UBCブログ
Viewing all articles
Browse latest Browse all 440

PIC16F883その1

$
0
0
 ArduinoでAD9834DDSをコントロールする作業が一段落しました。
 
 次は、PICでのコントロールに挑戦します。
 
 使うPICは、PIC16F883にしました。
 
 なぜ、このPICかというと、まず安い。秋月で150円です。それから、入出力ポートが多い。24ポート使えます。
 
 WeB上には、あまりこのPICの使用例がないので、勉強を進める過程をブログに書いていこうと思います。
 
 このPICのファミリーは、PIC16F882/883/884/886/887です。主な違いは
     PIC      Flash SRAM EEPROM I/O A/D
PIC16F882 2048 128     128         28    11
PIC16F883 4096 256     256         24     11
PIC16F884 4096 256     256         35     14
PIC16F886 8192 368     256         24     11
PIC16F887 8192 368     256         35     14
で、882/883/886は28ピン、884/887は、40ピンです。
 
 まず、Lチカから始めます。
 
 PIC16F883は、今まで勉強したPIC16F84や16F88と比べると次のような点が違います。
 
 SFR(Special Function Register)が、BANK0~BANK3の4つあります。それだけ、いろいろな設定ができるようです。どのレジスタがどのバンクにあるか覚えるのは至難の業です。そこで、レジスタのバンク指定は、BANK DETECTIVEを使うことにします。つまり、BANKSEL BANK名と書くと自動的にBANKを指定してくれます。
 
 RB0のタクトスイッチを押すとRA0のLEDが点灯するプログラムです。(RB0は10KΩでプルアップ)電源は単3電池×2=3Vです。
 
イメージ 1
 
 ブレッドボードです。
 
イメージ 2
 
アセンブラ・ソースリストです。
 
    LIST P=PIC16F883
    INCLUDE P16F883.INC
 
;--------------------------------
;コンフィギュレーションの設定
;--------------------------------
 __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOREN_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _INTOSCIO 
 __CONFIG _CONFIG2, _WRT_OFF
 
    ORG  0X00
    GOTO SETUP
    ORG  0X04
 
SETUP
    BANKSEL ANSEL
    CLRF ANSEL ;アナログモードを使用しない
    CLRF ANSELH
    BANKSEL OSCCON
    MOVLW 70h
    MOVWF OSCCON ;CLOCK=8MHz
    BANKSEL TRISA
    CLRF TRISA ;RAは全て出力
    MOVLW 0FFh
    MOVWF TRISB ;RBは全て入力
    CLRF TRISC ;RCは全て出力
    BANKSEL PORTA
    CLRF PORTA  ;POARAクリア
    CLRF PORTB  ;PORTBクリア
    CLRF PORTC  ;POATCクリア
 
MAIN
    BTFSC PORTB,0  ;PB0が0になったらスキップ
    GOTO LEDOFF  ;RB0が1ならLEDOFFへ
LEDON
    MOVLW 01h
    MOVWF PORTA  ;RA0=1
    GOTO MAIN
LEDOFF
    MOVLW 00h
    MOVWF PORTA  ;RA0=0
    GOTO MAIN
 
    END
 
今回は、内部オシレータを使い、8MHzにセットしています。
方法は、CONFIGで、 _INTOSCIOとして、OSCCONに70hをセットします。
MOVLW 70h
 MOVWF OSCCON
 
PORTBは、ウィークプルアップできるので、やってみましたが、不安定なので、プルアップ抵抗をつけました。
 
 

Viewing all articles
Browse latest Browse all 440

Trending Articles