マイコンSTC12C2052の使い方2(sdcc)


使用機材
aitendo_8051コアマイコン [STC12C2052]
aitendo_USB-UART変換 [U2UART2102-6PMCU]
aitendo_抵抗内蔵角形LED [LED234R-WC5V]
ブレッドボード

回路
マイコンPORT/
2/-->USB-UARTのTXD
3/-->USB-UARTのRXD
10/GND
12/GND-->作業終了後--LED234R--GNDに変更
13/GND
20/--SW--+5V

USB-UART変換をパソコンに認識させます。
aaa@aaa:~$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 004: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR
mySmartUSB light
Device004が変換器で、ID=10c4:ea60を控えます。

cd /etc/udev/rules.d/
sudo leafpad 54-udev.rules
ファイルに
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="uucp", MODE="0666"
と入力して保存します。

--------------------------(LedBlink.c)---------------------
#include <8052.h>
void delay(void);
void main(void)
{
while(1)
{
P1 = 0xFF; // Turn ON all LED's connected to Port1
delay();
P1 = 0x00; // Turn OFF all LED's connected to Port1
delay();
}
}
void delay(void)
{
int i,j;
for(i=0;i<0xff;i++)
for(j=0;j<0xff;j++);
}
-----------------------------------------------------------

LedBlink.cをsdccでコンパイルする。
aaa@aaa:~/Desktop/STC/example1$ sdcc LedBlink.c

上記を実行すると下記のようになる。
aaa@aaa:~/Desktop/STC/example1$ ls
1 LedBlink.ihx LedBlink.map LedBlink.rst
LedBlink.asm LedBlink.lnk LedBlink.mem LedBlink.sym
LedBlink.c LedBlink.lst LedBlink.rel

LedBlink.ihxをhexファイルに変換する。
aaa@aaa:~/Desktop/STC/example1$ packihx LedBlink.ihx > LedBlink.hex
packihx: read 25 lines, wrote 17: OK.

aaa@aaa:~/Desktop/STC/example1$ ls
1 LedBlink.hex LedBlink.lst LedBlink.rel
LedBlink.asm LedBlink.ihx LedBlink.map LedBlink.rst
LedBlink.c LedBlink.lnk LedBlink.mem LedBlink.sym
aaa@aaa:~/Desktop/STC/example1$
LedBlink.hexファイルが出来上がる。

stcgalでSTC12C2052にインストールする。
aaa@aaa:~/Desktop/STC/example1$ stcgal LedBlink.hex
Waiting for MCU, please cycle power: done
Protocol detected: stc12a
Target model:
Name: STC12C2052
Magic: F202
Code flash: 2.0 KB
EEPROM flash: 4.0 KB
Target frequency: 5.912 MHz
Target BSL version: 5.8D
Target options:
low_voltage_reset=low
clock_source=internal
watchdog_por_enabled=False
watchdog_stop_idle=False
watchdog_prescale=256
eeprom_erase_enabled=False
bsl_pindetect_enabled=False
Loading flash: 154 bytes (Intel HEX)
Switching to 19200 baud: checking setting testing done
Erasing 2 blocks: done
Writing flash: 640 Bytes [00:00, 2267.66 Bytes/s]
Setting options: done
Disconnected!
aaa@aaa:~/Desktop/STC/example1$

下記写真に結果を示します。