mac上玩 51 也是挺爽的
今天在网上看到一个不错的项目,可以在 mac 上开发 51 单片机。
在 macbook 下可以使用Homebrew直接运行brew命令安装:
$ brew install sdcc
SDCC是什么?
sdcc是一个提供 优化标准 C (ANSI C89,ISO C99,ISO C11)的编译器套件;兼容多种单片机的编译。
当然,在语法上有些差异
我编译一个程序看看
#include<8052.h>
#define uchar unsigned char
#define uint unsigned int
#define lcden P2_5
#define lcdrs P1_0
#define rw P1_1
#define dula P2_6
#define wela P2_7
uchar table[] = "Hello World!";
uchar num;
void delay(uint z) {
uint x, y;
for(x = z; x > 0; x--)
for(y = 110; y > 0; y--);
}
void write_com(uchar com) {
lcdrs = 0;
P0 = com;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
void write_data(uchar date) {
lcdrs = 1;
P0 = date;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
void init() {
rw = 0;
dula = 0;
wela = 0;
lcden = 0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main() {
init();
for(num = 0; num < 12; num++) {
write_data(table[num]);
delay(100);
}
while(1);
}
我们看了芯片的 RAM 大小是 256 字节
然后我们再看看编译出来的产物,可以看到栈的起始地址,还有 RAM 的大小。
ihx 是一些机器码,这个和Windows 软件编译出来是差不多一样的内容,也是我们需要烧录到机器里面的文件。
asm 文件是汇编文件,从里面可以看到程序的实际跳转指令。
map 文件里面可以看到很多映射相关的信息,还是挺有意思的。
烧录工具
烧录工具看这个 github 项目
https://github.com/grigorig/stcgal/tree/master
我烧录一个程序看看
噢,这样看起来还是挺酷的哦。
评论