单片机硬件结构1

版权声明:所有内容仅供大家学习与复习使用,请勿用于任何商业用途;维特根斯坦曾说过,凡可说的,皆无意义。凡有意义的,皆不得不以荒唐的语言传递其意义。我十分赞同。 https://blog.csdn.net/qq_40828914/article/details/88651229

AT89S52:

存储器结构,常见特殊功能寄存器基本功能,复位电路与时钟电路设计,单片机最小系统。

全双工异步串口:

双工:两个单片机的串口,一个输出连到另一个串口的输入,同样,另一个串口的输出练到我的输入。它辆可以同时进行串行通信。

不能同时,半双工。

只能往一个方向进行串口通信,单工。

异步:收发双方没有同步的时钟。靠各自的时钟尽量频率接近,从而实现串行口的发送和接收。

看门狗:

当系统的软件跑飞或者死循环,能够发出复位信号,让单片机复位,从零地址开始执行程序,使程序回到正轨,避免跑飞期间,系统失控

软件运行陷入死循环,一般由于pc指针(程序指针)受到干扰,指针指向的内容改变,取得程序就不一定是正常程序的指令。

提高系统抗干扰能力

扫描二维码关注公众号,回复: 5787867 查看本文章

中断系统:

中断源:能够提出中断申请的那些事件,两个外中断,两个定时器中断。串口接收发送共用一个中断。

中断向量:申请中断的时候,要跳到一个中断服务程序,中断向量就是中断服务程序的入口。

能够对flash内写的程序进行加密

89c51和89s51

s51可以在线编程,现场调试与修改更加方便。最大区别。89c51不再生产。通过keil,得到hex文件,通过微机的并口和串口,有一个下载线,然后就能够把hex文件写道flash里面。这样省去了编程器仿真器。

数据指针,访问外部ram数据存储器的地址指针。方便访问片外ram

proteus里面没有89s51,但是从功能仿真来说,89c51和89s51没什么区别。所以,在proteus里面不影响89c51代替89s51。

cpu能对各种功能部件控制 采用 特殊功能寄存器。8051单片机控制各功能部件,各功能部件通过几个总线连接。传统的微机结构。

特殊功能寄存器,实际上就是片内的各个功能部件的状态寄存器和控制寄存器。映射在片内ram区80H-FFH内

cpu具有位处理功能,能对某一位进行处理,控制中经常对位变量进行处理。

数据存储器:访问片外和片内的同一地址的ram用不同的指令,52,256b

程序存储器:片内89s52有8k

89s52可以由89c52代替

89s51引脚功能

多用40引脚双列直插。

理解透引脚画电路板。

1.电源引脚:2个

右上角电源,左下角地。

2.时钟引脚:2个

片内有振荡器电路,外部要外接一个晶振俩电容。

如果不想用内部振荡器,直接使用外部时钟,18脚悬空,19脚外界时钟振荡器信号。

3.控制引脚4个

1.rst

高电平复位,高电平大于两个机器周期。正常时候这个脚ttl低电平小于0.5v

看门狗有对单片机复位的功能,它实际上是个计数器。正常运行程序时,编写的程序都有一个把看门狗清零的功能,没等溢出,就清零了,但是程序跑飞或死循环,由于它正常计数,没有程序对它清零,他就溢出了,他和复位脚相连。溢出的话,就会输出长达96个时钟震荡周期的高电平。

2.EA非/Vpp

片内有4kflash,这个引脚决定你是否访问片内的flash。

4kflash:0000h-0fffh

ea接高电平或者去掉:

pc值<offfh,单片机读取片内4kflash程序。

pc>0fffh,读取片外。(此时先把片内的4k用完了,然后最多再用片外60k)

ea非=0(接地)的话,只访问片外的程序存储器。

proteus时钟电路复位电路可以不画,但是实际电路需要画。

vpp:用编程器的话,接编程电压。

3.ALE

p0口先发低8位地址,在外部要用锁存器将其锁住,这个地址锁存控制信号是ale提供。锁到地址锁存器里。

ALE端一直有时钟信号输出,频率是晶振频率的六分之一。

如果访问片外ram,那么ALE时钟信号就不是系统时钟的六分频,因为每当访问片外ram,89s51要丢失一个ale脉冲。

如果需要,可以将auxr的第0位置一,禁止ale信号输出。

第二功能,对片内flash编程的编程脉冲输入,在线写的时候,每写一个单元,要加入一个编程脉冲,这个编程脉冲加到这个引脚。

4.psen非:

片外程序存储器的读选通信号,只读不写

4.并行io口引脚(4*8,4个口,每个口有八位)

1.p0口

漏极开路,有一个高阻态,用作数据总线,有时单片机需要和数据总线隔离,由于他有三态,他就可以不误读一些数据。双向io口。

不用系统总线,也可以用作通用io口。通用io口,要加上拉电阻。这时候,他是个准双向口,没有高阻态。数字量的输入输出,不需要高阻态。可以驱动8个低功耗ttl负载

2.p1口

负载能力:4个ls型ttl负载

p1口到p3口都是准双向口(8位),内部集成了上拉电阻。

p1.5/mosi,p1.6/miso,p1.7/sck

实际上是个spi口,对片内的flash,编程校验。这是89s51不是89c51

3.p2口

负载能力:4个ls型ttl负载

外扩存储器及io口,p2口输出高8位地址。

p2口可作为通用io使用.

4.p3口

通用io口

第二功能:

芯片引脚数目受限。

5.为什么p0口要有高阻态?

因为p0口做总线使用时候,与cpu相连,不需要和外部的挂在数据总线上的器件进行交换的时候,他应该被隔离,不然随便就被读进去了。

6.p1到p3做通用io输入,要先向端口寄存器写个1,这样就被设置为输入状态。

熟记40引脚每个功能,硬件电路设计十分重要。

单片机的cpu

51单片机是8位机和1位机的有效结合,1位机在控制方面有用。

1.运算器:

单片机是做控制目的。一般不进行大量的数字运算。

算术逻辑单元:算术逻辑运算

累加器

程序状态字寄存器psw(编程主要是对这些特殊功能寄存器操作)

特殊功能寄存器区:80h-ffh

psw字节地址:D0h

2.控制器:

pc指针:(寄存器)

用户不能直接用指令访问

89s52,pc位数为16位,可对64kb(2e16)的程序存储器寻址。

因此片外最多扩64k的程序存储器。(ea接地的话)

单片机存储器结构

1.程序存储器空间

程序装在程序存储器里。

2.数据存储器空间

可外扩64k,片内还有128个单元。

那64k前128单元和片内的128单元地址一样,但不会发生数据冲突。

因为访问内部ram和外部ram使用不同的指令。

3.特殊功能寄存器。(sfr)

必须了解那里面各个位的功能

4.位地址空间

可以用位操作指令对某一位置一求补清零。常用于控制场合

程序存储空间:

1.访问片内存储器 还是片外存储器:

ea

2.中断服务程序入口

两个中断入口间隔仅有8个单元,常理来说,中断源申请中断的时候,pc指针跳向中断入口,然后执行里面的服务程序,但是,中断服务程序用八个单元往往不够,所以一般在中断入口里面放一个跳转指令。

这五个入口是单片机设定的,只能存跳转指令或者中断服务程序

数据存储器空间

1.片内ram:

128个单元,字节地址位00h-7fh

特殊功能寄存器

1.堆栈指针:

压入数据,指针先增一,然后放入数据。弹出数据,数据先弹出,指针再减一。

猜你喜欢

转载自blog.csdn.net/qq_40828914/article/details/88651229