在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機頭文件的作用

        單片機頭文件的作用

        作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
        剛剛在看52單片機和GPS通信程序的時候,看到了一個函數(shù),absacc.h,貌似從來沒有遇到過,百度了一下,結(jié)合自己的理解,整理如下:

        http://blog.sina.com.cn/s/blog_4f8cdc9e0100g1qp.html《51單片機keilC中頭文件absacc.h作用》

        本文引用地址:http://www.biyoush.com/article/201611/323349.htm

        http://apps.hi.baidu.com/share/detail/716779《absacc.h庫介紹》

        http://blog.sina.com.cn/s/blog_5f0187c50100e0nt.html《#include的作用(轉(zhuǎn))》

        就看這幾個基本夠了,應該能明白這個文件是什么了:

        在程序中,用“#include”即可使用其中定義的宏來訪問絕對地址,包括:
        CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

        例如:
        rval=CBYTE[0x0002];指向程序存貯器的0002h地址
        rval=XWORD [0x0002];指向外RAM的0004h地址 //WORD是一個字,兩個字節(jié),故為0004h

        #define COM8255 XBYTE[0X060FF] //后面若出現(xiàn)COM8255,則單片機端口P0和P2聯(lián)合輸出0X060FF絕對物理地址(地址指向82C55指令寄存器)
        #define PA8255 XBYTE[0X000FF] //后面若出現(xiàn)PA8255,則單片機端口P0和P2聯(lián)合輸出0X000FF絕對物理地址(地址指向82C55的A組端口寄存器)
        #define PB8255 XBYTE[0X020FF] //后面若出現(xiàn)PB8255,則單片機端口P0和P2聯(lián)合輸出0X020FF絕對物理地址(地址指向82C55的B組端口寄存器)
        #define PC8255 XBYTE[0X040FF] //后面若出現(xiàn)PC8255,則單片機端口P0和P2聯(lián)合輸出0X040FF絕對物理地址(地址指向82C55的C組端口寄存器)

        同理,在GPS與單片機的通信中,以下的宏定義就好理解了:

        #define gps_LG0 XBYTE[0x0]
        #define gps_LG1 XBYTE[0x1000]
        #define gps_LG2 XBYTE[0x2000]
        #define gps_LG3 XBYTE[0x3000]
        #define gps_LAT0 XBYTE[0x4000]
        #define gps_LAT1 XBYTE[0x5000]
        #define gps_LAT2 XBYTE[0x6000]
        #define gps_LAT3 XBYTE[0x7000]
        #define UTC0 XBYTE[0xc000]
        #define UTC1 XBYTE[0xd000]
        #define UTC2 XBYTE[0xe000]
        #define UTC3 XBYTE[0xf000]

        #define SNum XBYTE[0xa000]

        無非就是利用XBYTE來使得定義的宏指向一個實際的物理地址。

        在keil中,可以直接看到關(guān)于這個文件的定義:

        /*--------------------------------------------------------------------------
        ABSACC.H

        Direct access to 8051, extended 8051 and Philips 80C51MX memory areas.
        Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
        All rights reserved.
        --------------------------------------------------------------------------*/

        #ifndef __ABSACC_H__
        #define __ABSACC_H__

        #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)


        #ifdef __CX51__
        #define FVAR(object, addr) (*((object volatile far *) (addr)))
        #define FARRAY(object, base) ((object volatile far *) (base))
        #define FCVAR(object, addr) (*((object const far *) (addr)))
        #define FCARRAY(object, base) ((object const far *) (base))
        #else
        #define FVAR(object, addr) (*((object volatile far *) ((addr)+0x10000L)))
        #define FCVAR(object, addr) (*((object const far *) ((addr)+0x810000L)))
        #define FARRAY(object, base) ((object volatile far *) ((base)+0x10000L))
        #define FCARRAY(object, base) ((object const far *) ((base)+0x810000L))
        #endif

        #endif



        關(guān)鍵詞: 單片機頭文

        評論


        技術(shù)專區(qū)

        關(guān)閉