第9章_NEC78K0单片机常用的C语言扩展功能_20090416.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
【NEC78K0单片机常用C语言扩展功能】是针对NEC78K0系列微控制器的编程特点,这些扩展功能是CC78K0编译器特有的,超出了ANSI标准C语言的基本范畴。它们为开发者提供了更高效、更便捷的方式来利用78K0系列单片机的能力,例如缩短代码长度、提高执行效率,但选择使用哪些扩展功能应根据实际项目需求,以达到最佳优化效果。 ### #pragma指令 `#pragma`指令是C语言的预处理指令,用于向编译器提供特定的编译指令。在CC78K0编译器中,它被用来实现一系列扩展功能。以下是一些重要的`#pragma`指令: 1. `#pragma sfr`:允许在C语言中直接使用特殊功能寄存器(SFR),如同使用普通变量一样。SFR被视为外部变量,其地址范围从FF00H到FFFFH。例如,`#pragma sfr`声明后,可以方便地访问AD转换结果寄存器ADCR,如`PL0 -= ADCR`。 2. `#pragma asm`:在C代码中插入汇编语言,以实现更精细的控制。可以使用`#asm`和`#endasm`包围汇编代码,或者使用`#pragma asm`和`__asm()`函数。 3. `#pragma interrupt`:定义中断服务函数,使得C语言可以直接处理中断事件。 4. `#pragma di`和`#pragma ei`:控制中断的开启和关闭,对应于DI和EI指令。 5. `#pragma halt`, `#pragma stop`, `#pragma nop`, `#pragma brk`:提供对CPU控制指令的支持,如停止CPU、空操作等。 6. `#pragma access`:允许使用绝对地址进行存取,这对于直接访问硬件资源非常有用。 7. `#pragma rot`, `#pragma mul`, `#pragma div`: 提供旋转、乘法和除法功能,增强了数学运算能力。 8. `#pragma bcd`:支持BCD(二进制编码的十进制)运算,适合处理十进制数据。 ### 特殊功能寄存器(SFR)的使用 SFR是微控制器中执行特定任务的寄存器,如配置工作模式和控制外围设备。在C语言中,通过`#pragma sfr`,可以直接用变量的方式操作这些寄存器。需要注意,SFR被视为未初始化的外部变量,其地址位于FF00H到FFFFH之间。使用时,SFR名通常应大写,避免与普通变量混淆。 ### C语言中使用汇编语句 CC78K0编译器提供了两种在C语言中插入汇编语言的方法: 1. 使用`#asm`和`#endasm`:将汇编代码放在这对指令之间,直接嵌入到C源文件中。 2. 使用`#pragma asm`和`__asm()`函数:在程序开头用`#pragma asm`声明,然后在代码中通过`__asm(汇编语言字符串)`调用。 例如: ```c #asm callt [init] #endasm ``` 或 ```c __asm("callt [init]") ``` 这两种方法都可以实现C和汇编的混合编程,灵活应对特定的硬件操作需求。 NEC78K0单片机的C语言扩展功能极大地丰富了编程手段,使得开发者能够更高效地利用单片机的硬件特性,同时保持代码的可读性和可维护性。了解并熟练运用这些扩展功能,能显著提升软件开发的效率和质量。
剩余12页未读,继续阅读
- 粉丝: 88
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助