c语言s12,5 MC9S12C语言与标准C语言区别.ppt

本文介绍了MC9S12单片机上的C语言与标准C语言的区别,包括变量处理、存储类修饰符、中断处理、资源映射和C语言在嵌入式环境中的应用。强调了在MC9S12中使用C语言编程时,需要注意变量的volatile修饰、固定内存位置的访问以及中断服务函数的编写。此外,还讨论了标准C库在没有显示器的嵌入式系统中的适用性和C语言入口函数。
摘要由CSDN通过智能技术生成

5 MC9S12C语言与标准C语言区别

MC9S12的C语言与标准C语言的区别;1、建立汇编语言工程;建立汇编语言工程;;2、建立C语言工程;建立C语言工程;建立C语言工程;C语言程序结构;3、Codewarrior 4.6 程序调试;Codewarrior 4.6 程序调试;Lecture5 Page *;4、S格式文件;S格式文件; S0510000433A5C446F63756D656E747320616E642053657474696E67735C41646D696E6973747261746F725C4D7920446F63756D656E74735C50726F6A6563745F335C62696E5C50726F6A6563742E616273BD S123C000CF050010EF180BFF0003180B550001CE00017E0500070E7C0502FE0500088E0028 S119C0201826EF20EACD0000CC000104050719EEB7C60435F93D32 S105FFFEC0003D S9030000FC;2、MC9S12的C编程与标准C的不同;;2.1 变量;自定义CodeWarrior数据类型 ;16位微控制器内部的数据长度是16位(2字节),所以首选的数据类型是“int”。16位机处理16位数据比8位数据的效率更高。 对于9S12单片机来说,16位数据类型效率最高,因此在使用中,尽量选择int类型数据。若可能,选用无符号类型。;存储类修饰符;可变(volatile)变量 ;例子;程序的本意是希望ISR_2中断产生时,在main当中调用dosomething函数,但是,由于编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的“i副本”,导致dosomething永远也不会被调用。如果将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。此例中i也应该如此说明。?;Lecture5 Page *;volatile用在如下的几个地方;const;Const volatile 变量 ;最明显的例子是硬件状态寄存器,像SCI状态寄存器SCS1。这个寄存器包含信号状态标志,如发送空、发送完成、接收满以及其它。

这是一个可变寄存器由于这些标志的改变依赖于串行通信的状态;这也是只读,由于标志不能被程序直接改写,它们只对模块的状态作出响应。这个状态寄存器最佳声明方法是:const volatile unsigned char SCS1 @0x0016 ;2.2 资源的映射;访问固定内存位置;访问固定内存位置;访问I/O寄存器 ;另一种方法是在变量声明中使用符号“@”:

const volatile unsigned char SCS1 @0x0016 ;2.3 C语言的中断;9S12中断源有55个,中断向量号越小,优先级越大。见课本64页。在codewarrior环境下,中断向量号在头文件中,例如mc9s12dg28.h;2.4 标准C库;标准C语言与硬件无关,I/O的输入输出并不是标准C语言的一部分。在标准C语言中,I/O操作是通过操作系统实现的。在标准C中, printf()缺省的控制台是显示器,但9S12没有显示器作为片外外设。在嵌入式编程中,如果需要使用这个功能,则需要修改基础库函数才能正确输出。 凡是需要显示在显示终端的,可以使用SCI(异步串行通信)发送到PC机的超级终端显示。;2.5 C语言入口;void _Startup() { asm { LDS 0x1000 JSR HardInit JSR main } };2.6 程序的链接与定位 ;邢镶抒栓曾球碧抛砂遂象舆控狮遵眨导嫂认足指胸寡精纠优球砾全姬操储5 MC9S12C语言与标准C语言区别5 MC9S12C语言与标准C语言区别;C语言与汇编语言的混合编程 ;C中使用汇编 ;例1 ;谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值