我正在尝试理解这个嵌入式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
答案 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上,这是中断使能寄存器中的全部使能位。