0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >基础知识 > 单片机编程软件很简单(18),Keil单片机编程软件对ANSIC的扩展学习

单片机编程软件很简单(18),Keil单片机编程软件对ANSIC的扩展学习

来源: 21ic
2020-12-10
类别:基础知识
eye 31
文章创建人 拍明

原标题:单片机21ic编程软件很简单(18),Keil单片机编程软件对ANSIC的扩展学习

在单片机编程中,Keil单片机编程软件(特别是Keil C51)对标准ANSI C进行了一系列扩展,以适应8051系列单片机的硬件特性。以下是对Keil C51对ANSI C扩展的详细学习:

一、Keil C51扩展关键字

Keil C51在ANSI C的基础上增加了一些特定的关键字,以支持8051单片机的特殊功能。例如,C51 V4.0版本有以下扩展关键字:

  • _at_:用于指定变量的绝对地址。

  • idatabdataxdatapdata:用于声明变量的存储类型,分别对应不同的内存区域。

  • sfrsfr16:用于声明特殊功能寄存器(SFR),分别用于字节寻址和字寻址。

  • sbit:用于声明可位寻址的特殊功能寄存器的位。

  • interrupt:用于声明中断服务函数。

  • using:用于指定中断服务函数使用的寄存器组。

  • reentrant:用于声明可重入函数。

二、内存区域与存储类型

Keil C51支持多种内存区域,每种内存区域都有特定的用途和访问方式。通过不同的存储类型关键字,可以指定变量存储在不同的内存区域中。

  • 程序存储器(Code Area):用于存放程序代码,最大可达64KB。

  • 内部数据存储器(Internal Data Memory)

    • data:直接寻址区,为内部RAM的低128字节(00H~7FH)。

    • idata:间接寻址区,包括整个内部RAM区(00H~FFH)。

    • bdata:可位寻址区,位于20H~2FH。

  • 外部数据存储器(External Data Memory)

    • xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFH。

    • pdata:能访问1页(256Bytes)的外部RAM,主要用于紧凑模式(Compact Model)。

  • 特殊功能寄存器(SFR Memory):提供128Bytes的SFR寻址区,可位寻址、字节寻址或字寻址。

QQ_1741772419239.png

三、变量类型与数据类型

Keil C51提供了一些扩展的数据类型,以更好地支持8051单片机的硬件操作。

  • bit型变量:用于表示位变量,值为0或1,通常存储在内部RAM的20H~2FH区域。

  • sbit型变量:从字节中定义的位变量,用于访问特殊功能寄存器的位。

  • sfr和sfr16型变量:用于声明特殊功能寄存器,分别用于字节寻址和字寻址。

此外,Keil C51还支持ANSI C中的所有标准数据类型,如charenumshortintlongfloat等。

四、指针

Keil C51支持一般指针(Generic Pointer)和存储器指针(Memory-Specific Pointer)。

  • 一般指针:声明和使用方式与标准C相同,但可以指定指针的存储类型。例如,long *state;为一个指向long型整数的指针,而state本身则依存储模式存放。

  • 存储器指针:在声明时即指定了存储类型,如char data *str;表示str指向data区中的char型数据。这种指针存放时只需一个字节或两个字节(根据存储类型而定),因为只需存放偏移量。

五、函数属性

Keil C51对ANSI C的函数声明进行了扩展,以支持中断服务函数等特殊功能。

  • 中断函数声明:使用interrupt关键字声明中断服务函数,并指定中断号。例如,void serial_ISR() interrupt 4;表示声明一个中断号为4的中断服务函数。

  • 指定存储模式:使用smallcompactlarge等关键字指定函数的存储模式,以控制函数内部变量的存储区域。

  • 选通用存储工作区:使用using关键字指定中断服务函数使用的寄存器组。

六、其他扩展

除了上述扩展外,Keil C51还支持一些其他特性,如绝对地址访问、内联汇编等。这些特性为开发者提供了更多的灵活性和控制权,以便更好地适应不同的硬件需求和应用场景。

学习建议

  1. 阅读官方文档:Keil官方提供了详细的文档和手册,是学习Keil C51扩展特性的最佳途径。

  2. 实践操作:通过编写实际的单片机程序,应用所学的扩展特性,加深对Keil C51的理解。

  3. 参考示例代码:Keil软件通常包含大量的示例代码,这些代码展示了如何使用各种扩展特性。通过阅读和分析示例代码,可以更快地掌握Keil C51的使用方法。

通过深入学习和实践,您可以充分利用Keil C51对ANSI C的扩展特性,开发出更高效、更可靠的单片机程序。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

资讯推荐
云母电容公司_云母电容生产厂商

云母电容公司_云母电容生产厂商

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告