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

標題: 關于單片機頭文件中數據存儲區地址宏定義的問題 [打印本頁]

作者: 默法師    時間: 2019-4-3 16:28
標題: 關于單片機頭文件中數據存儲區地址宏定義的問題
#define status                                        (*(volatile unsigned char*)0x80)
sbit                inscolor                                =                status^0;
sbit                voltagesel                                =                status^1;
sbit                E1                                        =                status^2
sbit                E2                                        =                status^3;
sbit                E3                                        =                status^4;

各位大佬看一下這一段宏定義,如果我這么定義數據存儲區的話,inscolor指向的是0x80的最低位嗎?還是會被自動分配到位尋址區去?
這樣定義的匯編操作又是怎么樣的呢?有什么更簡便的方法嗎?除對存儲區數據進行邏輯運算之外的。

作者: yzwzfyz    時間: 2019-4-4 13:08
你想一下:status 是不是一定是80H?
如果是:status^0 將是什么?
如果不是:status^0 又是什么?
作者: Y_G_G    時間: 2019-4-4 14:04
你這么干的目的是什么?你用的是51單片機嗎?如果 是51的話,你就參考包含的頭文件中的reg52.h的寄存器命名方法來命名
但51和別的單片機卻是有點不同的,就是在寄存器和數據存儲地址上,80H以上的地址名稱它是寄存器和數據存儲器共用的,也就是說0X80這個地址名稱是有兩個東西在用的,一個是P0端口的地址,它是0X80,另一個是數據存儲器,它也是0X80,當你要對0X80這個地址進行操作的時候,它是通過尋址方式的不同來區分你是要操作寄存器還是操作數據存儲器的。
既然你用C,那就應該沒有理由要用匯編去操作硬件,那就沒有必要用C去定義一個數據地址,那就和用匯編是一樣的了,那就是用匯編的方法去用C,沒意義
作者: 默法師    時間: 2019-4-8 14:45
感謝大佬們的解答!
其實我現在屬于卡在匯編和C之間的感覺,經常不知道該用哪種方式去調用數據和操作數據,再加上老板匯編用習慣了經常要求我們一個寄存器掰成8個位來用,一點資源也不能浪費,于是就變成上面這種寫法了,其實我也想用匯編來寫啊,奈何匯編用不熟練,太長的代碼我自己都繞暈了
另外,我看reg51里的寫法,P0口之類對應的端口地址不都是用sfr P0=0x80;這種方式來寫的嗎?sfr應該就是您寫的不同尋址方式吧?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: av影片在线 | 欧美成人一区二区三区 | 黄网站在线观看 | 久久国产精品网站 | 久久久久久久久91 | 欧美日韩国产精品一区二区 | 亚洲欧美日本在线 | 国产精品毛片久久久久久 | 草草精品 | 人人射人人草 | 91在线看片 | 日韩字幕 | 亚洲欧美一区二区三区在线 | 国产精品一区二区在线 | 国产精品精品久久久 | 日本一二三区高清 | 免费观看成人鲁鲁鲁鲁鲁视频 | 国产精品久久久久久亚洲调教 | 久久精品综合网 | 91精品久久久久久久久久小网站 | 日本一区二区三区四区 | 国产在线aa| 国产ts一区 | 免费久久99精品国产婷婷六月 | 成人夜晚看av | 九九热精品在线 | 在线日韩不卡 | 操视频网站 | 亚洲视频一区二区三区 | 国产高清一区二区三区 | 日韩高清一区 | 日韩精品久久一区二区三区 | 国产中文在线观看 | 麻豆av片 | 欧美成年网站 | 99综合网 | 欧美精品一区二区三区在线播放 | 亚洲在线一区二区 | 久久精品成人 | 成人性视频在线播放 | 欧美一区二区三区国产 |