欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 關(guān)于單片機頭文件中數(shù)據(jù)存儲區(qū)地址宏定義的問題 [打印本頁]

作者: 默法師    時間: 2019-4-3 16:28
標(biāo)題: 關(guān)于單片機頭文件中數(shù)據(jù)存儲區(qū)地址宏定義的問題
#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;

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

作者: 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和別的單片機卻是有點不同的,就是在寄存器和數(shù)據(jù)存儲地址上,80H以上的地址名稱它是寄存器和數(shù)據(jù)存儲器共用的,也就是說0X80這個地址名稱是有兩個東西在用的,一個是P0端口的地址,它是0X80,另一個是數(shù)據(jù)存儲器,它也是0X80,當(dāng)你要對0X80這個地址進行操作的時候,它是通過尋址方式的不同來區(qū)分你是要操作寄存器還是操作數(shù)據(jù)存儲器的。
既然你用C,那就應(yīng)該沒有理由要用匯編去操作硬件,那就沒有必要用C去定義一個數(shù)據(jù)地址,那就和用匯編是一樣的了,那就是用匯編的方法去用C,沒意義
作者: 默法師    時間: 2019-4-8 14:45
感謝大佬們的解答!
其實我現(xiàn)在屬于卡在匯編和C之間的感覺,經(jīng)常不知道該用哪種方式去調(diào)用數(shù)據(jù)和操作數(shù)據(jù),再加上老板匯編用習(xí)慣了經(jīng)常要求我們一個寄存器掰成8個位來用,一點資源也不能浪費,于是就變成上面這種寫法了,其實我也想用匯編來寫啊,奈何匯編用不熟練,太長的代碼我自己都繞暈了
另外,我看reg51里的寫法,P0口之類對應(yīng)的端口地址不都是用sfr P0=0x80;這種方式來寫的嗎?sfr應(yīng)該就是您寫的不同尋址方式吧?




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1