云计算百科
云计算领域专业知识百科平台

软件端(6)51单片机与寄存器思维学习

Xtal连晶振,驱动单片机用的

TTL一种设置规范

关于寄存器部分

 

2的多少次方,16位的二进制来表示一个数字,这个数的表示范围,有符号和无符号的区别

Int默认什么都不写就是有符号的int

定义了参数的延迟

延迟1ms,循环500次

If括号里的变量,非0即增

Unsigned char 后面那个标识符只能有字母是,数字,下划线组成,不能以数字开头

COM公共端

3641AS是共阴极,3641BS是共阳极

电路图中的COM是接地线,所以这里已经标注了是共阴极

阳码,阴码

使能电平有效的话,就可以工作,如果不有效的话,他就不能工作

 

DIR如果时高电平,就把左边数据输出到右边,如果是低电平,就把右边数据输出到左边

高电平驱动能力弱,所以低电平驱动能力强一些

缓冲器,增加驱动能力的

尖角号是在安装目录里寻找

双引号是在自己程序的目录寻找

编码转译,有些复制的注释可能是乱码

预编译那个名字一般可以随便写

有三个警告的同学,注意在ifndef和define后面要有空格

有错误的检查一下文件名有没有错…

ASCII报错的是你主函数函数名写错了

显示警告的应该是你的头文件声明,后面没有加空格

显示警告还有一个就是:和头文件相关联的主文件里面,缺石头文件

transistor transistor logic

RS232只能传输十几米

RS485可以传输1000米之上

控制总线、数据总线、地址总线

波特率=双方约定的传输速率,传送多少个数据帧

比特率=传送多少个数据位

9位后面跟着一个校验

二进制波特率和比特率数值相等

二进制的时候可以说一样,其他要按照公式计算,log2

奇偶校验,有几个1,两个1,偶数,第九个就是1,传送的数据有偶数个1,末位补1,否则补0

第9位是1 就对前面的数进行偶校验 第9位是0 就对前面的数进行奇校验

先发低位,后发高位

SBUF:serial buffer(串口缓存)

靠定时器来约定速率

 T1溢出率就是定时器T1溢出的频率

溢出率越高,波特率越高·

就是说这两个寄存器物理上是并联在一起的,但是数据的通过方向是相反的

 

STC所有中断都具备四个中断优先级

EA控制总中断

寄存器可以改变其中中断的优先级

外部中断INT0是选择低电平有效还是下降沿有效

 

 

 

GATE 门控位

C/T,定时模式设置为0,计数模式设置为1,方式1通常是定时计数器的工作,方式2主要是对串口通信波特率的一个生成

 T1定时器溢出时自动置1,TR1设置为1的时候,定时器开始工作,TR1设置为0的时候,定时器停止工作

 时钟,计数单元,中断

由外部引脚提供脉冲时,单片机的定时器就是计数器

给1计数器  给0定时器,就中间那个跟开关一样的东西

一个是外部定时器一个是内部定时器

那个同学说的直接赋值0x11的那个,你是默认已知定时器1的状态是0001,如果那个程序已经在跑了,你后面再设置这个程序时候,你并不知道前面那个程序的定时器状态是什么,老师这里设置的非常泛用

 

 

 

 

TR0控制是否计时(由我们写的程序控制,软件控制),TF0告诉你是否有中断信号进来,多看几遍就懂了

学过8086汇编表示毫无压力

也就是说寄存器是用来存取数据的,但是特殊功能寄存器在其中的某一位还带了附加功能,根据你给的数据判断该位是0还是1,来控制电路

 

Keil左下角第四个可以写模板

TCON 时一个特殊的寄存器, 其中TCON是 timer control 的缩写

51单片机中的定时器控制字中有两个控制位TR0、TR1,分别用于启动、停止定时器的计数,任何时刻,当TR0/TR1为1时,T0/T1定时器计数;

当TR0/TR1为0时,T0/T1定时器停止计数,置TR0/TR1为1的指令一般应该在初始化程序或主程序或其他程序中。

 三级管开关驱动电路

就截止和导通状态

就相当于在输入信号波上再叠加一个驱动电压,这样不仅输入信号不会变还增强了驱动能力

 达林顿管,增大驱动能力的

非门,输入1,输出0

高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样。

无源蜂鸣器不能一直通电

乐理先跳过了

十二均分律,可以省去很多代码存储空间,之后再写

指令周期:

        CPU取出 一条指令并 执行 这条指令,都要完成一系列的操作,这一系列操作所需要的时间通常叫做一指令周期换言之指令周期是取出一条指令并执行这条指令的时间。由于各条指令的操作功能不同,因此各种指令的指令周期是不尽相同的。例如一条加法指令的指令周期同一条乘法指令的指令周期是不相同的 。

机器周期:

        机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个时钟周期组成 。

时钟周期:

        时钟周期T又称为振荡周期,由单片机片内振荡电路OSC产生,常定义为时钟脉冲频率的倒数,是时序中最小的时间单位。例如,若某单片机时钟频率为1MHz,则它的时钟周期T应为1μs。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏,使计算机的每一步工作都统一到它的步调上来。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以它们需要的时钟周期频率范围也不一定相同

三者之间的关系:

        指令周期由若干个机器周期组成,而机器周期又包含若干个时钟周期,基本总线周期由4个时钟周期组成

11.0592晶振的机器周期的频率11.0592/12,这里没懂,前面弹幕不要搞错了,机械周期为12/11.05921机器周期=12/晶振,这里说的是一个机器周期的频率,也就是一机器周期的倒数,即为11.0592/12机器周期等于12个时钟周期,时钟周期是晶振频率的倒数

计时器初始值,满了溢出,用初始值重新赋值。就是用65536去减这个值,就是计时器所要计时的时间。差值才是计时时间。

这跟讲定时器的时候把初始值设为64535一个道理

这样应该重装载值到中断时间就是周期了

终于想明白为什么那个周期要除2了,因为在这500ms时间内,每半个周期蜂鸣器都要翻转一次,这个翻转由定时器每半个周期完成一次

 

random access memory 随机访问存储器,掉电丢失

只读存储器ROM,不丢失

Static SRAM,存储结构就是锁存器,JK触发器,D触发器

static random access memory 静态随机存储器 速度快,容量少,成本高; dynamic random access memory动态随机存储器,存储数据是用电容,集成度高,容值小,会漏电,要配一个扫描电路,每隔一段时间,读取这个数据,然后补电,相比SRAM,成本更低,容量更大,SRAM比DRAM更快一些,但整体上都比ROM快 ;read only memory 只读存储器

第一代的BIOS就是用MROM

PROM,只能写一次

EPROM,紫外线擦除

AB盘留给软盘的

横向的线可以把他称为地址总线

上面的二极管画反了,二极管是防止这些行串联

每次只选择一行如果不加二极管其它行也会被激活。导致信号被互相干扰。

就是说现在地址线和数据线需要连接的话不直接连而是加个二极管连,所以只能正向导通

没有数据的位置没有线连接,有数据的地方虽然有线连接但由于二级管的单向性所以都不能将高电平流入未被选中的行

蓝色的比较特殊,容易被击穿,只能击穿一次

地址有个特性,一次只能选中一行

注意这里的static很重要,一定要设置成全局变量!!

这里不清零相当于按键按下后一直处于按下状态,没有抬手,这回导致最后秒表慢一倍,别问我为什么知道,都是泪

八个0的原因是他建立了一个数组,有九位,但是没有复制,系统会默认为里面全是0,至于为什么是9个数,因为素组是从第0个开始,而我们的数码管定义的第一个是1,而且总共有八个数码管

静态变量,当程序多次执行他的定义语句时,只有第一次有效

这里第一位跳过是因为,老师的Loop函数是从数组的第二位,也就是[1]开始的,所以作为第一位的[0]被跳过,也正是因为跳过了第一位,所以数组的长度是8+1=9

而Nixie_Buf[]和NixieTable[]数组,是通过函数Nixie_Loop()函数中调用函数Nixie()来实现的

 

数码管 

 占用内存空间(RAM)的,而定义为code时是直接分配到程序空间中,编译后,编码占用的空间是程序存储空间(ROM),该变量是只读的,作为表格查询用的。

中断 

中断分为外部中断,定时器中断和串口中断

中断是一个随机的 

 

 

下降沿触发

打开中断标志位

总中断

 

 

不仅门控制位=1,INT1,TR1=1才能启动门控制位

 

TH0和TL0是我们的一个初值赋值

 

 

重要的寄存器 

 

 

 

 

赞(0)
未经允许不得转载:网硕互联帮助中心 » 软件端(6)51单片机与寄存器思维学习
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!