1. 写一个流水灯程序
使用中断切换LED的高低电平
在一个 flow_led.c
中 粘贴如下代码:
#include<8051.h>
unsigned char i = 0;
unsigned char zheng = 1;
void main(void) {
TH0 = 1;
TL0 = 1;
TMOD = 0x01;
ET0 = 0x01;
EA = 1;
TR0 = 1;
while (1) {
if (i >= 7) zheng = 0;
if (i <= 0) zheng = 1;
}
}
void inter(void) __interrupt 1 {
TH0 = 1;
TL0 = 1;
// 此处将 P0、P1、P2 引脚同时 切换 高低电平
P0 = ~(1 << i);
P1 = ~(1 << i);
P2 = ~(1 << i);
if(zheng == 1) {
i++;
}else{
i--;
}
}
2. 编译文件
在 flow_led.c
文件目录下执行如下命令:
sdcc flow_led.c
编译成功后,当前目录下会生成如下文件:
asm 汇编代码
ihx 16进制代码
lk
lst
map
mem
rel
rst
sym
2. 使用hex2bin将ihx文件转换为bin文件
hex2bin flow_led.ihx
执行上面命令,生成bin文件
3. 查看单片机的串口信息
根据上一篇文章下载的 pyserial ,获取串口信息
pyserial-ports
执行效果如下:
4. 烧写程序到单片机
stcgal -P stc89 -p /dev/cu.usbserial-14240 flow_led.bin
在显示如下信息时,给单片机上电:
Waiting for MCU, please cycle power:
执行后显示如下信息:
Waiting for MCU, please cycle power: done
Target model:
Name: STC89C52RC/LE52R
Magic: F002
Code flash: 8.0 KB
EEPROM flash: 6.0 KB
Target frequency: 12.010 MHz
Target BSL version: 6.6C
Target options:
cpu_6t_enabled=False
bsl_pindetect_enabled=False
eeprom_erase_enabled=False
clock_gain=high
ale_enabled=True
xram_enabled=True
watchdog_por_enabled=False
Loading flash: 212 bytes (Binary)
Switching to 19200 baud: checking setting testing done
Erasing 2 blocks: done
Writing flash: 640 Bytes [00:00, 2024.23 Bytes/s]
done
Disconnected!
未完待续~