マイコンSTC12C5204ADの使い方6

マイコン側のシリアル通信プログラムを新しくしました。
シリアル通信のPythonのプログラムも新しくしました。

使用機材
aitendo_8051コアマイコン [STC12C5204AD]
aitendo_USB-TTL変換モジュール [U2TL2303-10P]
aitendo_抵抗内蔵角形LED [LED234R-WC5V]
aitendo_ブレッドボード[SYB-46]

回路
マイコンPORT/
3/--10K--GND
4/--USB-TTL変換TX
5/--USB-TTL変換RY(RX?)
12/--LED234R--GND
13/--LED234R--GND
14/--GND--USB-TTL変換GND
15/--SW--GND
   |--4.7K--+5V

28/--+5V--USB-TTL変換5V

マイコンのプログラムを「prog4.c」とします。
------------------------------------------------------
#include <8051.h>

void main() {

char c;

// Timer1 を使って、9600bps に設定する
TMOD |= 0x20; // Timer1: mode=2
TH1 = 0xFD; // set reload value
TCON |= 0x40; // start Timer1

// UART を 8bit mode に設定、受信を許可(REN=1)
SCON= 0x50; // 8bit-UART(SM0=0,SM1=1), REN=1

/*
UARTでデータを受信すると、RIフラグが立つ。
RI フラグを検出後、RIフラグをクリアして、SBUF からデータを受信。
送信は、SBUF にデータを書き込むと送信される。

P2_4とP2_5は出力ポートとしてLEDを付ける。
P2_6は入力ポートとしてSWでGNDと+5Vを切り替える。
*/

for(;;) {
if(RI) {
RI = 0;
c = SBUF;
if(c == 0x61){
P2_4 = 0x00;
P2_5 = 0x00;
}
if(c == 0x62){
P2_4 = 0xff;
P2_5 = 0xff;
}
if(P2_6 == 0x00){
c = 0x61;
SBUF = c;
} else {
c = 0x62;
SBUF = c;
}
}
}
}
------------------------------------------------------
prog4.cをコンパイルしてマイコンに入力します。

------------------------------------------------------
Pythonのプログラムを下に示します。
ファイル名を「test4.py」とします。
------------------------------------------------------
import serial

ser = serial.Serial('/dev/ttyUSB0',9600)

ser.write("a")

print(ser.read())

ser.close()
------------------------------------------------------
上のプログラムを実行します。
------------------------------------------------------
aaa@aaa:~/Desktop/シリアル_C言語/prog4$ python test4.py
b
SWを切り替えて
aaa@aaa:~/Desktop/シリアル_C言語/prog4$ python test4.py
a
------------------------------------------------------

今回はマイコンのプログラムで苦労しました。
C言語では文字定数や文字変数が使えない。
よって文字はアスキー変換して16進数で
使いました。

実験中の写真です。