Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1592269
  • 博文数量: 354
  • 博客积分: 8137
  • 博客等级: 中将
  • 技术积分: 5137
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-26 15:40
文章分类

全部博文(354)

文章存档

2010年(300)

2009年(54)

分类: 嵌入式

2010-07-04 01:32:27

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是未存在的。
阅读(839) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~