マイコンSTC12C5204ADの使い方3

シリアルモニターから受信したデータの大文字小文字を変換して返す
プログラムです。
シリアルモニターはArduinoのを使います。
プログラムは、 200. STC micro のものを参考させていただきました。

使用機材
aitendo_8051コアマイコン [STC12C5204AD]
aitendo_USB-TTL変換モジュール [U2TL2303-10P]
aitendo_ブレッドボード[SYB-46]

回路
マイコンPORT/
3/--10K--GND
4/--USB-TTL変換TX
5/--USB-TTL変換RY(RX?)
14/--GND--USB-TTL変換GND
28/--+5V--USB-TTL変換5V

配線をチェックします。
------------------------------------------------------
aaa@aaa:~/Desktop/8051シリアル/prog2$ stcgal
Waiting for MCU, please cycle power: done
Protocol detected: stc12b
Target model:
Name: STC12C5204AD
Magic: E164
Code flash: 4.0 KB
EEPROM flash: 2.0 KB
Target frequency: 11.059 MHz
Target BSL version: 6.6H
Target options:
reset_pin_enabled=True
low_voltage_reset=False
oscillator_stable_delay=32768
por_reset_delay=short
clock_gain=high
clock_source=external
watchdog_por_enabled=False
watchdog_stop_idle=True
watchdog_prescale=256
eeprom_erase_enabled=False
bsl_pindetect_enabled=False
Disconnected!
aaa@aaa:~/Desktop/8051シリアル/prog2$
------------------------------------------------------

下記プログラムをprog2.cとします。
------------------------------------------------------
#include <8051.h>
void main() {
char c;
// Timer1 を使って、9600bps に設定する
TMOD |= 0x20; // Timer1: mode=2
TH1 = 0xFD; // set reload value
TCON |= 0x40; // set TR1; start Timer1
// UART を 8bit mode に設定、受信を許可(REN=1)
SCON= 0x50; // 8bit-UART(SM0=0,SM1=1), REN=1
// メイン; 簡易大文字小文字変換
for(;;) {
if(RI) {
RI= 0;
c= SBUF;
SBUF= (c > 0x40) ? (c ^ 0x20) : c;
}
}
}
------------------------------------------------------

sdccでコンパイルし、stcgalでチップに書き込みます。

------------------------------------------------------
aaa@aaa:~/Desktop/8051シリアル/prog2/2$ ls
prog2.c
aaa@aaa:~/Desktop/8051シリアル/prog2/2$ sdcc prog2.c
aaa@aaa:~/Desktop/8051シリアル/prog2/2$ ls
prog2.asm prog2.ihx prog2.lst prog2.mem prog2.rst
prog2.c prog2.lk prog2.map prog2.rel prog2.sym
aaa@aaa:~/Desktop/8051シリアル/prog2/2$ stcgal prog2.ihx
Waiting for MCU, please cycle power: done
Protocol detected: stc12b
Target model:
Name: STC12C5204AD
Magic: E164
Code flash: 4.0 KB
EEPROM flash: 2.0 KB
Target frequency: 11.347 MHz
Target BSL version: 6.6H
Target options:
reset_pin_enabled=True
low_voltage_reset=False
oscillator_stable_delay=32768
por_reset_delay=short
clock_gain=high
clock_source=external
watchdog_por_enabled=False
watchdog_stop_idle=True
watchdog_prescale=256
eeprom_erase_enabled=False
bsl_pindetect_enabled=False
Loading flash: 145 bytes (Intel HEX)
Switching to 19200 baud: testing setting done
Erasing 2 blocks: done
Writing flash: 640 Bytes [00:00, 2326.67 Bytes/s]
Finishing write: done
Setting options: Protocol error: incorrect magic in option packet
Disconnected!
aaa@aaa:~/Desktop/8051シリアル/prog2/2$
------------------------------------------------------

Arduinoのシリアルモニターを立ち上げ「Hello」と入力します。


「送信」ボタンをクリックすると下のようになります。


実験中の写真です。