在Linux下没有像keli那样好用的IDE来开发51单片机,开发环境只能自己搭建了。
第一步:安装交叉编译工具
a) 安装SDCC
sudo apt-get install sdcc
b)测试SDCC是否可用,这是个网上找的简单的流水灯代码 test.c, 用来测试
#include "8051.h"
#define uint unsigned int
#define uchar unsigned char
uchar tab[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void Delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
P1 = tab[i];
Delay(100);
}
}
}12345678910111213141516171819202122232425
编译它: sdcc test.c
会生成这么多的文件:
test.lk test.map test.rel test.sym test.asm test.ihx test.lst test.mem test.rst
我们只需要其中的 test.ihx
packihx file.ihx >file.hex 转换为hex文件
接着下载hex2bin文件,网址(http://sourceforge.net/projects/hex2bin/files/latest/download)。命令:hex2bin sourcefile.hex。之后就会生成sourcefile.bin文件。
hextobin file.hex 生成bin文件
注意:为了方便以后调用hex2bin,可以将路径加入到 .bashrc文件
在~/.bashrc最后一行加上Hex2bin 所在的文件夹位置
PATH=$PATH:/home/leo/workspace/c51/Hex2bin-2.31
可以写个makefile文件,编译方便些
这是我写的makefile:
test.hex : test.c
sdcc test.c
packihx test.ihx > test.hex
hex2bin test.hex
clean:
rm -rf *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map
~ 1234567
第二步:安装烧写工具
a)下载stcflash:github.com/laborer/stcflash,这是个用python写的向单片机烧写bin文件的软件
b)安装环境:sudo apt-get install python-serial
c)烧写 : sudo python ./stcflash.py test.bin
关键字:Linux 51单片机 开发烧写环境
引用地址:
在Linux下搭建51单片机的开发烧写环境
推荐阅读最新更新时间:2024-03-16 16:17
Proteus通过虚拟串口程序仿真51单片机串口的实现
1.参考文章下载地址: http://download.csdn.net/source/1927624 2. 虚拟串口 3. 串口调试助手 4. Proteus 7.5 sp3 实现方法 1.参考文章(参考文章是从CSDN下载的一篇PDF文件)已经很详细的说明了怎么实现,我就不想啰嗦了,我只提供几个关键的截图和串口调试程序代码 如果参考文章打不开我提供参考文章的下载连接 2.提供Proteus的连线图如下:(值得注意的是单片机的RXD和TXD分别和串口的RXD和TXD一一对应相连,这和用Proteus的虚拟终端给串口输入信号时,单片机和串口的连接方式是不一样的,用Proteus的虚拟终端作为串口输入信号的时候单片机的RX
[单片机]
OK6410A 开发板 (八) 41 linux-5.11 OK6410A slab 的 alloc 和 free
第四阶段 是 以 slab 机制 为基础,建立 kmalloc 机制 kmalloc 只是 slab 一些列实例的初始化 如果你想初始化一个 slab 实例,只需要调用 kmem_cache_create 即可 slab 的使用期限 slab 的 api 是 从buddy 建立好就可以用的 而 一个slab 实例, 从 调用 kmem_cache_create 创建 好 即可使用 slab 管理的内存大小 一般为一个page,如果用完了再申请一个page slab 的使用方法 slab 不同于 kmalloc机制 alloc kmem_cache_alloc free kmem_cache_free
[单片机]
构造一个51单片机的实时操作系统
目前,大多数的产品开发是在基于一些小容量的单片机上进行的。51系列单片机,是我国目前使用最多的单片机系列之一,有非常广大的应用环境与前景,多年来的资源积累,使51系列单片机仍是许多开发者的首选。针对这种情况,近几年涌现出许多基于51内核的扩展芯片,功能越来越齐全,速度越来越快,也从一个侧面说明了51系列单片机在国内的生命力。 多年来我们一直想找一个合适的实时操作系统,作为自己的开发基础。根据开发需求,整合一些常用的嵌入式构件,以节约开发时间,尽最大可能地减少开发工作量;另外,要求这个实时操作系统能非常容易地嵌入到小容量的芯片中。毕竟,大系统是少数的,而小应用是多数而广泛的。显而易见,μC/OS—II是不太适合于以上要求的,而Keil
[应用]
51单片机PCF8591 DA转换源码
单片机源程序如下: /**********************51实验开发板例程************************ * 平台:HJ-C52 + Keil U4 + STC89C52RD ******************************************************************/ /*----------------------------------------------- 名称:IIC协议 PCF8591ADDA转换 内容:此程序通过IIC协议对DAAD芯片操作, 并输出模拟量,用LED亮度渐变指示 -----------------------
[单片机]
51单片机程序——数码管动起来
#include reg52.h unsigned char code table ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};// 显示数值表0-9 void Delay(unsigned int t); void main (void) { unsigned char i; P1 = 0x01; while (1) { for(i=0;i 10;i++) //加入 for循环,表明for循环大括号中的程序循环执行10次 { P0=table ; //循环调用表中的数值
[单片机]
51单片机使用ec11旋转编码器 数码管显示
#include reg51.h #define GPIO_DIG P0 unsigned char code DIG_CODE ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值 int tmp = 1; #define uchar unsigned char sbit BB = P1^0;//接编码器A端 sbit AA = P1^1;//接编码器B端 void delayms(uchar count) { uchar i,j; for(i = 0; i count; i++) for(j = 0; j 120; j+
[单片机]
51单片机CPU结构各部件的原理详细分析
一、 51单片机串行口工作原理 MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信。 1.串行端口的基本特点 8031单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同应用场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;方式1多用于双机之间或与外设电路的通信;方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统。 串行端口有两个控制寄存器,用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。 串行端口有一个数据寄存器S
[单片机]
8051单片机供水系统水位控制的硬件电路设计
供水系统水位控制原理 下图是水塔水位控制原理图。图中虚线表示允许水位变化的上下限。在正常情况下,应保持水位在虚线范围之内,为此,在水塔的不同高度安装固定不动的三根金属棒,以感知水位变化情况。其中A棒处于下限水位以下,C棒处于上限水位,B棒在下限水位处。A棒接+5V电源,B棒、C棒各通过一个电阻与模拟地相连。 水塔由电机带动水泵供水,单片机控制电机转动以达到对水位控制的目的。供水时,水位上升,当达到上限时,由于水的导电作用,B棒、C棒连通+5V电源,因此,b、c两端均为高电平“1”状态。这时,应停止电机和水泵的工作,不再给水塔供水。 当水位降到下限时,B棒、C棒都不能与A棒导通,因此,b、c两端均为“0”状态。这时,应启动电机,
[单片机]