標(biāo)題: [求助] 請教個簡單的入門問題(看內(nèi)容吧) [打印本頁]

作者: mashrb    時間: 2012-3-8 15:35
標(biāo)題: [求助] 請教個簡單的入門問題(看內(nèi)容吧)
#include "reg51.h" sbit P1_0 = P1^0; void main() { P1_0 = 0; } 仿真的話上面點(diǎn)亮的是第一個燈,如果將語句“sbit P1_0 = P1^0;”改為“sbit P1_0 = P1^1;” 地址wytq偏移了1個單位,那么點(diǎn)亮的便是第二個燈吧! 在reg51.h 文件里有這么兩名:sfr P0 = 0x80;sfr P1 = 0x90; P0到P1地址相差剛好是10(個單位)。 那么如果我還是要點(diǎn)亮第 一 個燈。 可不可以用這樣:sbit P1_0 = P0^10 (用P0偏移10個單位的地址得到P1) ?????
[此貼子已經(jīng)被作者于2012-3-8 15:36:13編輯過]

作者: mashrb    時間: 2012-3-8 15:37
無法編程換行,請大家耐心點(diǎn)看吧。然后幫幫解答一下!
作者: 青蘋果    時間: 2012-3-8 17:48

會自己來推理,確實(shí)是好事

 

但是還是建議你多看點(diǎn)書,基礎(chǔ)很重要


作者: 青蘋果    時間: 2012-3-8 17:49
P1^1的意思不是什么偏移一個地址,指的是P1.1在C語言里,^就是 .  的意思
作者: 青蘋果    時間: 2012-3-8 17:51

另外0X80和0X90,他們之間不是相差10哦,而是相差16


作者: 青蘋果    時間: 2012-3-8 18:00
看看書吧,磨刀不誤砍柴工呀
作者: mashrb    時間: 2012-3-8 18:10
哦,是了。0x80 到0x90 是相差16。是16進(jìn)制的。 那我把那句改成:sbit P1_0 = P0^16,編譯不過呀。為什么? 我在書上沒有看到這方面的講解,現(xiàn)在正在看《新概念51單片機(jī)C語言教程.入門、提高、開發(fā)》好像也沒有講到。
作者: 青蘋果    時間: 2012-3-8 20:32
我不是說了嘛, ^ 這個符號不是代表偏移,而是代表前面一個寄存器的第幾位,一個只有八位的數(shù),你想知道它的第九位,你覺得可行嗎?
作者: mashrb    時間: 2012-3-8 21:21
原來如此。 還以為按C語言來,可以偏移到任何地址呢! 學(xué)習(xí)了,謝謝大師!
作者: wuchuantrey    時間: 2012-3-8 23:42

我認(rèn)為不行,樓上那位仁兄也講了^的含義,和c語言中的不同。。






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