AT89S52:
存储器结构,常见特殊功能寄存器基本功能,复位电路与时钟电路设计,单片机最小系统。
全双工异步串口:
双工:两个单片机的串口,一个输出连到另一个串口的输入,同样,另一个串口的输出练到我的输入。它辆可以同时进行串行通信。
不能同时,半双工。
只能往一个方向进行串口通信,单工。
异步:收发双方没有同步的时钟。靠各自的时钟尽量频率接近,从而实现串行口的发送和接收。
看门狗:
当系统的软件跑飞或者死循环,能够发出复位信号,让单片机复位,从零地址开始执行程序,使程序回到正轨,避免跑飞期间,系统失控
软件运行陷入死循环,一般由于pc指针(程序指针)受到干扰,指针指向的内容改变,取得程序就不一定是正常程序的指令。
提高系统抗干扰能力
中断系统:
中断源:能够提出中断申请的那些事件,两个外中断,两个定时器中断。串口接收发送共用一个中断。
中断向量:申请中断的时候,要跳到一个中断服务程序,中断向量就是中断服务程序的入口。
能够对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.堆栈指针:
压入数据,指针先增一,然后放入数据。弹出数据,数据先弹出,指针再减一。