查看: 418|回复: 0

stc8

[复制链接]

2

主题

11

帖子

35

积分

注册会员

Rank: 2

积分
35
发表于 2021-7-14 14:18:04 | 显示全部楼层 |阅读模式
在大学的时候,曾经听说过单片机,能够用来控制几乎任何设备,一度非常想学习。而今天,天问51成了我的第一块单片机。 拿到它是,我是迷茫的,不知道该从哪里下手,不知道里面的线路,不知道芯片的作用,甚至不知道工作原理。

1.要想了解一个事物,就要从了解结构和工作原理开始
        老师演示了第一个demon,用一段小程序控制led灯的亮灭。
        从这里开始,单片机的被一步一步的解构,就如同网络的协议,黑箱被一层一层剥开。
        led既然能够亮起,那么必然有电流驱动它,而通过原理图,我们发现,它和一个名叫p4-1的引脚相连,而p4-1是什么呢,是stc8芯片p4端口的一号引脚。
        欸,发现了什么?类比,一下,如果是一排的led灯呢,如果是点阵灯呢,如果是液晶屏幕呢,原理上都可以通过引脚的高低电平控制。同时,这个引脚是直接和芯片相连,也就是说,从处理到输出,都由芯片完成,也就是说,芯片就是整个单片机的核心,这与我先前对计算机的理解有所不同。
        然而芯片不可能自己运行,那么就需要有一个控制手段,告诉芯片你该干什么。我,们采用的是c语言。老师说,c语言可以直接读写内存,因此,介于汇编语言与高级语言之间,用来控制单片机非常合适。
        程序导入单片机之前,有一个编译的过程,也就是说,单片机不能直接执行c的源文件,也肯定没有c的编译器。编译是将高级语言转化为机器语言,而真正打入单片机的是bin文件。考虑到单片机的rom并不大,难以承载操作系统,也就是我们也只能通过机器语言直接控制单片机了,这再次改变了我对计算机的认知。
2.细节决定应用的成败
        知道了芯片控制引脚之后,我们在图形化的编程界面,我们会发现,我们的p4-1引脚属于gpio口,有四种模式。(gpio口,是一种端口的类型,其他的类型还有pwm口。所谓io就是in和out,输入和输出。现在我就明白了学python时的io编程是个什么了。)
分别是 [双向io][推挽输出][高阻输入][开漏输出]。双向io高灌电流、低拉电流,推挽强上拉电流,高阻可以理解为悬空(具体等以后再研究,因为暂时用不上),开漏可以吸收大电流,但输出需要上拉电阻,具体什么用我也不知道。。。
        关于引脚的状态,有寄存器(芯片的寄存器,不是rom)决定,芯片通过读取寄存器对应区域的数据,来决定给引脚什么状态。因此,我们就需要通过一定的程序来改变寄存器里的数据,从而达到改变引脚状态的目的。
        关于存储地址的写法(16进制),比如0x8f,其中0x代表16进制,8f表示这个字节的值。关于16进制的运算就不多赘述。为了方便,我们通常用某个标识符来表示寄存器里,控制引脚状态的寄存器地址。对于p4端口,p4(标识符)一个字节的8个位,分别代表它的8个引脚的状态;而这个端口的模式又由 p4m1(地址标识符)p4m2(地址标识符) 决定。
        同样的,如果我们需要使用某个端口(或者引脚),只需要阅读编程手册,找到决定它状态的寄存器地址,找到相关的用法(比如 x值 对应 x状态),就能使用这个引脚了。


3.感想:到目前为止,单片机的基本使用模式已经算是学会了。总结一下,就是:程序控制寄存器,寄存器控制端口和引脚,引脚去控制外接的设备。
4.然而:到目前为止,芯片的构造,对我来说还是一个黑箱,输出以前的结构也是位置的。既然未知,那么用着就不顺心,永远也不会知道那一天bug会来临。因此,芯片结构的初涉和端口、引脚的连接,还得往下深入学习。
399AB61539FF5D9A1A1FD4256BD24A04.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-3-28 20:23 , Processed in 0.348778 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表