您的位置 首页 ADAS

有用C51编程的高档技巧(C51编程)

实用C51编程的高级技巧(C51编程)一C51热启动代码的编制voidmain(){chardata*HotPoint=(char*)0x7f;if((*HotPoint==0xaa)(

有用C51编程高档技巧(C51编程)

一. C51热启动代码的编制

void main()

{

char data *HotPoint=(char *)0x7f;

if((*HotPoint==0xaa)&&(*(–HotPoint)==0xaa))

{

}

else

{

HotPoint=0x7e;

}

假如你的程序包括startup.a51,则需求对startup.a51进行修正。

关于startup.a51的修正,依据自已的需求进行,如将IDATALEN EQU 80H中的80H改为70H,就可以使6F到7F的16字节内存不被清零。

二.直接调用EPROM中已固化的程序

void main(void)

{

void (*DispBuffer)();

DispBuffer=0xde00;

for(;;)

{

Key();

DispBuffer();

}

}

原理:运用指向函数的指针来完成的 (*指针变量名)();

三. 将浮点数转化为字符数组

#define uchar unsigned char

#define uint unsigned int

void FtoC(void)

{

float a;

uchar i,*px

uchar x[4];

pf=&a;

a=34.526;

for(i=0;i<4;i++)

{

*(px+i)=*((char *)pf+i);

}

}

假如已将数存入EEPROM,要将其取出兼并,办法也是相同,可参阅下面的程序。

void CtoF(void)

{

float a;

uchar i,*px

uchar x[4]={56,180,150,73};

void *pf;

px=x;

pf=&a;

for(i=0;i<4;i++)

{

*((char *)pf+i)=*(px+i);

}

}

四.肯定存储器拜访

(1) 肯定存储器拜访宏

#define CBYTE ((unsigned char volatile code *)0)

#define DBYTE ((unsigned char volatile data *)0)

#define XBYTE ((unsigned char volatile xdata *)0)

#define IBYTE ((unsigned char volatile idata *)0)

#define PBYTE ((unsigned char volatile pdata *)0)

(2) 连接器方位操控

KeilC编译设置中,有界说

(3) 关键字_at_

data unsigned char aaa _at_ 0x40;

idata unsigned char aaa _at_ 0x40;

xdata unsigned char aaa _at_ 0x40;

code unsigned char aaa _at_ 0x40;

五. 强制函数的编译形式

void GetDataLen()small;

void GetDataLen()small

{

……………….

}

六. C程序与汇编的接口

1.第1种状况:直接嵌入汇编

#pragma asm

#paragma endasm

2.第2种状况:文件间调用

经过寄存器传递参数,经过固定存储区传递参数。

3.第3种状况:由C生成汇编接口

#pragma SRC

#pragma SMALL

unsigned int asmfunc1 (

unsigned int arg)

{

return (1 + arg);

}

七. volatile的运用办法及运用条件点

第一种状况涉及到内存映射硬件(memory-mapped hardware,如图形适配器,这类设备对计算机来说就好象是内存的一部分相同);

#define XBYTE[1000] PORTADD //硬件口地址界说

第二种状况涉及到同享内存(shared memory,即被两个以上一起运转的程序所运用的内存)。

C51中中止调用的变量

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/259637.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部