单片机基础原理2-----初始化模块

自以为稍微明白单片机以后,一编程就发现一个大问题,哪些乱七八糟的变量被赋值0x00030之类的十六进制值还真不是全是地址。原来是一种初始化。

打个比方,学完基础的知识以后,虽然知道scon,计时器计数器干什么的,但是它冷不防给你一个

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

这是啥?难道是让计时器在0x20的位置上干活吗?难道是SCON存储位置在0x50的位置上嘛?

显然不是,那么这里的十六进制是个什么?就引出了今天的学习,初始化单片机模块。

 

 

初始化模块主要说TMOD和SCON这两个正在接触的模块。

就比如最一开始两个代码,0x20这个十六进制,转换成二进制是10000000

其实这是一个“标签”,我把TMOD这个模块可视化出来:

单片机基础原理2-----初始化模块_第1张图片

是这个样子的,很明显它确实是有8个空间,这也就完美解决了概念上为什么这个寄存器是只能字节寻址的。

8个空间就像是一个标签,每一个空间都代表一个状态。比如两个GATE代表这两个定时器的门,如果打开了门,说明这两个定时器由外部线路控制,如果关着的,就是内部TR0和TR1控制。

C/T是计时功能和计数功能的区别

M1\M0就是方式选择。

 

可视化就能说明这一切,原来单片机里面的各种十六进制并不是全是地址,还有真的赋值的。

 

那么接着来看SCON

这个寄存器,在单片机原理里面就是一个比较重要的寄存器,他控制着串口的控制方式。

先可视化他的空间:

单片机基础原理2-----初始化模块_第2张图片

是这个样子的,也是8个口,但是东西比较多。其中D7\D6这两个空间是用来选择方式的,D5是用来控制多机通讯的(目前并没有弄明白)

然后REN和TB8这些东西也没完全弄明白。

由此可见,如果要做单片机,光写程序的初始化就得至少对这些寄存器有较为深入的了解。路漫漫啊,有空再继续更新。

你可能感兴趣的:(单片机基础原理2-----初始化模块)