自以为稍微明白单片机以后,一编程就发现一个大问题,哪些乱七八糟的变量被赋值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就是方式选择。
可视化就能说明这一切,原来单片机里面的各种十六进制并不是全是地址&#