電子工作の知恵袋

 
 

 

PixiModule UART
USB-UART変換ケーブル




 

    *コンテンツはお客様ご自身のご判断と責任においてご利用ください。
     また、掲載内容を他に流用・転載することは一部・全てを問わず固くお断りいたします。
     引用する場合はリンク表示にてお願いいたします。
     


電子工作の知恵袋


汎用Cソースコードの説明1

 

 

    このページでは、当店提供の汎用Cソースコードを使います。 

    また、ここでご説明する内容は当店の商品であるPIC16F690マイコンモジュールを前提としています。

    他社製マイコンボードでの作動は一切関知していませんのでご注意ください。 

      

     

     

     

    ・汎用ソースコードの構成

     

    ご提供している汎用ソースコードはC言語で書かれています。

    ユーザーサポートページにて以下リンクでご提供しています。

     

     

    ファイルはzip形式で、Windows XP以降であれば簡単に解凍することができます。

    中身は3種類のファイルとReadMeで構成されています。

     

      (1)main16f690.c

      (2)bios16f690.c

      (3)ReadMe.txt
       

     

    本体ソースコードは main16f690.c です。

    bios16f690.c は本体を補助する関数群で、PIC16F690に内蔵されている各機能を使うための関数が入っています。

    尚、Cコンパイラーはコンパイルする時にbios16f690.cを探しますので、bios16f690.cのファイルはmain16f690.cと同じフォルダに必ず保存するように注意してください。

     

    このソースコードで前提としているCコンパイラーはMicrochip Technology社が無償で配布しているHI−TECH Cコンパイラー (略) Liteモードとなります。

    このコンパイラーのダウンロードリンクは、ユーザーサポートページに置いてありますのでそこから入手するか、PICkit2 スターターキットに付属しているCDから入手するようにしてください。

    HI−TECHのCコンパイラー以外を使う場合は、そのコンパイラー特有部分の手直しが必要です。

     

     

     

     

    (本ページの前提条件)

    ソースコードの説明に関しては、少なくとも以下のことを知っているか、これから勉強する方を前提としています。

     

      ・C言語文法

      ・簡単なハードウエア(回路)がわかる

      ・PIC16F690の概要

     

     

     

     

     

    ・main16f690.c の機能

     

    本体プログラムはマイコンのプログラムを作る時に面倒な初期化手続き部分と処理の仕方のフレーム(枠組み)を提供しています。

    要はPIC16F690に特化したテンプレートというところです。

    このテンプレートに沿ってご自分のプログラムを記入すればだいたいのことはできるようになります。

     

     

    本体プログラムは以下の部分に更に細かく分かれてます。

     

     

      (1)プログラムのメモ部分

      (2)初期化部分

      (3)自分のプログラムを書く部分

      (4)割り込みの処理を書く部分

     

     

     

     

     

    (1)プログラムのメモ部分

     

     //PIC16F690 テンプレート 091031-1

     

    /******************************************************************

    <改訂履歴>

     

    2009.10.31 初版

    *******************************************************************/

     

    /***************************(重要)使用について***********************

    ・本コードは、エレラボドットコムのPIC16F690を搭載した製品用です。

     

            (省略)

     

    ・個人・企業に関わらず許可無く商用として配布する事を禁止します。

     

    (最新情報は以下サイトで確認してください)

    エレラボドットコム http://www.ele-lab.com/

    ********************************************************************/

     

     

    //製品情報---------------------------------------------------

     

        char vernum = 0;

     

        //目的:

        //機能概要:@

        //     A

     

     

            (省略)

     

     

            RC4:(DIO)未使用

            RC5:(PWM)PWM出力

            RC6:(DIO)未使用

            RC7:(DIO)未使用

        

    ------------------------------------------------------------*/

      

    このエリアは、自分がプログラムでどのようにポートを設定したかなどをメモ帳として記載する部分です。

    残しておきたいことがあればこのエリアに記載しておくとよいでしょう。

    ポートの入出力先などをここに書いておくと、将来忘れたときなど便利です。

    あくまで自分が忘れないようにするためのメモエリアです。

     

    メモの記載位置は/* と */ に挟まれている部分か、冒頭に//が付いている行となります。

    それ以外の部分は、Cコンパイラーがエラーになるので書かないように注意してください。

     

    また、このエリアには当店提供のソースコードということと、使用条件が記載されています。

    ご利用前に目を通していただくようお願いします。

     

     

     

     

     

     

     

     

    (2)初期化部分

     

    このエリアはPIC16F690を使うために必要な初期設定を行う部分です。

    PICに内蔵されている各機能の初期化を行うために更にいくつかのエリアに分かれています。

     

     

     

     

    (a)インクルードファイル

     

    //インクルードファイル-----------------------------------------

    #include <pic.h>

    #include "bios16f690.c" //本ソースファイルと同じフォルダにコピーペーストしておくこと

     

    この部分に手を加えることは基本的にはありませんが、使うCコンパイラーがHI−TECHではない場合には、使うCコンパイラーの記述方法に合わせて変更する必要があります。

    変更の仕方は、使うコンパイラーのマニュアルをご覧ください。

      

     

    (b)Config bit

     

    //Config bit---------------------------------------------------

    __CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & UNPROTECT & BORDIS & IESODIS & FCMDIS);

     

    __config・・・・・では、チップの起動条件やソフトウエアで設定できない(しない)情報を記載しています。

    変更する必要はありません。

     

     

     

    __EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);     //内蔵EEPROMの初期化データ(8バイト単位)必要に応じ同じ形式で行数を増やして使用

     

    内蔵されているEEPROMの初期化データを指定する行です。

    内蔵EEPROMは全部で256バイトありますが、この命令で一度に指定できるのは8バイト分です。

    よって、__EEPROM・・・の行をバイト数に合わせて必要行数だけ記載してきます。

    例えば、16バイトを格納するには

     

      __EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00); 

      __EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00); 

     

    このように2行必要です。

    また、指定した値はEEPROMの最初から順に詰めて格納されます。

    つまり、この命令はEEPROMの途中から格納ということはできません。

     

     

     

     

    (c)予約グローバル変数とグローバル変数定義エリア

     

    //予約グローバル変数-------------------------------------------------

        unsigned char rxdata =0x00;     //USART受信データ用変数

        unsigned char txdata =0x00;     //USART送信データ用変数

        unsigned char pdataa=0x00;      //ポートAデータ処理用変数

        unsigned char pdatab=0x00;      //ポートBデータ処理用変数

        unsigned char pdatac=0x00;      //ポートCデータ処理用変数

     

     

    このエリアはプログラムのどこでも使える変数を定義しています。

    予約・・・の部分は注記で書いてある通り、UARTの送信と受信で使用する変数とポートA、ポートB、ポートC用に使用する変数をあらかじめ定義しています。

    これらは、基本的に変数ですので自由にプログラム内で読み書きしていいのですが、USART用の予約変数でrxdataだけは書き込み禁止です。

    このrxdata変数は、'main16f690.c'が受信時に受信したデータを格納する変数で、他のプログラムから勝手に書き換えられると受信データが混乱するため、読み出し専用として扱ってください。

    その他の4つの変数は、利便性を考え事前に予約してあるだけです。

     

     

    //グローバル変数定義エリア-------------------------------------------

     

    ご自分でプログラムのどこであっても使うことのできるグローバル変数を定義したい場合は、このエリアに記載してください。

     

    マクロを使って、定数などをこのエリアで設定するのもよいでしょう。

     

      (例) #define ele-lab 1 など

     

     

     

     

    (d)追加関数定義エリア

      

     //追加関数定義エリア-------------------------------------------------

     

     

    このエリアは、自分で関数を定義したい時に記載するエリアです。

     

     

     

     

     

     

    (e)ローカル変数定義エリア

     

    void main (void){

     

        //ローカル変数定義エリア------------------------------------

     

     

    これ以降main関数の記述となります。

    このエリア内にはmain関数だけで使用する変数を定義してください。

    ここで定義した変数や定数はmain関数内でのみ使用できます。

     

     

     

     

    (f)クロック設定エリア

     

        //クロック設定----------------------------------------------

        OSCCON=0x70;    //OSC 8MHZ

     

    このエリアはPIC16F690の基本発振周波数を設定しています。

    ソースコードでは8MHzを前提として各パラメーターが設定されています。

    事情がない限り変更しないでください。

    変更する場合は、クロックに依存する部分のパラメータを全て書き換える必要があります。

     

     


カテゴリ
電子工作の知恵袋 最新情報