欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    几种单片机C语言编译器的语言不同之处.docx

    • 资源ID:3319126       资源大小:37.84KB        全文页数:3页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    几种单片机C语言编译器的语言不同之处.docx

    几种单片机C语言编译器的语言不同之处几种单片机C语言编译器的语言不同之处 大多数人最先学习的单片机恐怕都是51的,采用的编译器一般是keil c, 以后再接触avr单片机的编译器时不免会产生一些疑惑. 比较一下不同的单片机平台上程序的不同: 1. 由于不同单片机指令集不同, 汇编语言的程序通常很不一样. 2. c语言则是独立与指令集的高级语言,它不受指令集的影响,大部分代码是一致的,不同之处主要是在以下几处: a) 不同单片机的头文件定义不同(即使同一种单片机不同的编译器里也可能不同) .所以相应的端口,寄存器名也不同 b)不同单片机端口,寄存器功能不同, C语言中使用这些寄存器,端口的方式不同,从而代码不同. 这是最重要的一点. c)以上是单片机硬件本身的不同所造成的关于端口,寄存器相关操作代码的不同, 还有一点不同是编译器本身所支持的扩展c语言语法的不同. 下边主要来介绍编译器所支持的扩展C语言语法上的异同: 1.一般最需要注意的是扩展关键字的不同 比如端口位的定义: 1)在keic c中,有sbit这个关键字,可以定义端口某一个引脚. . 2)在IARAVR中, 相应的采用PORTX_Bitn来定义端口位. 3)在ICCAVR 中则没有相应的端口位定义关键字,只能通过相应的宏文件,采用按位与及按位或的方式控制端口的某一位. 还有关于变量存储位置定义的关键字区别: 1)keil c中采用data,xdata,code这些关键字可以定义变量或常量存储的位置 2)IARAVR中采用_flash _regvar等来控制变量存储位置. 3)ICCAVR中采用同IARAVR类似的关键字如:_flash 来控制存储位置 2.另外就是关于数据类型长度的问题 比如某些编译器里float是32位,但是某些编译器里float是24位. 另外对于对于char int,这些具体表示有符号数还是无符号数,也会不一样. 3. 存储器存储长字节数据的方式也不同: 51单片机中,存放int ,long这些大于一个字节长度的数据时, 是低地址存放高位字节, 高地址存放低位字节. 而AVR中恰恰相反, 低地址存放低位字节,高地址存放高位字节. 因此,如果在程序中涉及采用联合体或是依次访问内存地址的方法对长字节数据分离的话,就要注意低地址里读取的是高字节还是低字节了. 顺便提一下51单片机(包括STC的)程序移植到AVR平台上需要注意的地方: 1) 头文件, 寄存器名,寄存器设置代码都是要相应修改的. 2) IO端口的位操作要做相应的调整. 3) 中断服务函数的格式也有不同,需做相应调整 4) 51单片机的端口寄存器复位值为1,因此作为输出端口时,即使程序中不作设置,也会输出高电平, 而AVR单片机中端口寄存 器PORTX 复位值为0, 因此51单片机的程序移植到avr单片机中时一定要注意端口初始化代码, 假设51程序中没有进行初始化,那么端口默认为高, 到了avr中,如果照搬原来的程序,端口就变成低电平,可能导致系统不能正常运行,而且不好查出来问题. 5) 由于两者对于长字节数据存放的方式不同,从地址到高地址, 51平台上依次存放高字节和低字节, AVR上依次存低字节和高字节, 所以如果程序中涉及到采用联合体或是依次访问内存地址的方法对长字节数据进行分离的话,就要注意低地址里读取的是高字节还是低字节了. 比如: union UNI_2BYTE uint dat; uchar tab2; wdat; 在这个联合体wdat中, 成员dat是个占2个字节长度的整形数, 那么wdat.tab0表示dat的低地址的那一个字节, 如果是在keil c中, 由于规定低地址存放高字节, 那么wdat.tab0就是dat的高字节. 如果是在IARAVR或者ICCAVR中,由于低地址存放低字节, 那么wdat.tab0就是dat的低字节

    注意事项

    本文(几种单片机C语言编译器的语言不同之处.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开