[MCU8051IDE_Linux]_MCU8051IDE

安装

  • 安装可以直接下载安装包进行安装,他会将用到的所有东西都安装上去(不包括gSTCISP)

    • sudo dpkg -i mcu8051ide-1.4.10-all.deb

    • sudo apt-get install -f

 下载工具gSTCISP可以自己下载安装

  • 开源软件mcu8051ide是一款功能强大的51单片机集成开发软件,这个IDE包含模拟器,源代码编辑器,汇编,HW程序员和大量其他工具。用c语言编程,界面友好,模拟器支持超过79单片机主要来自爱特梅尔公司,而且提供多种模拟器件如:led 数码管,矩阵数码管(8×8)按键,矩阵按键,甚至温度传感器。开源的没有任何限制,完全免费,自动生成多种烧录文件(我们一般就用.HEX的)。

MCU8051IDE使用的是SDCC编译器

  • SDCC编辑器中包含多个头文件供用户使用:

    • 目录:/usr/share/sdcc/include

    • 对于51单片机的头文件:

    • 在SDCC编写代码与keil有些不同:   

      • 在KEIL中我们这样定义引脚:

        • sbit led1=P1^0; 

      • 而在SDCC中这样定义引脚:

          • sbit at 0x90 led1; 或者__sbit __at 0x90 led1;

          • 因为我们知道在头文件中已经这样定义了引脚:

            所以我们也可以这样写#define LED P0_0定义引脚

  • 对于一些非ANSI C的关键字,SDCC均采用双下滑线开头的方式定义,如__code,__idata,__sbit......对于单片机引脚的定义SDCC采用了 __at关键字和十六进制地址:

    • SDCC                                                             Keil          

    • __sbit __at 0x94 blackLineLeft;                sbit blackLineLeft=P1^4;

    • __sbit __at 0x95 blackLineRight;             sbit blackLineRight=P1^5;

    • __sbit __at 0x80 pin1;                                sbit pin1=P1^0;

    • __sbit __at 0x81 pin2;                                sbit pin2=P1^1;

    • 对于内嵌汇编代码,SDCC使用__asm和__endasm两个关键字,参考代码如下:

      • void delay0_1(uint n) { for(i=0;i<n;++i) { for(j=0;j<10000;++j) { __asm nop __endasm; } } }

  • 当编写好程序后,我们可以直接点击MCU8051IDE->工具->编译进行编译:

    • 编译之后输出文件:

  • 编译之后可以将编译出来的.hex转换成可以下载的.bin
    • MCU8051IDE->使用工具集-> hex->bin

使用gSTCISP下载程序

    • 选择自己的串口,因为我们使用的是USB转串口,所以选择ttyUSB*
    • 选择波特率,我的波特率不能选太高(波特率在>=9600时),太高时会出现下载失败。
  • 下载成功:

    • 在MCU8051IDE的配置选项中可以配置很多东西:

      • 在配置-》配置编辑器中可以选择自己习惯的编辑器。

      • 可以将tab改为4个空格宽度,可以设置自动补全等功能功能,可以将自动括号取消(感觉不是很好用)。

    • 通过 配置->编译自定义变量可以添加自己的命令:

      • 如下添加指令1为启动gSTCISP软件,方便程序下载。

      • gksu gSTCISP

      • gksu 以root方式(对话框输入密码)打开某个软件,但在打开始时,会弹出对话框,让你输入密码,不过每次打开都要输入密码,很烦人,不过也比到终端中打开强(开启之后不用关闭,放着下次用)。

      • 如果没有这个命令,可以运行apt-get install gksu安装

    • 在SDCC中书写中断函数时应使用__interrupt

      • 
        
        
        1. void InterruptTimer0() __interrupt 1
        2. {
        3.    TH0 = 0xFC; //重新给定时器赋值
        4.    TL0 = 0x67;
        5.    count++;
        6. }

参考文献:http://blog.chinaunix.net/uid-24203478-id-3062706.html

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值