本文へスキップ

アトメル社のAVRマイコンをつかった電子工作および無線を使った電子工作を紹介します。





ホーム > ソフト室 >AVRマイコンで始めるC言語の使い方 >Aのn乗の計算。

AVRマイコンで始めるC言語の使い方

Aのn乗の計算。

ここではA = 3、n = 4として計算をします。
結果を液晶表示器に表示します。

フローチャート

1.演算を行うためにint型変数を宣言するとともに初期  値を入れます。
  a = 3,n = 4, result = 1, k = 0, m;
  resultは演算結果を入れます。
  kは数字から文字列に変換する際に使用します。
      mは変数として使用します。
      配列str[5]を宣言します。
2.ポート設定、LCD初期化は前述と同一です。
3.演算をして結果をresultに格納します。
      forループを使用して、n回Aを乗算することでAの
  n乗の計算を行います。
4.換算結果を文字コードに変換しstr[]に格納します。
  文字コードへの変換は前述と同じです。
7.文字コードに変換した結果をLCDに表示させます。

プログラム

/*
 * avr090.c
 *
 * aのn乗を計算
 */ 


#include <avr/io.h>
#include "hd44780.h"    // EZ-LCDインクルードファイル

void InitHard( void);   // ポートの初期化及び割込設定

int main(void)
{
        int     a = 3, n = 4, result = 1, k = 0, m;
        char str[5];
        
        InitHard();                     // ポートの初期化をします。
        lcd_init ();            // LCDの初期化をします。
        
        for ( m = 0; m < n; m++)        // aのn乗を計算します。
        {
                result = result * a;
        }               
        
        k = 0;          // kを初期化します。
        do   // 剰余を計算します。
        {
                str[ k++] = result % 10 + 0x30;
                result /= 10;
        }while( result);                

        for ( m = 0; m < k; m++)        //LCDに表示します。
        {
                lcd_putc( str[ k - (m + 1)]);
        }
                                
    while(1)
    {
        //TODO:: Please write your application code 
    }
}

void InitHard( void) // ポートの初期化
{
        // ポートB初期設定
        DDRB = 0xff;    // PB7~PB0を出力に設定します。
        PORTB = 0;              // PB7~PB0に'L'を出力します。
        // ポートC初期設定
        DDRC = 0x3f;    // PC7,PC6は初期(入力)、PC5~PC0を出力に設定します。
        PORTC = 0;              // PC7~PC0に'L'を出力します。
        // ポートD初期設定
        DDRD = 0xf0;    // PD7~PD4は出力、PD3~PD0は入力に設定します。
        PORTD = 0;              // PD7~PD0に'L'を出力します。
}

実行結果

前ページ次ページ