當前位置:編程學習大全網 - 編程軟體 - C語言中,如何定義單片機的寄存器

C語言中,如何定義單片機的寄存器

位地址在匯編語言中,只能直接尋址,不支持間接尋址。那麽,在 C 語言中,也就不能用指針來操作。所以不能定義單片機的寄存器。

訪問寄存器可以通過直接地址引用來完成。

例如52單片機的寄存器有4組,分別為00H-07H,08H-0FH,10H-17H,18H-1FH,各組均8字節,要結合程序狀態字寄存器PSW(D0H)中的RS0,RS1的組合來確定是哪壹組。

可以定義壹個訪問Rn的函數

typedef?unsigned?char?uchar;

uchar?dacRn(uchar?n)//n=[0..7]

{

uchar?data?*p;

n?+=?(PSW?&?0x18);?//PSW?7:CY?6:AC?5:F0?4:RS1?3:RS0?2:OV?1:F1?0:P

//本來要右移三位變為0-3,但由於是8個壹組要乘以8(左移3位),所以直接加上寄存器編號就可以了

return?*(uchar?data?*)n;

}

  • 上一篇:達內培訓java後找工作難嗎?求大神指點
  • 下一篇:2024數控編程是手工編程嗎?
  • copyright 2024編程學習大全網