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

標題: 單片機sbit數組的問題 [打印本頁]

作者: Aorey    時間: 2019-7-22 10:41
標題: 單片機sbit數組的問題
我想使用串口指令控制單片機的引腳,所以想把引腳對應的變量放在sbit數組中,但是keil好像不支持sbit數組,我應該如這編寫?

作者: linzhiqi1    時間: 2019-7-23 09:12
用整形變量,通過位運算,一個字節存8個位變量,實現。用宏的方式定義好了。形式上就類似你所要的功能。
作者: lwh999995    時間: 2019-7-24 01:36
sbit 對應可位移空間的1個位,可位尋址,怎么可能 數組
用 char
作者: glmac    時間: 2019-7-24 10:21
例如: 單個引腳可以使用  sbit  led = P0^0 ;  這個是位變量(bit是位的意思,一位就是一個1或者0)

如果想把整個I/O里面的8個針腳一次性變更名稱    需要宏定義:
例: #define   LED  P0    // 后面沒有分號  使用的時候和直接操作P0一樣
作者: Aorey    時間: 2019-8-8 10:03
glmac 發表于 2019-7-24 10:21
例如: 單個引腳可以使用  sbit  led = P0^0 ;  這個是位變量(bit是位的意思,一位就是一個1或者0)

如 ...

就是因為引腳太多了,所以才想用數組,用循環控制,單個寫,編程量太大。
作者: Aorey    時間: 2019-8-8 10:04
lwh999995 發表于 2019-7-24 01:36
sbit 對應可位移空間的1個位,可位尋址,怎么可能 數組
用 char

能舉個例子嗎?我試了用指針也不行。
作者: zynn    時間: 2019-8-8 11:21
可以用char tab[];
作者: witheMe    時間: 2019-8-10 09:08
sbit不可以對數組操作,這是位尋址命令
作者: yanzhe111    時間: 2021-8-27 15:03
你好  請問下這個問題最后你是怎么解決的
作者: lkc8210    時間: 2021-8-27 17:03
yanzhe111 發表于 2021-8-27 15:03
你好  請問下這個問題最后你是怎么解決的

可以這樣
  1. void IO_out(uchar dat)
  2. {
  3.   P34=dat&0x80;
  4.   P30=dat&0x40;
  5.   P12=dat&0x20;
  6.   P10=dat&0x10;
  7.   P30=dat&0x08;
  8.   P33=dat&0x04;
  9.   P13=dat&0x02;
  10.   P11=dat&0x01;
  11. }
復制代碼

作者: npn    時間: 2021-8-27 20:59
sbit、bit不支持數組,原因c51指令集位尋址不支持間接尋址、可以定義一個unsigned char數組,然后用函數移位邏輯運算實現。
作者: Y_G_G    時間: 2021-8-27 22:20
8051的引腳變量是通過影射寄存器的實現的,它都有對應的寄存器,讀取寄存器的值就是對應引腳的值,操作對應的寄存器就是操作引腳
如果要保存,一個地址不就可以保存8個端口的狀態嗎?
要數組要干嘛
作者: 188610329    時間: 2021-8-28 14:47
首先更正一下,不是Keil不支持,使單片機不支持,你如果了解一下匯編會明白,所謂的數組,就是通過@R1, 進行間接尋址,你通過改寫R1的值,然后@R1 取出不同地址的值。
而對于位地址,沒有間接尋址方式,都是直接通過位地址來尋址,所以不存在"數組“ 這個概念。
就好像,寄存器地址,只能直接尋址,不能間接尋址,你嘗試看看編個代碼能把所有寄存器的內容讀出來?
唯一的辦法,就是寫一個字函數,子函數里枚舉所有的地址,然后調用。代碼量肯定是省不了的。
作者: 188610329    時間: 2021-8-28 14:58
Aorey 發表于 2019-8-8 10:04
能舉個例子嗎?我試了用指針也不行。

摟主提到指針,那么,摟主嘗試用指針操作P0,P1,這些,等你發現不行了,就會明白,硬件底層的不支持,是多么的無奈。

最后,說一下代碼量,和程序大小,其實單片機編程,更在意編譯出來程序的大小,而不在乎代碼量。直接尋址你代碼寫的好,最后程序大小要比間接尋址小的多。這也是為什么寄存器都是直接地址了。
作者: 呂海佳    時間: 2021-8-28 21:38
sbit是一個位操作




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品一区二区三区在线 | 日本免费一区二区三区 | 久久精品国产v日韩v亚洲 | 欧美日韩精品综合 | 亚洲九色| 中国三级黄色录像 | 免费av在线| 亚洲精品日本 | 亚洲一区二区三区免费观看 | 黄色片视频免费 | 黄色免费三级 | 日本色婷婷 | 国产亚洲精品美女久久久久久久久久 | 伊人影院99 | 特一级毛片 | 成人久草 | 久久久久久久久久久久91 | 欧美一区二区三区免费在线观看 | 在线国产精品一区 | 日韩在线成人 | 久草综合在线 | 欧美日韩亚洲国产综合 | 欧美一区二区三区四区在线 | 免费视频一区二区 | 成年视频在线观看福利资源 | 81精品国产乱码久久久久久 | 在线观看黄色电影 | 成人免费在线观看 | 久久久久久久久久久国产 | 天天视频一区二区三区 | 国产毛片av | 午夜日韩| 亚洲精品国产成人 | 亚洲国产精品久久久久婷婷老年 | 欧美理论片在线 | 亚洲综合色站 | 亚洲福利在线观看 | 免费看的黄网站 | 一区二区三区国产 | 欧美人妖网站 | 中文字幕日韩欧美一区二区三区 |