單片機基礎原理2-----初始化模塊

自以爲稍微明白單片機以後,一編程就發現一個大問題,哪些亂七八糟的變量被賦值0x00030之類的十六進制值還真不是全是地址。原來是一種初始化。

打個比方,學完基礎的知識以後,雖然知道scon,計時器計數器幹什麼的,但是它冷不防給你一個

	TMOD=0x20;//timer work 
	SCON=0x50;

這是啥?難道是讓計時器在0x20的位置上幹活嗎?難道是SCON存儲位置在0x50的位置上嘛?

顯然不是,那麼這裏的十六進制是個什麼?就引出了今天的學習,初始化單片機模塊。

 

 

初始化模塊主要說TMOD和SCON這兩個正在接觸的模塊。

就比如最一開始兩個代碼,0x20這個十六進制,轉換成二進制是10000000

其實這是一個“標籤”,我把TMOD這個模塊可視化出來:

是這個樣子的,很明顯它確實是有8個空間,這也就完美解決了概念上爲什麼這個寄存器是隻能字節尋址的。

8個空間就像是一個標籤,每一個空間都代表一個狀態。比如兩個GATE代表這兩個定時器的門,如果打開了門,說明這兩個定時器由外部線路控制,如果關着的,就是內部TR0和TR1控制。

C/T是計時功能和計數功能的區別

M1\M0就是方式選擇。

 

可視化就能說明這一切,原來單片機裏面的各種十六進制並不是全是地址,還有真的賦值的。

 

那麼接着來看SCON

這個寄存器,在單片機原理裏面就是一個比較重要的寄存器,他控制着串口的控制方式。

先可視化他的空間:

是這個樣子的,也是8個口,但是東西比較多。其中D7\D6這兩個空間是用來選擇方式的,D5是用來控制多機通訊的(目前並沒有弄明白)

然後REN和TB8這些東西也沒完全弄明白。

由此可見,如果要做單片機,光寫程序的初始化就得至少對這些寄存器有較爲深入的瞭解。路漫漫啊,有空再繼續更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章