关闭

MCU8051IDE学习1

标签: sdccmcu8051ide
1269人阅读 评论(0) 收藏 举报
分类:
  • 安装可以直接下载安装包进行安装,他会将用到的所有东西都安装上去(不包括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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9688次
    • 积分:260
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2条
    最新评论