久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

用sbit定義可位尋址的特殊功能寄存器時的地址轉換-51單片機C編程

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年09月01日   【字體:

80C51單片機C編程時中,用sbit定義可位尋址的特殊功能寄存器的位變量(感覺說是常量更確切)時,編譯器會進行處理,把sbit 后面給的地址值 轉換成 相應的可進行位尋址的特殊功能寄存器 bit位 的位地址。轉換不了時uVision報錯,編譯不通過。

比如,在頭文件reg51.h中,定義了 sfr P0 = 0x80,該地址標識的是51芯片的P0端口的8個引腳。(一個字節)。
同時reg51.h中還定義了 sfr SP = 0x81。

如果自己定義 sbit TEST1 = 0x81;實驗時會發現:TEST1實際表示的是0x80標識的8bits中的第二個bit位,表示成0x80.1。

 

按照一般的理解:TEST1應該是地址0x81對應的8bit的第一個bit位(0x81.0),但是事實不是這樣的;

如果定義 sbit TEST4 = 0x84,表示的是0x80.4;
sbit TEST7 = 0x87,表示的是0x80.7。

但是當末尾大于7后,比如 sbit TEST8 = 0x88,表示的是0x88.0, 而不是0x81.0;
sbit TEST9 = 0x89;表示的是0x88.1; 依次類推到0x8f表示0x88.7。


開始是用實驗板上的LED來檢查,后來在uVision里面軟調試,看Parallel Port0。看Memory是沒用的,特殊功能寄存器的地址和內存空間地址是兩個東西;后來看Symbols,終于把sbit定義的控制位的實際地址看清楚,但是沒想明白,為甚么是這樣,規律是怎樣的。

查了一下資料,原來特殊功能寄存器中不是所有字節都可進行位尋址,支持位尋址字節地址的是:
0x80,0x88,0x90, 0x98, 0xA0, 0xA0, 0xA8, 0xB0, 0xB8, 0xC0, 0xC8, 0xD0, 0xD8, 0xE0, 0xE8, 0xF0, 0xF8
共16個,這些地址不連是續,能被8整除, 即字節地址是以8或0為尾數的

 

關閉窗口

相關文章

主站蜘蛛池模板: 国产精品揄拍一区二区 | 日本不卡免费新一二三区 | 亚洲精品v日韩精品 | 国产亚洲一区二区精品 | 毛片大全 | 欧美午夜精品 | 天天射美女 | 男女国产视频 | 狠狠狠干 | 毛片视频网址 | 精品亚洲一区二区 | 91精品久久久久久久 | 99久久成人| 91久久精品 | 亚洲永久字幕 | 91在线一区二区 | 中文字幕国产精品 | 亚洲一区中文字幕 | 久久精品二区 | 久久黄色精品视频 | 91最新入口| 久久久久久久久久久国产 | 久久久久黑人 | 日日夜夜天天 | 欧美一级艳情片免费观看 | 丝袜 亚洲 另类 欧美 综合 | 中文字幕在线观看 | 亚洲乱码一区二区三区在线观看 | 欧美成人精品欧美一级 | 欧美在线一区二区三区 | 亚洲精品天堂 | 亚洲乱码一区二区三区在线观看 | 欧美精品被 | 欧美国产日韩在线观看 | 亚洲精品免费视频 | 91视频观看 | 欧美一二区 | 欧美男人天堂 | 中文字幕一区在线观看视频 | 精品乱码一区二区 | 欧美日韩国产欧美 |