第七章 51单片机内部资源及编程
51单片机的内部资源

T1
RX TX
EX0 1 EA 1 IE0
ET0 1 TF0
EX1 1 IE1
ET1 1 TF1
RI TI ≥1
SCON
ES 1
IP
PX0 1 0
PT0 1 0
PX1 1 0
PT1 1 0
PS 1 0
硬件查询
自
高
然
级
1
优
先
级 中断入口
中断源
自
低
0
然
级
优
先
级 中断入口
中断源
三、中断请求源
51单片机的五个中断请求源 : (1)INT0—外部中断请求0,由引脚INT0 (P3.2)输入,中断
中断请求
执行主 程序
断点
继续执行 主程序
中断响应
执行 中断 处理 程序
中断返回
主程序:CPU正常情况下运行的程序称为主程序。
中断源:把向CPU提出中断申请的设备称为中断源。
中断请求:由中断源向CPU所发出的请求中断的信号称中断 请求。
中断响应:CPU在满足条件情况下接受中断申请,终止现行 程序执行转而为申请中断的对象服务称中断响应。
IE0=0,无中断请求。
IE0=1,外部中断0有中断请求。当CPU响应该中断,转向中 断服务程序时,由硬件清“0”IE0。
(3)IT1—外部中断请求1为跳沿触发方式还是电平触发方式, 意义与IT0类似。
(4)IE1—外部中断请求1的中断请求标志位,意义与IE0类似。
(5)TF0—T0溢出中断请求标志位。 T0计数后,溢出时,由硬件置“1”TF0,向CPU申请中断,
串行中断是为串行数据传送的需要而设置的。每当串行 口发送或接收一组串行数据时,就产生一个中断请求。
51单片机C语言编程入门(详讲版)

中国科学技术大学业余无线电协会编目 录§1 前言 (1)§2 单片机简介 (2)2.1 数字电路简介 (2)2.2 MCS-51单片机简介 (2)2.3 Easy 51 Kit Pro简介 (5)2.4 Easy 51 Kit Pro电路功能分析 (5)§3 MCS-51单片机的C语言编程 (8)3.1 汇编语言 (8)3.2 建立你的第一个C项目 (8)3.3 生成hex文件 (12)3.4 Keil C语言 (14)3.5 单片机I/O (18)3.6 中断 (25)3.7 定时器/计数器 (27)3.8 定时器的应用举例 (29)3.9 外部中断 (34)3.10 串行通信 (38)3.11 定时器2 (43)3.12 看门狗 (47)3.13 空闲模式和掉电模式 (50)§4 MCS-51单片机C语言编程应用进阶 (51)4.1 扫描式键盘 (51)4.2 EEPROM芯片AT93C46的读写 (55)4.3 Keil C的高级使用 (63)§5 编写高质量的单片机C程序 (64)5.1 文件结构 (64)5.2 程序的版式 (66)5.3 单片机程序命名规则与变量选择 (70)5.4 表达式和基本语句 (73)5.5 函数设计 (77)5.6 单片机程序框架 (79)附图:Easy 51 Kit Pro电路图(最小系统板) (80)附图:Easy 51 Kit Pro电路图(学习板) (81)§1 前言什么是单片机,目前还没有一个确切的定义。
普通认为单片机是将CPU、RAM、ROM、定时器/计数器以及输入输出(I/O)接口电路等计算机主要部件集成在一块芯片上,这样所组成的芯片级微型计算机称为单片微型计算机(Single Chip Microcomputer)。
简称为单片微机或单片机。
利用单片机程序,可以实现对硬件系统的小型化的智能控制。
单片机内部资源

二、中断系统
❖ 5、C51中断的程序设计
❖ 中断子程序函数格式 返回值 函数名([参数])[模式][再入]interrupt n[using m]
❖ using m:
定义函数所使用的工作寄存器组 m的取值范围为0~3,可缺省。 选不同的工作寄存器组,可方便实现寄存器组的现场保护。
二、中断系统
❖4、中断控制相关的寄存器-IP
❖ IP (B8H)——中断优先级控制寄存器
BC BB BA B9 B8
IP
/ / / PS PT1 PX1 PT0 PX0
特点:设定优先级 0:低优先级 1:高优先级
各位定义 PS,PT1,PT0,PX1,PX0分别是:串行通信、
定时计数器1,定时计数器0,外部中断1, 外部中断0的优先级控制位
IE1:外部中断请求1的中断申请标志
TF0:51片内定时/计数器0溢出中断请求标志。
❖ 定时/计数器0溢出时,TF0由硬件置1 ❖ CPU 响应中断时 自动清零 TF0 ❖ TF0 也可软件清零
二、中断系统
❖4、中断控制相关的寄存器-TCON
二、中断系统
❖ 4、中断控制相关的寄存器-SCON
❖ IT0=1 若第一个机器周期INT0=1,第二个机器周期INT0=0,则 IE=1否则IE=0
❖ 转向中断服务时 IE由硬件清零
二、中断系统
❖4、中断控制相关的寄存器-TCON
8F
8D
8B 8A 89 88
TCON TF1
TF0
IE1 IT1 IE0 IT0
IT1:外部中断请求1的触发方式选择
51单片机教程

51单片机教程单片机作为嵌入式系统的关键元素之一,具有广泛的应用前景。
本教程将为大家介绍51单片机的基本知识、应用案例以及编程技巧。
通过学习本教程,读者将能够掌握51单片机的原理和基本操作,为进一步深入学习和应用打下坚实的基础。
一、简介51单片机指的是Intel公司推出的一种经典的8位单片机,广泛应用于电子产品中。
它使用的是哈弗小端字节序,运行稳定可靠,并具备强大的扩展性,便于工程师进行开发和应用。
二、基本原理1. 51单片机的结构51单片机包括中央处理器、存储器和各种外设。
中央处理器由ALU、寄存器组、程序计数器、指令译码器等组成。
存储器包括片内RAM和片内ROM,外设包括I/O口、定时器等。
2. 时序控制51单片机的时序控制通过晶振、分频器和定时器来实现。
晶振提供时钟信号,分频器控制时钟信号的频率,定时器用于定时和计数。
三、编程环境搭建1. 安装编程软件在学习51单片机之前,我们需要安装相应的编程软件。
常用的有Keil C51、WinAVR等。
根据自己的需求选择一个适合的软件进行安装。
2. 设置开发板将开发板与计算机连接,并进行相应的设置。
确认开发板的连接方式和COM口设置正确。
四、基本操作1. 点亮LED灯首先,我们从最简单的实验开始,通过51单片机控制LED灯的点亮和熄灭。
连接好电路后,编写相应的程序,即可实现LED灯的亮灭控制。
2. 按键输入与输出通过接入按键开关,我们可以实现通过按键输入不同的命令,控制LED灯的亮灭。
通过读取按键输入的状态,编写相应的程序进行判断和控制。
五、应用案例1. 温度检测系统通过连接温度传感器,我们可以使用51单片机对周围环境的温度进行检测,并通过LED灯或LCD显示屏来显示当前的温度数值。
2. 蜂鸣器控制将蜂鸣器与51单片机连接,通过编写程序控制蜂鸣器的频率和节奏,可以实现不同的音乐或警报声音。
六、编程技巧1. 中断编程中断编程是51单片机常用的一种编程方式。
51单片机的结构及其组成

51单片机的结构及其组成在前面的五节课当中,我们讲述的都是一些基础概念的知识,从这节开始,我们就正式的切入到我们所在学习的对象--51单片机。
学习单片机的内部结构之前,我们先了解下我们现在正在使用的计算机的几大组成部份:计算机的五个组成部份:运算器:用于实现算术和逻辑运算。
计算机的运算和处理都在这里进行;控制器:是计算机的控制指挥部件,使计算机各部份能自动协调的工作;存储器:用于存放程序和数据;(又分为内存储器和外存储器,内存储器就如我们电脑的硬盘,外存储器就如我们的U盘)输入设备:用于将程序和数据输入到计算机(例如我们电脑的键盘、扫描仪);输出设备:输出设备用于把计算机数据计算或加工的结果以用户需要的形式显示或保存(例如我们的打印机)。
注:1、通常把运算器和控制器合在一起称为中央处理器(Central Processing Unit),简称CPU。
2、通常把外存储器、输入设备和输出设备合在一起称之为计算机的外部设备。
上面讲的是我们的个人办公计算机,那么51单片机的内部又有些什么部件组成呢?1、中央处理单元(8位)数据处理、测试位,置位,复位位操作2、只读存储器(4KB或8KB)永久性存储应用程序,掩模ROM、EPROM、EEPROM3、随机存取内存(128B、128B SFR)在程序运行时存储工作变量和资料4、并行输入/输出口(I / O)(32条)作系统总线、扩展外存、I / O接口芯片5、串行输入/输出口(2条)串行通信、扩展I / O接口芯片6、定时/计数器(16位、加1计数)计满溢出、中断标志置位、向CPU提出中断请求,与CPU之间独立工作7、时钟电路内振、外振。
8、中断系统五源中断、2级优先。
结构特点:MCS-51系列单片机为哈佛结构(而非普林斯顿结构)1)内ROM:4KB2)内RAM:128B3)外ROM:64KB4)外RAM:64KB5)I / O线: 32根(4埠,每埠8根)6)定时/计数器:2个16位可编程定时/计数器7)串行口:全双工,2 根8)寄存器区:工作寄存器区、在内128B RAM中,分4个区,9)中断源:5源中断,2级优先10)堆栈:最深128B11)布尔处理机:位处理机,某位单独处理12)指令系统:五大类,111条上图就是我们要研究学习的对象,51单片机摧部结构图了。
《单片机原理与应用及上机指导》第7章:80C51单片机系统扩展

表7.4 常用SRAM芯片的主要性能
表7.6 80C51与6264的线路连接
7.2 并行I/O扩展
MCS-51系列单片机共有4个并行I/O口,分别是P0、P1、 P2和P3。其中P0口一般作地址线的低8位和数据线使用; P2口作地址线的高8位使用;P3口是一个双功能口,其第 二功能是一些很重要的控制信号,所以P3一般使用其第二 功能。这样供用户使用的I/O口就只剩下P1口了。另外,这 些I/O口没有状态寄存和命令寄存的功能,所以难以满足复 杂的I/O操作要求。因此,在大部分MCS-5l单片机应用系 统的设计中都不可避免地要进行I/O口的扩展。 7.2.1 并行I/O扩展原理 7.2.2 常用的并行I/O扩展芯片
线选法
若系统只扩展少量的RAM和I/O口芯片,可采用线选法。 线选法是把单片机高位地址分别与要扩展芯片的片选端相连,控制选 择各条线的电路以达到选片目的,其优点是接线简单,适用于扩展芯 片较少的场合,缺点是芯片的地址不连续,地址空间的利用率低。
图7.7 片外RAM的读时序
图7.8 片外RAM的写时序
4.数据存储器芯片及扩展电路
(1) 数据存储器 数据存储器扩展常使用随机存储器芯片,用得较多的是 Intel公司的6116(容量为2KB)和6264(容量为8KB), 其性能 如表7.4所示。 (2) 数据存储器扩展电路 80C51与6264的连接 如表7.6所示。
全地址译码法
利用译码器对系统地址总线中未被外扩芯片用到的高位地址线进行译 码,以译码器的输出作为外围芯片的片选信号。常用的译码器有 74LS139、74LS138、74LS154等。优点是存储器的每个存储单元只 有唯一的一个系统空间地址,不存在地址重叠现象;对存储空间的使 用是连续的,能有效地利用系统的存储空间。缺点是所需地址译码电 路较多,全地址译码法是单片机应用系统设计中经常采用的方法 。
51单片机教程
51单片机教程51单片机是一种常用的微控制器,学习51单片机的教程可以帮助初学者快速入门。
在本篇教程中,将介绍51单片机的基本知识和编程技巧。
1. 概述51单片机是基于哈佛体系结构的8位微控制器。
它具有丰富的外设和接口,适用于各种嵌入式应用。
在学习51单片机之前,需要了解单片机的基本结构、寄存器和指令集等重要概念。
2. 开发环境搭建搭建合适的开发环境对学习51单片机至关重要。
可以选择Keil C51或者SDCC等集成开发环境,并安装相应的编译器和调试器。
此外,还需要连接51单片机与电脑,才能进行程序下载和调试。
3. 程序编写与调试使用C语言编写51单片机的程序是最常见的方法。
首先,需要了解51单片机的IO口、定时器、中断等基本知识,以及相应的编程方法。
然后,可以通过编写简单的程序,例如LED闪烁、计数器等,来测试和调试开发板。
4. 外设和接口的应用51单片机具有丰富的外设和接口,例如串口、SPI、I2C等。
学习如何使用这些外设和接口,可以帮助实现更多功能。
例如,可以使用串口进行与计算机的通信,或者通过SPI接口与外部设备进行数据交换。
5. 项目实践通过完成具体的项目,可以深入理解51单片机的应用。
例如,可以设计一个温度测量系统、一个电子钟或者一个自动控制系统等。
在实践过程中,可以遇到各种问题和挑战,通过解决问题,可以提高面对实际问题的能力。
总结:通过本篇教程,介绍了51单片机的基本知识和编程技巧。
希望读者可以通过学习,掌握51单片机的应用和开发方法。
在学习过程中,需要勤加练习,不断积累经验,才能更好地应用单片机技术。
mcs-51系列单片机基本结构与工作原理
▪
1)电源引脚VCC和VSS
▪
VCC:40脚,电源端,+5V
▪
VSS:20脚,接地端(GND)
▪
2)时钟电路引脚
▪
XTAL1:19脚,外接晶振输入引脚。
▪
XTAL2:18脚,外接晶振输出引脚。
▪
3)控制线引脚
▪
共4根,其中3根为双功能
▪
①RST/VPD :9脚,复位/备用电源。
▪
RST---通过外接复位电路实现上电复位或按键复位。
直接寻址 寄存器寻址
(4)MOV 60H,@R1 直接寻址 寄存器间接寻址
表2-2 特殊功能寄存器SFR的名称及地址(一)
§ MCS-51的扩展应用
▪ 一、单片机Байду номын сангаас展的基本概念 ▪ 1、单片机最小系统:使单片机运行的最少器件构成的 ▪ 系统,就是最小系统。 ▪ 无ROM芯片:8031 必须扩展ROM,复位、晶振电路 ▪ 有ROM芯片:89C51等,不必扩展ROM,只要有复位、 ▪ 晶振电路 ▪ 2、扩展使用的三总线:
▪ 清零,用来选择8051的工作寄存器区。其选择方法见表2-1
▪ OV、( PSW.2)溢出标志位。当带符号数运算(加法或减法)结果超 ▪ 出范围(-127-+127)时,有溢出,OV=1;否则OV=0。 ▪ --、( PSW.1)用户定义标志位。 ▪ P、( PSW.0)奇偶校验位。在每个指令周期由硬件按累加器A中“1”的 ▪ 个数为奇数或偶数而为“1”或“0”。因此,P可用指示操作结果(累加器
direct
8 位内部RAM单元的地址
#data:
指令中的8 位常数。
#data16
指令中的16位常数。
No.5C51程序设计
– 指定存储区的指针
• 指定存储区的指针在指针的声明中经常包含一个 存储类型标识符指向一个确定的存储区。 • 例如: char data *str; int xdata *ptr; long code *tab;
• 指定存储区指针存放时不再像通用指针那样需 要保存存储类型,指向idata、data 、bdata 和pdata存储区的指针只需要一个字节存放, 而code和xdata指针也才需要两字节。从而减 少了指针长度,节省了存储空间。
– 如:sfr16 TL0=0x8A;
– 特殊功能寄存器中特定位的定义
• 在C51中可以利用关键字sbit定义可独立寻址访问 的位变量
• 对一般位变量的定义
– 当位变量位于内部RAM的可位寻址区(20H~2FH 单元)时,可以利用C51编译器提供的bdata存储器 类型进行访问 – 带有bdata类型的变量可以进行字节或位寻址,用 sbit指定bdata变量的相应位后就可以进行位寻址。
– 考虑存储器结构 – 正确使用片内外RAM、特殊功能寄存器 – 正确处理接口芯片收发数据 – 不需要具体组织和分配存储器资源 – 结构模块化,思路与思维相同 – 但要与单片机结构相关联,否则不能正确映射
• C程序:
• C51:
– – – –
自动完成存储单元分配(内定义) 可编制常见接口芯片通用驱动函数 可采用模块化设计应用程序 加快开发速度
var=XBYTE[0x8000]; 头文件内定义的函数 XBYTE[0x8000]=0x21;
P71
– 例如:unchared xdta xram[0x8000]_at_0x1000; //在外部RAM1000H开始定义了一个一维数组
51单片机编程基础
51单片机编程基础单片机的外部结构:1. DIP40双列直插;2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)3. 电源VCC(PIN40)和地线GND(PIN20);4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3;2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)3. 一个串行通信接口;(SCON,SBUF)4. 一个中断控制器;(IE,IP)针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。
C语言编程基础:1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。
2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。
3. ++var表示对变量var先增一;var—表示对变量后减一。
4. x |= 0x0f;表示为x = x | 0x0f;5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。
6. While( 1 ); 表示无限执行该语句,即死循环。
语句后的分号表示空循环体,也就是{;}在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)代码1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.32. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口3. {4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC5. While( 1 ); //死循环,相当LOOP: goto LOOP;6. }注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。