id="hpbsmtparts">
本文へスキップ

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





ホーム > ソフト室 >AVRマイコンで始めるC言語の使い方 >10進→16進変換

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

10進→16進変換

10進数16589を16進数で表示します。
1行目に10進数を表示させます。
2行目に16進数を表示させます。

フローチャート

最初に10進数に変換して1行目に表示します。
次に16進数に変換して2行目に表示します。

プログラム

/*
 * avr110.c
 *
 * 10進数→16進数変換
 */ 


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

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

int main(void)
{
        int     k, m;
        unsigned int n16, n10 = 16589;
        char str[5];
        
        InitHard();             // ポートの初期化をします。
        lcd_init ();            // LCDの初期化をします。
        n16 = n10;
        
        // 10進変換
        k = 0;          // kを初期化します。
        do   // 剰余を計算します。
        {
                str[ k++] = n10 % 10 + 0x30;
                n10 /= 10;
        }while( n10);           

        lcd_locate( 0, 0);
        for ( m = 0; m < k; m++)        //LCDに表示します。
        {
                lcd_putc( str[ k - (m + 1)]);
        }
        
        // 16進変換
        k = 0;          // kを初期化します。
        do   // 剰余を計算します。
        {
                str[ k] = n16 % 16;
                if ( 0 <= str[k] && str[k] < 10)
                {
                        str[k++] += 0x30;
                }
                else
                {
                        str[k++] += 0x37;
                }                                               
                n16 /= 16;
        }while( n16);
                
        lcd_locate(1, 0);
        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'を出力します。
}

実行結果

前ページ次ページ

s