フォト
無料ブログはココログ

MyList

« モニタ(2) | トップページ | TD4 »

2011年9月 6日 (火)

sdcc

SDCCでテストプログラムを書いてみる.
まずは Hello World

/*
* hello world
* Sep.2011 / Yoshi
*/
#include <stdio.h>
#include <mcs51>

#include "io.h"
#define printf printf_fast

void main(void) {
        printf("Hello world!\n");
        exit(0);
}

io.c

#include <stdio.h>
#include <mcs51/8051.h>
#include "e;paulmon2.h"e
#include "io.h"

char getchar(void) {
        return pm2_cin();
}

void putchar(char c) {
        if (c=='\n') pm2_cout('\r');
        pm2_cout(c);
}

void exit(char c) __naked {
        c;
        __asm
        ljmp 0x0000
        __endasm;
}

pm2_cin(),pm2_cout()はPaulmon2への入出力サブルーチンへのインタフェースが記述されたpaulmon2.cで定義されている.
paulmon2.c, paulmon2.h は親切な人が公開しているのでぐぐると見つかる

コンパイル

#sdcc -mmcs51 --model-small --code-loc 0x8000 hello.c io.rel paulmon2.rel

実行結果

Helloworld

九九の表

9x9

printf_fast() は %3d のように出力幅を指定できるが %02x のように0で埋めることができない. printf_small() はその逆らしい.「帯に短したすきに長し」

 EZ-USBで遊んでいたころにsdccを使っていた.
   EZ-USBはCODE領域が2kしかないので,printf_tiny()しか使えずソースコードに手を入れて %02x がちゃんと出力されるようにして使っていた.
8031SBCはcode領域が32kとれるのでとっても楽である.

« モニタ(2) | トップページ | TD4 »

8031/8052 SBC」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: sdcc:

« モニタ(2) | トップページ | TD4 »