alien关键词主要是为了C51编译器与PL/M-51编译器兼容。
在C51编译器中调用PL/M-51函数,须使用alien声明该函数,如下:
extern alien char plm_func (int, char);
char c_func (void) {
int i;
char c;
for (i = 0; i < 100; i++) {
c = plm_func (i, c); /* call PL/M func */
}
return (c);
}
为了创建能被PL/M-51程序调用的C51函数,须使用alien关键词声明,如下:
alien char c_func (char a, int b) {
return (a * b);
}
PL/M-51函数的返回值和参数类型可为bit,char,unsigned char,int,unsigned int。C51中alien声明的函数也可使用其他类型如long,float,以及各种类型指针。
须要注意的是,PL/M-51并不能直接支持32位整型数和浮点数。
在C51程序中调用PL/M-51定义的全局变量,只需像调用C51外部变量一样声明extern即可。
关键字:Keil C51 alien
引用地址:
Keil C51对C语言的关键词扩展之二: alien
推荐阅读最新更新时间:2024-03-16 16:06
proteus7.7+Keil2仿真80C51控制路口信号灯(带左转信号灯)
要想设计带左转信号的路口信号灯, 就必须先将圆饼信号灯的控制逻辑理解透彻. 在本例的设计过程中, 我设计了本路口的信号控制逻辑: 南北直行放行 - 东西直行放行 - 南北左转放行 - 东西左转放行, 若不考虑数码管的显示问题, 则只需对圆饼信号灯的控制程序稍加修改即可. 但在实际应用中, 大部分的路口都配备了数字显示数码管, 用于显示直行方向红、黄、绿灯的倒计时秒数, 以提升交通通行效率——所以, 在此很有必要将倒计时显示功能加入到设计中. 我将完整的信号控制逻辑绘制为下图. 在实际编程中, 由于我一开始并未将控制逻辑完全理清, 所以编写的控制程序是在圆饼信号控制系统之上经过修修补补完成的, 多少有点碰巧的成分. 在分
[单片机]
c51单片机实用通信协议
一、基本格式: 通信头- 巴克码- 地址字- 长度字- 命令字- 信息位- 校准字 1. 通信头:占1~8个字节,表通信开始(0x00、0xff不能用作通信头); 2.巴克码:占1字节,一般为0x72,表通信头结束; 3.地址字:表终端的地址,占1字节(0x00作为广播地址); 4.长度字:占1字节,表示从地址字到信息位之间的字节数; 5.命令字:占1字节,指示终端的不同操作; 6.信息位:不定长,从0~252字节; 7.校验位:两个字节,采用和校验及CRC校验。 二、应答 1.如果终端接收正确,则应答ACK;如果终端接收错误,则应答NAK; 2.发送方收到ACK,此次通信结束; 3.发送方收到NAK,重发刚
[单片机]
keil-protues仿真(简单易用)
记得在上学的时候,在实验室里面经常用keil与protues进行对c51单片机的学习;现在已经告别51将近1年半的时间了,这几天自己在学习ucosII,想把ucos给移植到51单片机中,所以就需要了以前的keil、protues,可是都给忘了。。。那好吧接下来简单的复习一下: 1:从网上下载keil 4 从网上下载protues 2:安装以上2个软件,可能需要破解(这个大家应该都知道) 3:在keil 4中编写一个最简单的led闪烁的程序 #include AT89X51.H void sleep(int num) { while(num) { num--; } } void main()
[单片机]
STM32 Keil仿真进不了Main()函数
STM32仿真进不了Main()函数问题,运行会一直卡在启动函数里面或者时钟配置函数里面。 原因是Keil仿真最多只支持5个断点,大于等于5个断电,则会出现该问题!!!!!!!
[单片机]
240x128液晶T6963控制器驱动程序(C51)
简介:本文主要介绍了240x128液晶T6963控制器驱动程序(C51)。 #include absacc.h #include math.h #include ASCII816.h //标准ASCII库 #include HZTable.h //汉字点阵库(自做) #include menu.h //菜单库(自做) #define ComPort 0xB101 #define DataPort 0xB000 #define GraphAddr 0x0000 //head of graph //以8*8字符计算,显示屏横向、纵向可以显示的字符个数 //以240*128为例: #define LineChar
[单片机]
keil+stm32+JTAG利用swd方式进行printf输出
使用ITM机制实现调试stm32单片机,实现printf与scanf。 1. ITM简介 ITM机制是一种调试机制,是新一代调试方式,在这之前,有一种比较出名的调试方式,称为半主机(semihosting)方式。 在pc上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用操作系统的这些函数,我们可以很方便的调试程序。在嵌入式设备上(如stm32单片机平台上)开发工具(如MDK/IAR)也都提供了标准库函,自然也提供了printf/scanf函数,那么这些函数是否可以使用呢? 问题来了,printf向哪里输出呢?并且大部分情况下,也没有键盘,又如何
[单片机]
51单片机C51精确延时
如下程序能实现ms级的比较精确的延时: void Delayms(unsigned int n) { unsigned int i,j; for(j=n;j 0;j--) for(i=112;i 0;i--); } 用keil可以看出这个延时的时间,我们先延时1ms(Delayms(1))。 进入Delayms前,sec=0.00042209s 延时后,sec=0.00142253s 可以知道Delayms(1)实际延时0.00142253s 0.00042209s=0.00100044s 1ms 同样如果想延时15ms的话,用Delayms(15),实际延时0.01480903s 15ms
[单片机]
英蓓特在中国分销ARM RealView和Keil开发工具
ARM分销网络的扩展为中国基于ARM解决方案设计师提供获得先进的ARM工具的便捷途径 深圳市英蓓特信息技术有限公司(英蓓特)和ARM公司(伦敦证交所:ARM;纳斯达克:ARMHY)今天宣布:英蓓特被指定为ARM RealView及KeilTM嵌入式开发工具在中国的分销商。这一对RealView和Keil开发工具分销网络的扩展使得中国设计基于ARM产品的工程师能够更方便的获得先进的ARM工具,以实现高质量的系统开发和快速的产品上市时间。 作为嵌入式系统领域被最广泛选用的架构,ARM不但向工程师提供先进的CPU产品,还提供完整的工具,帮助他们在开发周期的早期就能够创建、验证、模型化并测试他们的SoC设计。英蓓特早前已经成为AR
[焦点新闻]