国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

電子工程網

標題: KEIL中關于DBYTE [打印本頁]

作者: 左左    時間: 2010-10-28 01:32
標題: KEIL中關于DBYTE
這是KEIL C中一個絕對地址宏指令DBYTE的講解:
DBYTE[address]
說明:在8051內部數據存儲器里,讀取一個字節的內容
自變量:內部數據存儲器的地址(0~0xff)
定義:#define DBYTE((unsigned char volatile data *)0)
例子代碼:
#include "absacc.h"
void IRamSet (unsigned char value);
void Main(void)
{
   char val = 0
   IRamSet (0xaa);
   val = DBYTE [0x0032];
   DBYTE [0x0032]—0x1b;
}
unsigned char idata address _at_ 0x20;   // 這句定義是什么意思呢?
void IRamSet (unsigned char value)
{
   unsigned char idata *index = &address;
   unsigned char i;
   for (i = 0;i < (0x7f —0x20+0x01);i++)  // 這個循環的限制條件是什么意思呢?
  {
      *index = value;
      index ++;     
  }
}
想請教下,這個程序的大概意思是什么?以及幫我解答下程序中的兩個問題(已經注釋出來了)
作者: xyj    時間: 2010-10-28 01:32
沒看明白。。
看看你包含的頭文件和處理器的說明吧。
作者: 老郭    時間: 2010-11-1 22:50
解決了嗎?
作者: 左左    時間: 2010-11-2 10:02
沒有   沒人回答呀  正糾結著呢……
作者: suecollege    時間: 2010-11-2 19:25
長定義地址吧,怎么for里面會有那樣的語句啊
作者: 左左    時間: 2010-11-2 21:28
恩  是呀  我看的時候也不懂  …… 回復5樓suecollege
作者: 左左    時間: 2010-11-2 21:30
在Keil C51標準庫ABSACC.H中定義了一些宏,利用這些宏我們以絕對地址方式訪問51的存儲器。這幾個宏分別是:
#define CBYTE ((unsigned char volatile code  *) 0)
#define DBYTE ((unsigned char volatile data  *) 0)
#define PBYTE ((unsigned char volatile pdata *) 0)
#define XBYTE ((unsigned char volatile xdata *) 0)

#define CWORD ((unsigned int volatile code  *) 0)
#define DWORD ((unsigned int volatile data  *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)

以DBYTE為例,((unsigned char volatile data  *) 0)定義了一個值為零的指針,該指針指向data內部RAM存儲區的一個易變無符號單字節變量。
當我們以DBYTE[0x20]這樣類似于數組的方式使用它時,根據C語言中對指針索引的解釋方式,它訪問的是*(((unsigned char volatile data  *) 0) + 0x20),簡化為*(0 + 0x20),即*(0x20),就是data內部RAM存儲區0x20地址處的單字節變量。

?WORD宏和?BYTE的區別在于起始地址。以DWORD為例,如果我們訪問DWORD[0x20],由于unsigned int在C51中為兩字節長,因此DWORD[0x20]其實訪問的是data存儲區0x40地址開始的兩字節無符號整形變量。

code/data/pdata/xdata在C51中分別代表代碼區/內部RAM/按頁訪問的外部RAM/外部RAM四種存儲區訪問方式。


這是另一個論壇中對我的解答
作者: wyoh    時間: 2010-12-23 18:06
謝謝分享
作者: 孤獨小行星    時間: 2011-3-26 16:10
沒看明白!




歡迎光臨 電子工程網 (http://www.4huy16.com/) Powered by Discuz! X3.4