完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Keil C51 vs 标准C 8051存储类型及存储区域 , 存储模式 , 存储器类型声明 , 变量类型声明 , 位变量与位寻址 ,特殊功能寄存器(SFR) ,C51指针 l 函数属性 具体说明如下(8031为缺省CPU)。 第一节 Keil C51扩展关键字 第二节 内存区域(Memory Areas): 2. Internal Data Memory: data:直接寻址区,为内部RAM的低128字节 00H~7FH 3. External Data Memory pdata:能访问1页(25bBytes)的外部RAM,主要用于紧凑模式(Compact Model)。 4. Speciac Function Register Memory sfr:字节寻址 比如 sfr P0=0x80;为PO口地址为80H,“=”后H~FFH之间的常数。 还可以有如下定义方法: 第三节 存储模式 提示:存储模式在C51编译器选项中选择。 第四节 存储类型声明 第五节 变量或数据类型 C51提供以下几种扩展数据类型: 第六节 位变量与声明 2. 可位寻址区说明20H-2FH 第七节 Keil C51指针 1. 一般指针 一般指针本身用3个字节存放,分别为存储器类型,高位偏移,低位偏移量。 2. 存储器指针 char data * str;str指向data区中char型数据 3. 指针转换 l 当基于存储器的指针作为一个实参传递给需要一般指针的函数时,指针自动转化。 l 如果不说明外部函数原形,基于存储器的指针自动转化为一般指针,导致错误,因而请用“#include”说明所有函数原形。 l 可以强行改变指针类型。 第八节 Keil C51函数 1. 中断函数声明: void serial_ISR () interrupt 4 [using 1] /* ISR */ } 为提高代码的容错能力,在没用到的中断入口处生成iret语句,定义没用到的中断。 /* define not used interrupt, so generate "IRET" in their entrance */ void extern0_ISR() interrupt 0{} /* not used */ void timer0_ISR () interrupt 1{} /* not used */ void extern1_ISR() interrupt 2{} /* not used */ void timer1_ISR () interrupt 3{} /* not used */ void serial_ISR () interrupt 4{} /* not used */ 2. 通用存储工作区 void fun1(void) small { } 提示:small说明的函数内部变量全部使用内部RAM。关键的经常性的耗时的地方可以这样声明,以提高运行速度。 6. 递归或可重入函数指定 a、在相应的函数前使用前述“#pragma dISAble”声明,即只允许主程序或中断之一调用该函数; b、将该函数说明为可重入的。如下: void func(param...) reentrant; KeilC51编译后将生成一个可重入变量堆栈,然后就可以模拟通过堆栈传递变量的方法。 由于一般可重入函数由主程序和中断调用,所以通常中断使用与主程序不同的R寄存器组。 另外,对可重入函数,在相应的函数前面加上开关“#pragma noaregs”,以禁止编译器使用绝对寄存器寻址,可生成不依赖于寄存器组的代码。 7. 指定PL/M-51函数 |
|
相关推荐
3 个讨论
|
|
内容还好,对我来讲有点深,多看看了 |
|
|
|
|
|
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 03:10 , Processed in 0.440445 second(s), Total 40, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号