M16C

news/2024/11/24 13:56:09/
R8C/M16C提供一系列预处理指令,能够很好的优化C代码。 
本文以nc30编译器为例,谈谈#pragma的用法。 

1)。与内存有关的命令 
#pragma ROM 
将一个变量放入ROM里面,比如: 
#pragma ROM aa 
int aa; 

#pragma BIT 
位变量申明。表示将一个变量放在能够进行位操作指令的地址区,比如: 
#pragma BIT aa; 
struct _aa{ 
char bit0:1; 
char bit: 7; 
}aa; 
aa.bit0 = 1; 

#pragma SBDATA 
申明访问变量是基于SB寄存器寻址的方式,如: 
#pragma SBDATA aa; 
int aa; 
访问aa时,是基于SB寄存器寻址的 

#pragma SECTION 
将程序或变量什么在某个区域 

#pragma STRUCT 
结构体对齐申明 
#pragma STRUCT _aa unpacked 
struct _aa{ 
int aa; 
char bb; 
}; 
表示结构体_aa不对齐 

#pragma EXT4MPTR 
表示将变量申明在大于4MB的区域 
#pragma EXT4MPTR aa 
int _far aa; 


2),针对目标平台的预处理指令 
#pragma ADDRESS 
绝对地址申明,将变量放入某个绝对地址,例如 
#pragma ADDRESS aa 0xff000 
int aa; 

#pragma BITADDRESS 
位绝对地址申明。典型应用是申明一个bool变量到某个绝对地址 
#pragma BITADDRESS aa 0 0xff000 
_Bool aa; 

#pragma INTCALL 
申明一个软中断(int指令)函数 
#pragma INTCALL 25 func() 
void main(void) 

func(); 

执行func()时,相当于执行int 25指令 

#pragma INTERRUPT 
这个就不多说了,申明一个中断服务子函数 
#pragma INTERRUPT isr1(vect = 20) 
void isr1(void); 

#pragma PARAMETER 
申明通过寄存器传递参数到汇编函数 
int asm_func(int, int); 
#pragma PARAMETER asm_func(R0,R1) 
void main(void) 

int i,j; 
asm_func(i,j); 

表示i,j参数通过寄存器R0,R1传递到汇编函数asm_func(); 


3),汇编预处理指令 
#pragma ASM 
#pragma ENDASM 
内嵌汇编指令,例如: 
void fun(void) 

#pragma ASM 

fset i 
nop 
#pragma ENDASM 


#pragma JSRA 
申明调用一个函数时,使用JSR.A指令 
extern void func(); 
#pragma JSRA func 
void main(void) 

func(); 


#pragma JSRW 
类似于#pragma JSRA 


后记: 
还有基于M16C系列RTOS的预处理指令,例如 
#pragma TASK tsk1 
void tsk1(void) 


表示申明tsk1为一个任务(线程)。 
等等。

http://www.ppmy.cn/news/849309.html

相关文章

天猫魔盒android开发者模式,【当贝市场】天猫魔盒M16S开启远程调试模式教程

原标题:【当贝市场】天猫魔盒M16S开启远程调试模式教程 M16S,因为使用的是YUNOS系统,比较少,可以通过系统设置打开远程调试模式,在PC端进行远程操作,诸如远程截图,推送安装APK文件,文件推送等。…

DDR2的调试记录(MT47H64M16)-草稿

环境说明 由于项目设计需要,在FPGA上挂载了一个1G的DDR2 SDRAM,型号为MT47H64M16,FPGA为Cyclone IV E系列。要用DDR2实现多个GMII高速输入的缓存。 DDR2驱动需求: 1、最大限度的提升DDR2的吞吐率。 2、支持多通道、不同类型、…

mysql 5.7.6_mysql-5.7.6-m16-winx64 免安装版配置方法

1. 下载MySQL Community Server 5.7.6 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "E:\PHP\mysql-5.7.6-m16-winx64" 将解压目录下默认文件 my-default.ini 拷贝一份,改名 my.ini 复制下面的配置信息到 my.ini 保存 #如…

DDR2信号认识(MT47H64M16HR-25E为例)

1.整体认识 从上面可以看到很多引脚 【1】BA[2:0]:选择bank的几个IO,这里有3个IO,可以知道最大支持8个bank。这个是由芯片的DDR控制器,根据逻辑地址计算出来的。【2】CK, CK#:查分时钟输入口,为DDR2提供时…

镁光MICRON 512M AS4C32M16SM-7TIN/MT48LC32M16A2P-75 IT:C Alliance延续生命周期!

Alliance Memory与镁光合作延长512M同步动态随机存储器产品生命周期。这3种存储器镁光产品代码为#30995已经停产(最后可购买时间为:2014年2月28日;最后运送时间2014年10月30日.Alliance Memory将提供镁光的32M X16的存储器产品MT48LC32M16A2P…

【解决方案】invalid property name “statusbar“(M16) unkown component(M300)

项目场景: 在Qt creator 4.14.0 中使用 QML 创建底部状态栏并自定义样式 问题描述: 直接使用官方示例(StatusBar QML Type )中的代码 ApplicationWindow {statusBar: StatusBar {RowLayout {anchors.fill: parentLabel { text:…

MT47H64M16NF-25E:M相关参数介绍

MT47H64M16NF-25E:M相关参数介绍 特征 Vop = + 1.8V0.1V,VDDO = + 1.8V0.1V JEDEC标准1.8V1 / O(SSTL_18兼容) 差分数据选通(DQS,DQS#)选项 4n位预取架构 x8的重复输出选通(RDQS)选项。 DLI将DQ和DQS转换与CK对齐 8个内部银行同时运作 可编程CAS延迟(CL) 发布CAS附加…

瑞萨E1仿真器(R0E000010KCE00)支持的MCU系列---M16C Family (R32C/M32C/M16C)

M16C系列MCU简介: M16C系列提供了一个强大的32/16位CISC微型计算机平台,具有高ROM代码效率、广泛的EMI/EMS抗噪性、超低功耗、实际应用中的高速处理以及多种多样的集成外围设备。广泛的设备可扩展性,从低端到高端,具有单一的体系…