社区
单片机/工控
帖子详情
求助unsigned char data ACC_BIT; 中间的data什么意思呢
fengxiao100100
2011-04-18 06:40:11
unsigned char data ACC_BIT; // 位运算器及 7级中间过渡栈
麻烦问一下中间的data什么意思
...全文
1179
3
打赏
收藏
求助unsigned char data ACC_BIT; 中间的data什么意思呢
unsigned char data ACC_BIT; // 位运算器及 7级中间过渡栈 麻烦问一下中间的data什么意思
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
PeterPan
2011-04-18
打赏
举报
回复
2
在Keil C里,data表示内部存储区开始的128字节,可以直接寻址,速度较快。
如果变量很多,大于128字节,有部分变量必然放在后128字节,采用间接寻址,速度稍慢。
这时,把常用的变量规定为data,可以提高执行速度。
0深水蓝0
2011-04-18
打赏
举报
回复
LS的非常正解,一般需要严格控制变量读取速度的时候会用。
例如变量更新速度很快,或者需要很短时间内读取或者修改的变量,一般放在data。
一般容量要求大的,但速度并没有太大要求的,一般放在xdata里面。
如果所有变量都不加这些关键字的话,编译器会自动分配,但编译器的分配方案并不一定是最好的。而且一般都不会非常合理。
chngok
2011-04-18
打赏
举报
回复
3
这里的关键词:data定义了变量存储的内存空间
c51中的存储类型
code :程序存储区(64KB),
data :可直接寻址的内部数据存储区(128B)
idata:不可直接寻址的内部数据存储区(256B)
bdata:可位寻址内部数据存储区(16B)
xdata:外部数据存储区(64KB)
pdata:分页的外部数据存储区
单片机C语言中变量的定义方法解析.docx
单片机C语言中变量的定义方法解析.docx
51系列中
data
_i
data
_x
data
_p
data
的区别
51系列中
data
_i
data
_x
data
_p
data
的区别
ds1302时钟 液晶显示
自认为还行 有仿真效果 /************************************************************************** THE REAL TIMER DS1302 DRIVER LIB COPYRIGHT (c) 2005 BY JJJ. -- ALL RIGHTS RESERVED -- File Name: DS1302.h Author: Jiang Jian Jun Created: 2003/7/21 Modified: NO Revision: 1.0 ***************************************************************************/ #ifndef _REAL_TIMER_DS1302_2003_7_21_ #define _REAL_TIMER_DS1302_2003_7_21_ s
bit
DS1302_CLK = P1^6; //实时时钟时钟线引脚 s
bit
DS1302_IO = P1^7; //实时时钟数据线引脚 s
bit
DS1302_RST = P1^5; //实时时钟复位线引脚 s
bit
ACC
0 =
ACC
^0; s
bit
ACC
7 =
ACC
^7; typedef struct __SYSTEMTIME__ {
unsigned
char
Second;
unsigned
char
Minute;
unsigned
char
Hour;
unsigned
char
Week;
unsigned
char
Day;
unsigned
char
Month;
unsigned
char
Year;
unsigned
char
DateString[9];
unsigned
char
TimeString[9]; }SYSTEMTIME; //定义的时间类型 #define AM(X) X #define PM(X) (X+12) // 转成24小时制 #define DS1302_SECOND 0x80 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY 0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C #define DS1302_RAM(X) (0xC0+(X)*2) //用于计算 DS1302_RAM 地址的宏 void DS1302InputByte(
unsigned
char
d) //实时时钟写入一字节(内部函数) {
unsigned
char
i;
ACC
= d; for(i=8; i>0; i--) { DS1302_IO =
ACC
0; //相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0;
ACC
=
ACC
>> 1; } }
unsigned
char
DS1302OutputByte(void) //实时时钟读取一字节(内部函数) {
unsigned
char
i; for(i=8; i>0; i--) {
ACC
=
ACC
>>1; //相当于汇编中的 RRC
ACC
7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; } return(
ACC
); } void Write1302(
unsigned
char
ucAddr,
unsigned
char
ucDa) //ucAddr: DS1302地址, uc
Data
: 要写的数据 { DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); // 地址,命令 DS1302InputByte(ucDa); // 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; }
unsigned
char
Read1302(
unsigned
char
ucAddr) //读取DS1302某地址的数据 {
unsigned
char
uc
Data
; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); // 地址,命令 uc
Data
= DS1302OutputByte(); // 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; return(uc
Data
); } void DS1302_SetProtect(
bit
flag) //是否写保护 { if(flag) Write1302(0x8E,0x10); else Write1302(0x8E,0x00); } void DS1302_SetTime(
unsigned
char
Address,
unsigned
char
Value) // 设置时间函数 { DS1302_SetProtect(0); Write1302(Address, ((Value/10)<<4 | (Value%10))); } void DS1302_GetTime(SYSTEMTIME *Time) {
unsigned
char
ReadValue; ReadValue = Read1302(DS1302_SECOND); Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MINUTE); Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR); Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY); Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_WEEK); Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH); Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_YEAR); Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); } void DateToStr(SYSTEMTIME *Time) { Time->DateString[0] = Time->Year/10 + '0'; Time->DateString[1] = Time->Year%10 + '0'; Time->DateString[2] = '-'; Time->DateString[3] = Time->Month/10 + '0'; Time->DateString[4] = Time->Month%10 + '0'; Time->DateString[5] = '-'; Time->DateString[6] = Time->Day/10 + '0'; Time->DateString[7] = Time->Day%10 + '0'; Time->DateString[8] = '\0'; } void TimeToStr(SYSTEMTIME *Time) { Time->TimeString[0] = Time->Hour/10 + '0'; Time->TimeString[1] = Time->Hour%10 + '0'; Time->TimeString[2] = ':'; Time->TimeString[3] = Time->Minute/10 + '0'; Time->TimeString[4] = Time->Minute%10 + '0'; Time->TimeString[5] = ':'; Time->TimeString[6] = Time->Second/10 + '0'; Time->TimeString[7] = Time->Second%10 + '0'; Time->DateString[8] = '\0'; } void Initial_DS1302(void) {
unsigned
char
Second=Read1302(DS1302_SECOND); if(Second&0x80) DS1302_SetTime(DS1302_SECOND,0); } /******************************************************************************** void BurstWrite1302(
unsigned
char
*pWClock) //往DS1302写入时钟数据(多字节方式) {
unsigned
char
i; Write1302(0x8e,0x00); // 控制命令,WP=0,写操作? DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(0xbe); // 0xbe:时钟多字节写命令 for (i = 8; i>0; i--) //8Byte = 7Byte 时钟数据 + 1Byte 控制 { DS1302InputByte(*pWClock); // 写1Byte数据 pWClock++; } DS1302_CLK = 1; DS1302_RST = 0; } void BurstRead1302(
unsigned
char
*pRClock) //读取DS1302时钟数据(时钟多字节方式) {
unsigned
char
i; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(0xbf); // 0xbf:时钟多字节读命令 for (i=8; i>0; i--) { *pRClock = DS1302OutputByte(); // 读1Byte数据 pRClock++; } DS1302_CLK = 1; DS1302_RST = 0; } void DS1302_TimeStop(
bit
flag) // 是否将时钟停止 {
unsigned
char
Data
;
Data
=Read1302(DS1302_SECOND); DS1302_SetProtect(0); if(flag) Write1302(DS1302_SECOND,
Data
|0x80); else Write1302(DS1302_SECOND,
Data
&0x7F); } ********************************************************************************/ #endif
51的i
data
,x
data
,p
data
,
data
的详解
详细介绍了51语言语法的i
data
,x
data
,p
data
,
data
的详解
i
data
,x
data
,p
data
,
data
的详解
各种类型 的比较
单片机/工控
27,508
社区成员
28,796
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章