51单片机自学笔记(基础部分)
51单片机复习笔记经典1

《单片机原理与应用》复习提纲第一章第二章MCS-51系列单片机的硬件结构1. MCS-51单片机的总体结构MCS-51单片机的内部结构•8位的CPU;•128个字节的片内RAM;•4K字节的片内ROM程序存储器(8031无)•外部的RAM和ROM的寻址范围为64K•21个字节的专用寄存器•4个8位并行I/O口•1个全双工的串行口•2个16位的定时器/计数器•5个中断源、2个中断优先级MCS-51单片机的总线结构微处理器又称为CPU,是单片机内部的核心部件,它决定了单片机的重要功能特性。
它由运算器和控制器两大部分组成。
对CPU的使用就是对CPU中的寄存器的使用。
•累加器ACC•寄存器B•程序状态字PSW•布尔处理器C•程序计数器PC,16位•数据指针寄存器DPTR,16位DPTR寄存器中存放外部数据存储器地址•堆栈指针SP•2.程序存储器程序存储器通常存放程序指令、常数及表格等,系统在运行过程中不能修改其中的数据。
.程序的几个特殊地址:•复位0000H,PC复位指向该地址•外部中断0 0003H•定时器/计数器0溢出000BH•外部中断1 0013H•定时器/计数器1溢出001BH•串行口中断0023H3.数据存储器•数据存储器则存放缓冲数据,系统在运行过程中可修改其中的数据。
•包括:•1)编址与访问•2)片内数据存储器•3)特殊功能寄存器块片内128字节数据存储器要求熟悉4个工作寄存器区的使用方法RS0,RS1。
如:RS1,RS0=10 , R1的直接地址为11H。
00H~1FH :32个字节,内部RAM的寄存器区共有32个单元,分为4组,每组8单元。
•20H~2FH:16个字节,128位寻址区,128位寻址区的字节地址范围是20H~2FH。
•30H~7FH:通用寄存器区或数据缓冲区,堆栈区。
••堆栈:•使用片内RAM、初始化时SP=07H•51系列单片机的堆栈是向上生长的•一般程序中堆栈的开始:•MOV SP,#60H4.单片机的复位电路高电平复位,一般高电平保持2个机器周期以上有效复位5.时序•(1)振荡周期•(2)状态周期•(3)机器周期•(4)指令周期•外部晶振的2分频是MCS-51单片机的内部时钟周期,6个时钟周期构成了单片机的1个机器周期。
51单片机基础入门

单片机基础一、 单片机基础知识1.1 51系列单片机简介:51系列单片机是单片机领域中的一类,也是影响最为深远,使用最为广泛的单片机系列。
51单片机是指Intel的MCS‐51系列及和其具有兼容内核的单片机。
51系列单片机最早由Intel公司发展起来,随后将51内核授权给其他各个厂商。
因此,现在MCS‐51兼容的单片机种类繁多,如:Atmel公司的AT889C系列、AT89S系列、Silicon Laboratories的C8051F 系列以及STC的单片机等。
这些系列的单片机都有着十分接近的指令系统和硬件结构,在开发起来很方便移植。
1.2 STC系列单片机:STC89C51RC系列单片机是STC推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统的8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择,HD版本和90C版本内部集成MAX810专用复位电路。
特征:1) 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可任意选择,指令代码完全兼容传统80512)工作电压:5.5V ‐ 3.3V (5V单片机) / 3.8V ‐ 2.0V (3V单片机)3) 工作频率范围:0~40MHz,相当于普通8051的 0~80MHz,实际工作频率可达48MHz.4)用户应用程序空间:4K / 8K / 13K / 16K / 32K / 64K字节5)片上集成1280字节或512字节RAM6)通用I/O口(35/39个),复位后为:P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O 口);P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7)ISP(在系统可编程)/ IAP(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(RxD/P3.0, TxD/P3.1)直接下载用户程序,数秒即可完成一片8)有EEPROM功能9)看门狗10)内部集成MAX810专用复位电路(HD版本和90C版本才有),外部晶体20M以下时,可省外部复位电路。
51单片机初学知识点总结

51单片机初学知识点总结1. 什么是51单片机:51单片机是指Intel公司生产的8位单片机芯片系列。
51单片机由中央处理器单元(CPU)、随机存储器(RAM)、只读存储器(ROM)、输入输出端口以及中断系统等组成。
2. 51单片机的发展历史:51单片机最早在1980年由Intel公司发布,之后逐渐发展壮大。
目前,市面上有很多公司都生产和销售51单片机。
3. 51单片机的架构:51单片机采用Harvard结构,即程序存储器与数据存储器分开。
程序存储器分为片内存储器和片外存储器,数据存储器包括RAM和特殊功能寄存器。
4. 51单片机的寄存器:51单片机有一组特殊功能寄存器,用于存储和控制各种系统状态。
这些寄存器可以分为SFR(Special Function Register)和控制寄存器两种类型。
5.51单片机的引脚和IO口:51单片机有40个引脚,其中一些引脚是I/O(输入/输出)口。
这些I/O口可以配置为输入或输出,并可以被程序控制。
6.51单片机的时钟系统:51单片机需要一个时钟源来提供时钟信号。
时钟源可以是外部晶体振荡器或者片内RC振荡器。
7.51单片机的存储器:51单片机具有不同类型的存储器,包括内存区域、堆栈区域和特殊功能寄存器。
内存区域包括RAM和ROM,堆栈区域用于保存中断处理和函数调用的返回地址。
8.51单片机的指令集:51单片机具有丰富的指令集,可以执行各种操作,例如算术运算、逻辑运算、位操作和跳转等。
9.51单片机的中断系统:51单片机具有中断系统,可以响应外部中断和定时器中断。
中断可以打断当前执行的程序,并转移到中断处理函数。
10.51单片机的编程和调试:51单片机的编程可以使用汇编语言或高级语言(如C语言)进行。
调试可以使用模拟器或者仿真器进行。
11.51单片机的应用领域:51单片机广泛应用于各种控制系统和嵌入式系统,例如家用电器控制、电动工具、汽车电子等。
12.51单片机的扩展接口:51单片机可以与其他外设连接,例如LCD显示屏、键盘、温度传感器等。
51单片机学习笔记

单片机C51学习笔记一, C51内存结构深度剖析二, reg51.头文件剖析三,浅淡变量类型及其作用域四, C51常用头文件五,浅谈中断六, C51编译器的限制七,小淡C51指针八,预处理命令一,C51内存结构深度剖析在编写应用程序时,定义一个变量,一个数组,或是说一个固定表格,到底存储在什么地方;当定义变量大小超过MCU的内存范围时怎么办;如何控制变量定义不超过存储范围;以及如何定义变量才能使得变量访问速度最快,写出的程序运行效率最高。
以下将一一解答。
1 六类关键字(六类存储类型)data idata xdata pdata code bdatacode:code memory (程序存储器也即只读存储器)用来保存常量或是程序。
code memory 采用16位地址线编码,可以是在片内,或是片外,大小被限制在64KB作用:定义常量,如八段数码表或是编程使用的常,在定义时加上code 或明确指明定义的常量保存到code memory(只读)使用方法:char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};此关键字的使用方法等同于constdata data memory (数据存储区)只能用于声明变量,不能用来声明函数,该区域位于片内,采用8位地址线编码,具有最快的存储速度,但是数量被限制在128byte或更少。
使用方法:unsigned char data fast_variable=0;idata idata memory(数据存储区)只能用于声明变量,不能用来声明函数. 该区域位于片内,采用8位地址线编码,内存大小被限制在256byte或更少。
该区域的低地址区与data memory地址一致;高地址区域是52系列在51系列基础上扩展的并与特殊功能寄存器具有相同地址编码的区域。
即:data memory是idata memory的一个子集。
51基础 笔记

Keil –C51基础应用1、十六进制数与ASCII码的转换凡是大于等于10的十六进制数加37H,凡是小于10的十六进制数加30H便可得到相应的ASCII码。
具体程序如下:#include<reg52.h>#define unchar unsigned charunchar slz_asc(unchar shuru);void main(){P1=slz_asc(0x30);通过P1口输出转换结果while(1){}}unchar slz_asc(unchar shuru)转换子函数{if(shuru<10)shuru=shuru+0x30;shuru=shuru+0x07;return (shuru);}2、二进制数与BCD码的转换将二进制数除以100得到百位的BCD码,余数除以10得到十位BCD码,再得余数为个位BCD码。
具体程序如下:#include<reg52.h>#define unchar unsigned charunchar shu_chu[3]; 转换结果存储数组void main()转换主函数{unchar shuru,i,j,k,p;shuru=0x10;i=shuru/100;j=shuru%100/10;k=shuru%100%10;shu_chu[p++]=i;shu_chu[p++]=j;shu_chu[p++]=k;while(1){}}3、BCD码与ASCII码的转换一位BCD码加30H即为ASCII码,将ASCII码减去30H如果结果为0~9时则为所求的ASCII码,结果<0或>=10则结果单元送0FFH。
具体程序如下:#include<reg52.h>#define unchar unsigned charunchar BCDzhuanASCII(unchar shuru);unchar ASCIIzhuanBCD(unchar shuru1);void main(){P1=BCDzhuanASCII(0x019);通过P1口输出BCD码19转换成ASCII码的结果P2=ASCIIzhuanBCD(0x033);通过P2口输出ASCII码33H转换成BCD码的输出结果while(1){}}unchar ASCIIzhuanBCD(unchar shuru1) ASCII码转换成BCD码的子函数{char zhong;zhong=shuru1-0x30;if(zhong>10)return 0xff;if(zhong<0){zhong=zhong+0x29;shuru1=zhong&0xf0;shuru1>>=4;zhong=zhong&0x0f;zhong=shuru1*10+zhong;return(zhong);}return(zhong);}unchar BCDzhuanASCII(unchar shuru) BCD码转换成ASCII码的子函数{unchar zhong;zhong=shuru&0xf0;zhong>>=4;shuru=shuru&0x0f;shuru=zhong*10+shuru;if(shuru<10)shuru=shuru+0x30;shuru=shuru+0x07;return(shuru);}4、二进制与雷格码的转换若二进制数为b n-1b n-2...b 1b 0,其对应的格雷码为g n-1g n-2...g 2g 1,则有g n-1=b n-1g i=b i+1xor b i若格雷码为g n-1g n-2...g 2g 1, ,其对应的二进制数为b n-1b n-2...b 1b 0,则有b n-1=g n-1 b i= b i+1 xor g i具体程序如下:#include<reg52.h>#define unchar unsigned charunchar Er_zhuan_gelei(unchar shuru);unchar Gelei_zhuan_er(unchar shuru);void main(){unchar a,b;a=Er_zhuan_gelei(0xf1); a中是二进制转格雷码的转换结果b=Gelei_zhuan_er(a);b中是格雷码转二进制的转换结果P1=b;结果通过P1口输出while(1);}unchar Er_zhuan_gelei(unchar shuru)二进制转格雷码的子函数{unchar zhong;zhong=shuru>>1;zhong=(zhong|shuru)&~(zhong&shuru);return(zhong);}unchar Gelei_zhuan_er(unchar shuru)格雷码转二进制的子函数{unchar zhongjian,i,zhong,chu,cong,kong=0x01;zhong=shuru&0x80;chu=shuru&0x80;cong=chu;for(i=0;i<8;i++){zhongjian=cong>>1;zhongjian=zhongjian^shuru;cong=zhongjian&kong<<7-i;zhong=zhong|cong;}return(zhong);}五、中断设置与应用MCS-51 单片机提供了5个中断源它们在程序存储器中各有固定的中断入口地址,并由此进入中断服务程序,5个中断源的符号、中断向量入口地址、中断触发条件如下。
51单片机入门零基础1.4 C51基础知识介绍

1.4 C51基础知识介绍1.4.1 C51中的基本数据类型首先知道什么是常量和变量,例如A=1、B=D、C=A+B,A的值固定是1所以是常量,B的值随D的变化而变化所以是变量,同样道理C也是变量。
接下来C51有哪些数据类型,见表0-1。
表0-1 C51中常用的数据类型数据类型关键字所占位表示范围无符号字符型unsigned char80~255有符号字符型Char8-128~127无符号整型unsigned int160~65535有符号整型Int16-32768~32767无符号长整型unsigned long320~2^32-1有符号长整型Long32-2^31~2^31单精度实型Float323.4e-38~3.4e38双精度实型Double641.7e-308~1.7e308位类型Bit10~1数据类型前面没有unsigned的认为是signed型。
关于占位的解释:编程的时候无论采用什么进制在单片机中都以二进制方式存在,二进制只有0和1,这两个数每一个所占的空间就是一位(b),位也是单片机存储器中最小的单位。
比位大的是单位字节(B),一个字节等于8位(即1B=8b)。
为方便理解,数据类型所占位如图0-1所示。
图0-1 数据类型所占位其中float和double型是用来表示浮点数的,即带有小数点的数,通常float 能提供7位有效数字,double能提供15~16位有效数字,但是这个精度还和编译器有关,并不是所有编译器都遵守这个原则。
当把一个double型赋给float型的时候,系统会截取相应的有效位。
例如float a;a=1.2345678,那么a=1.234567,但改成double则能全部显示出来。
1.4.2 C51中的运算符C51算数运算符如表0-2所示。
表0-2 算数运算符算数运算符含义+加法-减法*乘法/除以++自加--自减%求余运算C51逻辑运算符如表0-3所示。
表0-3 逻辑运算符逻辑运算符含义>大于>=大于等于<小于<=小于等于==测试相等!=测试不等&&与||或!非C51位运算符如表0-4所示。
单片机学习笔记

MC51单片机学习笔记一准备知识:1.内部结构:4K Rom 程序存储器(硬件)128节Ram随机存储器(软件)8位cpu,4个8位并口,1个全双串行口,2个16位定时器/计数器;寻址范围64k 布尔处理器CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。
最高振荡频率取决于单片机型号及性能。
2.分类:arm(快)凌阳(处理声音较好)3.型号说明:STC (公司名) 89(系列)C(CMOS;CAD:自带AD转换;S:串行下载无需专门的编程器;lv:工作电压为3v)51(1*4=4K) RC 40(晶振最高频率)C(商业级:温度0--85,I工业级温度-40--125)----PDIP (双列直插式)0721(07年第21周).........4.电平:TTL:高:+5v--低0v;RS232:计算机串口:+12v--低-12v,故计算机和单片机通信需要电平转换芯片5.二进制与十六进制之间的转换:每4位转变一次6.二进制转换逻辑符号:&与,//或,---非,异或7. P3第二功能各引脚功能定义:P3.0:RXD串行口输入P3.1:TXD串行口输出P3.2:INT0外部中断0输入P3.3:INT1外部中断1输入P3.4:T0定时器0外部输入P3.5:T1定时器1外部输入P3.6:WR外部写控制(计数)P3.7:RD外部读控制RST :复位管脚,高电平有效,时间大于两个机器周期VPD:备用电源注:机器周期和指令周期(1)振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,TX实验板上为11.0592MHZ。
单片机C51基础知识的汇总

单片机C51基础知识汇总目录1、标识符2、数据类型3、变量4、常量5、二进制、八进制、十进制、十六进制6、运算符7、语句8、注释9、if语句10、switch--case语句11、for循环12、while循环13、do—while循环14、循环控制15、一维数组16、二维数组17、字符数组与字符串数组18、函数19、函数重入与递归20、预处理21、宏22、条件编译指令23、指针(*)24、结构(struct)25、联合(union)26、枚举(enum)主要内容1 .标识符标识符就是编程时使用的表示某个事情名称的符号,如函数名、变量名、引脚名、特殊功能寄存器名等。
标识符有系统标识符和用户自定义标识符之分。
标识符的命名规则:(1) 标识符第一个字符必须是字母或下划线。
(2) 标识符只能由字母、数字和下划线三类字符组成。
(3) 标识符是区分大小写的。
如A 和a 是两个不同的标识符。
(4) 标识符有效长度不超过32 个字符。
(5) 标识符不能是C51 的关键字。
2 .数据类型char有符号字符型,一字节,值域-128~127。
int 有符号整型,两字节,值域-32768~32767。
long有符号长整型,四字节,值域-2147483648~2147483647 unsigned char无符号字符型,一字节,值域0~255unsigned int无符号整型,两字节,值域0~65535unsigned long无符号长整型,四字节,值域0~4294967295float浮点型(都是有符号的),四字节,±1.175494E-38~±3.402823E+38bit位变量,一个二进制位,值域0~1。
sbit51 单片机特殊功能寄存器位,值域0~1。
Sfr 51 单片机特殊功能寄存器,值域0~255。
sfr1651 单片机特殊功能寄存器,如DPTR,值域0~65535。
bit,sbit,sfr,sfr16不是标准C 的内容,是51 单片机及C51 编译器特有的,不能用指针对它们进行操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、51单片机的硬件结构1. 硬件结构框图说明:○1微处理器(CPU):51单片机含一个8位CPU,与通用的CPU功能基本相同,含运算器和控制器,不仅可以字节处理,还可以位处理。
例如:未处理、查表、状态检测、中断处理等。
○2数据存储器(RAM):51为128B,52为256B;片外最大可扩展到64K。
○3程序存储器(ROM/EPROM):8031没有,8051有4K的ROM,8751有4K的EPROM;片外可扩展至64K。
○4中断系统:5个中断源,2级优先权。
○5定时器/计数器:2个16位定时/计数器,四种工作方式。
○6串行口:1个全双工串行口,四种工作方式。
可进行串口通信,扩展并行I/O口,多机通信等。
○7P1、P2、P3、P0口:四个8位并行I/O口。
○8特殊功能寄存器(SFR):共21个,对片内部件进行管理、控制、监视;实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
2. 引脚排列(1)电源及时钟引脚○1电源引脚:Vcc(40脚)解5V电源、Vss(20脚)接地。
○2时钟引脚:两个始终引脚XTAL1、XTAL2外接晶振,或接晶体与片内反相放大器构成振荡器。
XTAL1(19脚):内部反相放大器的输入端。
若接晶振则应接地;XTAL2(18脚):内部反相放大器的输出端。
若采用外部时钟振荡器,该引脚接收时钟振荡信号。
(2)控制引脚○1RST/Vpd(9脚):复位信号输入,高电平有效。
单片机运行时,此脚持续2个机器周期(24个时钟振荡周期)的高电平,就可复位。
平时应为0.5V低电平;Vpd为第二功能,备用电源输入端。
○2:ALE为地址锁存允许,正常工作时,ALE不断输出正脉冲信号。
当访问外部存储器时,ALE输出信号的负跳变沿用作低8位地址的锁存信号;PROG’为编程脉冲输入端。
○3PSEN’(Program Strobe Enable,29脚):程序存储器允许输出控制端。
低电平是外部程序存储器选通。
○4EA’/Vpp(Enable Address/Voltage Pulse of Programing,31脚):EA’为内外程序存储器选择控制端。
当为高电平时,访问内部程序存储器,超出0FFFH时,自动跳变为低电平访问外部程序存储器;当保持为低电平时,只访问外部程序存储器。
Vpp为第二功能,用于施加较高编程电压。
(2)I/O口引脚○1P0口:8位双向三态I/O口;地址总线低8位及数据总线分时复用。
○2P1口:8位准口双向I/O;可驱动4个TTL负载。
○3P2口:8位准口双向I/O;与地址总线高8位复用。
○4P3口:8位准口双向I/O;双功能复用口。
○5注意:除P0口外,其他三组I/O口内部均有固定上拉电阻,只有P0口有“悬空”状态。
3.微处理器(1) 运算器○1算术逻辑运算单元ALU:可对8位变量进行“与”“或”“异或”运算、循环、求补和清零等基本操作;还可进行加减乘除运算;还有一般微计算机ALU不具备的位操作。
○2累加器A:是一个8位累加器,在CPU中使用最频繁,或叫Acc。
其作用为:是ALU单元的输入之一,因而是数据处理源之一;也是ALU运算结果的存放单元。
○3寄存器B:为执行乘法和除法而设置的。
乘法时,输入为A、B,结果放在BA寄存器对中,B 中放高8位,A中放低8位。
除法时,A为被除数,B为除数,商存在A中,余数存在B中。
不执行乘除法时,可作为普通寄存器使用。
○4程序状态字寄存器PSW:Cy(PSW.7):进位标志,可有软、硬件置位或清零Ac(PSW.6):辅助进位标志,硬件F0(PSW.5):标志位,用户使用,可用软件置1或清0RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制为1和0;用来选择4组工作寄存器去中的哪一组为当前工作寄存器区;4组寄存器如下:OV(PSW.2):溢出标志位,有硬件置1或清0PSW.1位:保留位,未用P(PSW.0):奇偶标志位,表示累加器A中的‘1’的位数,P=1,A中“1”的位数为奇数P=0,A中“1”的个数为偶数在串口通信中用于奇偶校验。
(2) 控制器程序执行顺序:程序存储器中取指令——>指令寄存器——>指令译码器——>定时控制逻辑电路——>产生各种定时信号和控制信号——>各部件执行○1程序计数器PC(Program Counter):MCS-51单片机中PC为16位,决定的其直接寻址范围为2^16=65536=64k;其基本工作方式有以下几种:程序计数器自动加1。
执行有条件或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生改变。
在执行调用子程序指令或响应中断时,单片机自动完成如下操作:PC的现行值,即下一条将要执行的指令的地址,即断点值,自动送入堆栈;将子程序的入口地址或中断向量的地址送入PC,程序流向发生变化,执行子程序或中断子程序。
子程序或中断子程序执行完毕,遇到返回指令RET或RET1时,将栈顶的断点值弹回到PC中,程序的流程又返回到原来的地方,继续执行。
○2指令寄存器IR、指令译码器及控制逻辑电路:IR用来存放指令操作码的专用寄存器。
条件转移逻辑电路主要用来控制程序的分支转移。
2. 存储器的结构(1) 程序存储器(ROM):程序存储器的某些单元被固定用于中断源的终端服务程序的入口地址。
如下:MCS-51单片机复位后,程序存储器PC的内容为0000H,故系统必须从0000H单元开始取指令,执行程序。
程序存贮器中的0000H地址是系统程序的启动地址。
一般在该单元存放一条绝对他跳转指令,跳向用户设计的主程序的起始地址。
(2)内部数据存储器(RAM)00H~1FH的32个单元为4组通用工作寄存器区,每区含8个8位寄存器,编号为R7~R0.用户可以通过指令改变PSW中的RS1、RS0来切换当前的工作寄存器区。
20H~2FH的16个单元可进行共128位的位寻址,这些单元构成了1位处理机的存储空间。
也可进行字节寻址。
30H~7FH的单元为用户RAM区,只能进行字节寻址。
(3)特殊功能寄存器(SFR-Special Function Register)SFR实质上是一些具有特殊功能的片内RAM单元,字节地址为80H~FFH。
特殊功能寄存器的总数为21个,离散分布在该区域中,其中有些SFR还可以进行位寻址。
○1堆栈指针SP:堆栈是在片内RAM中开辟出来的一个区域,其主要是为子程序调用和中断操作而设立的。
其具体功能有两个:保护断点和保护现场,也可用于数据的临时存放。
堆栈指针SP 是一个8位的特殊功能寄存器,其内容指示出堆栈顶在内部RAM中的位置。
他可指向内部RAM00H~7FH的任何单元。
单片机复位后,SP中的内容为07H,即指向07H的RAM单元,使得堆栈事实上有08H单元开始,考虑到08H~1FH单元分别属于1~3组的工作寄存器区,若在程序设计中要用到这些区,则最好把SP值改为1FH或更大的值。
当一个字节数据压入堆栈,SP自动加1;当一个字节数据弹出堆栈后,SP自动减1。
.○2数据指针DPTR:是一个16位的SFR,其高位字节寄存器用DPH表示,低位字节寄存器用DPL 表示;DPTR即可作为一16位寄存器DPTR来用,也可以作为两个独立的8位寄存器DPH和DPL 来用。
○3端口P0~P3:每一个8位I/O口都为RAM的一个单元(8位)。
○4串行数据缓冲器SBUF:用于存放欲发送或已接收的数据,在SFR块中只有一个字节地址,但实际上是有两个独立的寄存器组成,一个发送缓冲器,一个接收缓冲器。
○5定时器/计数器:两个16位定时器/计数器T1和T0,它们各有两个8位寄存器组成,公子哥独立寄存器:TH1、TL1、TH0、TL0可字节寻址,不能当做16位寄存器寻址。
(4)位地址空间在RAM和SFR中共有211个寻址位的位地址,位地址范围在00H~FFH内,其中00H~7FH这128个位处于内部RAM字节地址20H~2FH单元中,如下图:其余83个可寻址位分布在SFR中,有11个可位寻址寄存器,共有位地址88个,其中5个未用,其余83个位的位地址分布于片内字节地址80H~FFH内,其最低的位地址等于其字节地址,并且其字节地址的末位都为0H或8H。
如下图:(5)外部数据寄存器:RAM扩展最大64K。
使用存储器应注意以下几点:○1地址的重叠性:内部与外部存储器地址会重叠,ROM和RAM回地址重叠,通过EA’来控制。
○2ROM和RAM在使用上严格区分,不同操作指令不得混用。
○3位地址空间共有两个区域,即片内RAM中的20H~2FH的128位,以及SFR中的位地址。
○4堆栈指针SP的内容可任设,复位时SP=07H。
○5片外数据存储器中,数据区与用户外部扩展的I/O口统一编址。
51单片机的存储器结构如下:3. 并行I/O端口(1) P0口字节地址为80H,位地址为80H~87H。
每位包含:○1一个数据输出锁存器;○2两个三态的数据输入缓冲器;○3一个多路转接开关MUX,一个输入来自锁存器,另一来自“地址/数据”。
输入转接有“控制”信号控制,传送系统的低8位地址和8位数据;○4数据输出的驱动和控制电路;○5多数情况下都是作为单片机系统的地址/数据线使用;注意:做输入口使用时,应区分读引脚和读端口(或叫做读锁存器)(2)P1口○1P1口只传数据,没有MUX;○2准双向I/O口,无三态;○3字节地址90H,位地址为90H~97H;(3)P2口○1字节地址为A0H,位地址为A0H~A7H;○2为系统提供高位地址,有MUX;○3准双向I/O口,无三态;(4)P2口○1字节地址为B0H,为地址为B0H~B7H;○2P3口无论是作为输入口使用还是第二功能信号的输入,输出电路中的锁存器输出和“第二功能输出信号”线都应保持高电平。
(5)P0~P3口电路小结○1P0~P3口都是并行I/O口,都可以作数据的输入和输出;○2P0口和P2口通常还用来构建系统的数据总线和地址总线,所以都有MUX;○3P0口可作为“地址/数据”复用线使用,需传送系统的低8位地址和8位数据,因此MUX的一个输入端为“地址/数据”信号。
而P2口仅作为高地址线使用,不涉及数据,所以MUX的一个输入信号为“地址”。
○44组口中,只有P0口是真正的双向口,其他三组都是准双向口,原因是他们的输出缓冲器不是三态的。
4.时钟电路与时序(1)时钟电路○1内部时钟方式:C1、C2的取值通常为30pF;晶振范围在1.2MHz~12MHz之间,晶振频率越高系统时钟频率越高,单片机运行速度越快。
晶振常选用6MHz或12MHz,高速单片机时钟频率可达40MHz。
○2外部时钟方式:用于多片单片机同步,要求高电平持续时间大于20μS,一般低于12MHz的方波;由于XTAL2的逻辑电平不是TTL的,故要接一个4.7K~10K的上拉电阻。