C/51单片机
1. 串口也可以有多根线的,但是各线之间没有协调同步发送,而是各自是独自发送的。并口是同步发送,同步一次8位同时成功同时失败,类比事务。
2. ASCII码的前32位是通讯预留的编码即使现在也用途广泛,但是在高级语言里,因为不直接和二进制打交道往往都是从新定义了一个新的通讯方式,而在单片机领域则是用ascii码方便大家通讯。
3. 单片机有很多的引脚,同样笔记本的主板也有很多的插槽,这点和笔记本的主板是相同的。
4. ===================51单片机部分=====================
5. P3还具有第二个功能,用于特殊信号输入输出和控制信号。所以那些键盘输入,红外线信号等的信息应该都是从P3口输入的。
6. P0是使用最广泛的外部接口可以接外部存储器和外部设备(外部电路)
7. P1端口是单片机中唯一仅有的单功能I/O端口,并且没有特定的专用功能,成为通用静态口。与之相对P3是有很多的专用功能,需要指定的寄存器去实现功能。
8. P2是动态地址端口,P1是静态地址端口。
9. 单片机上显示文字都是根据字模来的,同java中总是把内容事先存放在一个数组里,然后根据数组的下标去取值是一样的。
10. 操作系统本身就是一个管理软硬件的程序,因为操作系统是面向硬件的,所以操作系统最多的操作就是二进制,16进制特性的显示,所以在写操作系统和对单片机开发程序的时候都是一样的,都要考虑硬件的结构,硬件原始的信号状态,操作系统操作的状态仍然是二进制的标志数据。但是当面形软件的时候,这些二进制的方式又被包装成了一些新的数据结构,只为了让软件的开发更贴近问题模型而不是更贴近硬件的状态。电脑有操作系统,电脑的各个I/O和CPU在物理上都已经是联通的了,他们的起作用需要软件的支持,如果没有软件的支持就不能统一这些物理连接的线路让他们发挥功能。所以操作系统实现逻辑上的管理,所有的外部设备都是接入到CPU接入到单片机中的,只有接入到单片机中才能受编程逻辑的控制,才能实现通过程序管理所以的IO资源。我们学习单片机就是学习通过编程管理所有的资源,管理资源管理资源,自然存在谁来管理的问题,这个谁就是CPU就是可以在CPU里面放置的程序。高级程序只是突出强调资源直接的逻辑关系,并不关心逻辑的初始值具体是什么,但是程序模拟的时候却是必须关系的,所以操作系统的作用就是把这个具体的关系添加到逻辑关系中。如果说操作系统和单片机编程编写的内容包括逻辑和初始值,那么高级程序就是指关心逻辑了。这就是完成了抽象,不必关系硬件具体是高电平还是低电平了。这种方式使编程脱离了具体值的束缚,可以在空中飞了,但是最终还是要着陆的这就是需要操作系统来让飞机着地了。计算机的发展过程再次证明聪明的人有时候不只是他注意到什么,有时候还是他忽略了什么。
11. 最初的计算机为什么提供操作系统那,就是因为需要经常性的做相似的工作(面形应用了),我们从这些重复的工作中提炼出了接口,抽象出了新的东西,这就是操作系统。
12. 很有兴趣了解操作系统是怎么从硬件抽象的。
13. 多进程是操作系统的功能是软件实现的并不是硬件直接实现的,多进程是通过抢占时间片,阻塞没有抢占到时间片的程序来实现的。进程间通信,进程间的资源抢占的管理规则也是因为操作系统实现上述软件功能导致的,所以也是通过软件来管理和实现的也是操作系统的功能。
14. 内存管理是通过CPU寻址的,单片机的选址范围为【0x00-????】而操作系统也是如此寻址的,但是电脑的寻址设备很多,有高速缓存,外接设备。文件系统就是管理存储器上文件的内容的方式。
15. 单片机对内存的管理是通过电流实现的,为了减少电路的复杂程度,很多地方都是使用了复用技术,操作系统把这些复用技术用编程语言分别表示出来,由系统本身去管理负责的复用关系。开发者只需要根据需要发送命令就可以了不必关注复用的方式。
16. 多线程同步问题是链表结构造成的,多线程的同步也是链表结构造成的。
17. 系统中锁只有能锁住所有线程的锁才有意义,所以锁本身就是全局变量或者全局静态变量。变量要么属于单个实例,要么属于全部实例,而锁就是其中的一类。
18. 硬件可以获得由规律的信息,但是这个信息却不一定能被人类理解,为了根据需要把硬件的规律信息转换为人类可以理解的必须使用编程。人类的理解和硬件的规律是一样的,但是起点不同,所以看到的东西理解的不同。
19. 驱动程序是写给也是写给CPU看的,对于控制硬件而言计算机和单片机没有区别,都是输出的二进制控制位,单片机一般是接到命令后1s就能给硬件发送命令,但是计算机需要3s因为计算机的CPU需要做的事情更多,他需要判断更多的业务逻辑之后才能确定发给硬件的二进制控制位。无论是驱动程序还是struts他们都是用到了分发函数,而分发函数本质上就是switch-case-结构。驱动程序本身也是在写这个switch-case语句。只是switch-case是比较偏向底层,而分发函数更加面向对象面向模块。Windows开发中分发函数随处可见。
20. 单片机开发之所以程序会从main函数开始执行就是因为汇编语言告诉CPU的,同样的在windows的开发中,C语言已经告诉系统所有新开发的程序的入口函数是WinMain。
21. Windows里经常出现的注册就是在switch-case语句中add一个case情况,方便等下个命令到来时候,提供这个资源。Windows的窗口资源就是调用了界面显示驱动。
22.
C/51单片机的更多相关文章
- Windows 通用应用尝试开发 “51单片机汇编”总结
一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几 ...
- 51单片机中断interrupt……using……
51单片机中断细节的一些问题. interrupt0:外部中断0interrupt1:定时器中断0interrupt2:外部中断interrupt3:定时器中断1interrupt4:串口 using ...
- Windows 通用应用尝试开发 “51单片机汇编”第二次更新总结
一.前言 昨天更新了10天前上架到windows8.1平台和windowsphone平台的通用应用“51单片机汇编”,总要是添加了动态磁贴以及ListView的Groupstyle应用.下面主要主要复 ...
- [新概念51单片机C语言教程·郭天祥] 1、 基础知识必备
目录: 单片机的大致介绍 1-1.通俗定义 1-2.51系列产品 1-3.标号意思 1-4.引脚介绍 1-5.用C语言开 ...
- [51单片机] HC-SR04超声波测距仪 基础代码
>_<:超声波测距仪模块: >_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子: >_<:代码: /******************* ...
- 51单片机的堆栈指针(SP)
堆栈指针(SP,Stack Pointer),专门用于指出堆栈顶部数据的地址. 那么51单片机的堆栈在什么地方呢?由于单片机中存放数据的区域有限,我们不能够专门分配一块地方做堆栈,所以就在内存(RAM ...
- 关于51单片机P0口的结构及上拉问题
1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构.高电平时,V1打开,V2截止:低电平时,V1截止,V2打开.这种情况下不用外接上拉电阻.而且,当V1打开,V2截止,输出高电平的时候, ...
- 51单片机C语言学习笔记3: 存储器结构
MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器2.片外程序存储器3.片内数据存储器4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外统一编 ...
- 51单片机C语言学习笔记6:51单片机C语言头文件及其使用
很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...
- 51单片机 Keil C 延时程序的简单研究
应用单片机的时候,经常会遇到需要短时间延时的情况.需要的延时时间很短,一般都是几十到几百微妙(us).有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很 ...
随机推荐
- 质数,$\varphi$和$\mu$线性筛
typedef long long ll; bool check[N]; int mu[N],pri[N],tot; ll phi[N]; void init(int lim){ check[]=,p ...
- Eclipse 工作空间(Workspace)---Eclipse教程第07课
Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源: 项目 文件 文件夹 项目启动时一般可以设置工作空间,你可以将其设置为默认工作空间,下次启动后无需再配置: 工作空 ...
- Hadoop 原理总结
Hadoop 原理总结 一.Hadoop技术原理 Hdfs主要模块:NameNode.DataNode Yarn主要模块:ResourceManager.NodeManager 常用命令: 1)用 ...
- 《Cracking the Coding Interview》——第1章:数组和字符串——题目8
2014-03-18 02:12 题目:判断一个字符串是否由另一个字符串循环移位而成. 解法:首先长度必须相等.然后将第一个串连拼两次,判断第二个串是否在这个连接串中. 代码: // 1.8 Assu ...
- 《算法》C++代码 Dijkstra
单源最短路,复杂度是O(N²),堆优化的是O(NlogN).基本思想是贪心,每次都加入一个当前最近的点,可以证明每次当时最近的点就是当前最短的路径.因此,所有点都加入之后,起点到所有点的最短路径就都求 ...
- 《数据结构》C++代码 BFS与DFS
BFS,广度优先搜索,一层一层去遍历图,故称广度优先.实现方式:队列. DFS,深度优先搜索,撞墙才回头的遍历,称为深度优先.实现方式:递归(栈). 这两种遍历方式,是访问图的基本方式.如果拿树做对比 ...
- Python 3基础教程8--if else、if elif else
本文介绍if else语句,不多说,直接看例子. if elif else语句
- Java基础-7数组
一).什么是数组: 数组是一组具有相同类型和名称的变量集合,把一系列相同类型的数据保存在一起,这些变量称为数组的元素:每个元素都有一个编号,这个编号叫做下标,下标从 0 开始:元素的个数被称为数组的长 ...
- UIAutomator2、Appium、Robotium搭建环境与框架对比
UIAutomator2.Appium.Robotium搭建环境与框架对比 一.框架介绍 Appium 特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生 ...
- [转]unity之LOD
LOD技术有点类似于Mipmap技术,不同的是,LOD是对模型建立了一个模型金字塔,根据摄像机距离对象的远近,选择使用不同精度的模型. 它的好处是可以在适当的时候大量减少需要绘制的顶点数目. 它的缺点 ...