reentrant:
修饰FUNCTION
type funName reentrant(args...){}
即它可被多个进程同时调用而保持而不引起错误,同时并非指非常同时,可能在函数的运行
过程当中被中断后再次调用。一般用在多进程的系统中或者主函数与中断函数之间。
alien
C51编译器与PL/M-51编译器的接口
1,在C中调用PL/M-51的FUNCTION
extern alien type funcName(args...)
2,在PL/M-51中,这样声明函数
alien type funcName(args...)
Note:
type may be bit,char,unsigned char,int,unsigned
int可以不加alien,而long,float
and all types of pointers,the reason is that PL/M-51
不支持直接的32位数,所以要
加alien,当然可以全部都加上为了防止不必要的错误。
interrupt n using x
中断声明,n为中断向量号可为0-31,对应的地址为3+n*8
x为0-3,指明哪组寄存器
使用方法:
type funcName(args...) interrupt 0 using 1
large
使用大内存的时候且程序很大的时声明函数,STACK一般放在外部RAM中。
使用方法:
type funcName(args...) large
small
和large相反,放在内部RAM中
#pragma
small
/* Default to small model */
可不写small
使用方法和large一样
compact
说明要求要紧密一点,
与large和small用法一致
来源:(http://blog.sina.com.cn/s/blog_46f8a84e010007cp.html)
- C51 新增的 keywords_wenbinjj_新浪博客_task_ and _priority_
type funcName(args) _task_ ID _priority_ pri
ID:任务ID号
pri:任务等级
用在实时RTX51 FULL 和 RTX51 TINY 多任务操作系统当中
code
由它声明的变量放在ROM里边,只可读不可写,与CONST差不多。
data, idata, bdata,pdata and xdata
data:内部RAM的前128个BYTE
idata:内部RAM的256个BYTE,多为间接寻址用@r0 & @r1
bdata:RAM的位寻址区,20h-2fh,用来声明位操作的变量
pdata: 外部RAM里边的第一页256个字节,一般是compact memory
model使用
xdata: 外部RAM64K里边的的一个变量,一般是large
memory model使用
使用方法:
type [data/idata/bdata/pdata/xdata] varName
_at_
变量的绝对地址
使用方法:
type varName _at_ 0x40[绝对地址]
far
远变量声明,KEIL用3BYTE指针来引用它
使用方法:
type far varName
sfr/sfr16/sbit
sfr定义SFR的名字 sfr P0Name = 0x80;
sfr16定义SFR16的名字 sfr16 T2Name = 0xCC;
sbit定义bit名字 sbit OV = PSW^2;
bit
声明一个bit变量0或1
数组也行,
如果函数中不允许中断#pragma disable或者声明的时候指明using
n就不能返回BIT,在编
译的时候会报错。
Note:
exp:
int bdata ibase
sbit mybit0 = ibase ^ 0;
extern bit mybit0;
这就是sbit与 bit的不同之处:sbit是建立之前已经存在,bit是未存在的。
阅读(866) | 评论(0) | 转发(0) |