了解这个嵌入式c代码

时间:2011-07-07 20:10:51

标签: c embedded

我正在尝试理解这个嵌入式c代码。我认为这意味着它将端口位连接到总线中的某个寄存器。如我错了请纠正我。我们对端口做出的改变将反映在总线寄存器上。这是代码的片段。感谢。

/*--------------------------------------------------------------------------
Local Variables
--------------------------------------------------------------------------*/
// Port bits assigned to Amba Peripheral Bus (APB)
// P0^7..P0^0               // output=reg_addr, input=data_in (APB prdata)
sbit APB_SEL = P1^7;        // select a bus transaction
sbit APB_EN  = P1^6;        // enable/activate a component 0 = disable, 1 = enable

2 个答案:

答案 0 :(得分:9)

代码定义了要从寄存器读取的位位置。 sbit定义了特殊功能寄存器(SFR)中的一个位。

sbit APB_SEL = P1^7;

此处P1是先前定义的SFR。该行将APB_SEL定义为P1的第7位(从零开始编号)。

This链接包含有关语法的其他详细信息。

答案 1 :(得分:0)

sbit类型定义了特殊功能寄存器(SFR)中的一个位。它以下列方式之一使用:

window=QtGui.QMainWindow()
    window.centralContent=QtGui.QMainWindow()

window.setCentralWidget(window.centralContent)

window.centralContent.firstTabWidget=QtGui.QWidget()
window.centralContent.firstTabDock=QtGui.QDockWidget("first")
window.centralContent.firstTabDock.setWidget(window.centralContent.firstTabWidget)
window.centralContent.addDockWidget(window.centralContent.firstTabDock)
 window.centralContent.secondTabWidget=QtGui.QWidget()
window.centralContent.secondTabDock=QtGui.QDockWidget("second")
window.centralContent.secondTabDock.setWidget(window.centralContent.secondTabWidget)
window.centralContent.addDockWidget(window.centralContent.secondTabDock)

window.centralContent.tabifyDockWidget( window.centralContent.firstTabDock, window.centralContent.secondTabDock)

其中

名称 是SFR位的名称。

sfr-name 是先前定义的SFR的名称。

位位置 是SFR中位的位置。

sfr-address 是SFR的地址。

sbit-address 是SFR位的地址。

对于典型的8051应用,通常需要访问SFR中的各个位。 sbit类型提供对位可寻址SFR和其他位可寻址对象的访问。 例如:

sbit EA = 0xAF;

该声明将EA定义为地址0xAF处的SFR位。在8051上,这是中断使能寄存器中的全部使能位。