51单片机内部资源及编程
51单片机内部资源简介
TXD(串行口输出)
INT0(外部中断0输入) INT1 (外部中断1输入) T0(定时器0的外部输入)
T1 (定时器1的外部输入)
WR(片外数据存储器“写选通控制”输 出) RD (片外数据存储器“读选通控制”输 出)
P3口
二、P3口作为第二功能(内部硬件自动使Q=1) 此时引脚部分输入(Q=1、W=1) 。
单片机内部资源简介
1、整体简介 2、端口 3、定时器 4、串口 5、中断
MCS-51单片机的基本组成
片内资源 中央处理器CPU 程序存储器ROM 数据存储器RAM 并行I/O口 串行口 定时计数器 中断系统中断源
AT89S52 8位
STC89C52RC 8位
8KB
8KB
256B 4个P0—P3
P0口的每一位口线可驱动8个LS型TTL负载。
2. P1~P3口 • P1~P3口都是准双向口,作为输入用时,必须向相应的
端口写“1”; • P1~P3口内部有上拉电阻,其每一位口线可驱动4个LS
型TTL负载。
补充
“灌电流”与“拉电流”
• “灌电流”
“灌电流”与“拉电流”
• “拉电流”
P1、P3口的驱动能力有限,在低电平输出时, 一般也只能提供不到2mA的“灌电流”。
定时/计数器接口
一、定时/计数器的主要特性 1)STC89C52RC单片机三个16位的可编程定时/计数器:定时/计数器T0
和定时/计数器T1以及定时/计数器T2。
2)每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信 号计数实现计数功能,通过编程设定来实现。
3)每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有 三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。
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)。
简称为单片微机或单片机。
利用单片机程序,可以实现对硬件系统的小型化的智能控制。
1.1 单片机的内部资源.doc
这节课的标题是点亮LED,但是需要大家了解的单片机基础知识的内容也非常多,特别是对于初学者,刚开始要在头脑中建立一个单片机的概念,课程最后通过点亮一个LED小灯来增加初学者对实验的好奇心和自信心。
1.1 单片机的内部资源在这里我所讲到的单片机内部资源,和传统单片机书籍讲单片机内部结构不同,我这里讲到的内部资源,是指我们作为单片机用户,单片机提供给我们可使用的一些内容。
总结起来,主要是三大资源:1、FLASH(程序存储空间,早期单片机是OTPROM)2、RAM(数据存储空间)3、SFR(特殊功能寄存器)在早期的技术里边,主要是用OTPROM(One Time Programable Read-Only Memory,即一次可编程只读存储器)来存储单片机的程序,随着技术的发展,FLASH的以其可重复擦写且大容量低成本的优点成为绝大多数单片机的程序存储器。
对于单片机来说FLASH最大的意义是断电后数据不丢失,这个概念类似于我们电脑的硬盘,你看我们保存了电影、文档、音乐等文件,我们把电源关掉后,下次重新开电脑,所有的文件都还照样存在。
RAM是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据,和我们电脑的内存是一个概念,其实最典型的比喻是我们的计算器,我们用计算器计算个加减法,一些中间的数据都会保存在RAM里边,关电后数据丢失,所以我们每次打开计算器,都是从归零开始计算。
但是他的优点第一是读写速度非常快,第二是理论上是可无限次写入的,即寿命无限,不管程序怎么运行怎么读写它都不会坏的。
第三个资源是SFR,特殊功能寄存器。
这个概念大家可能刚开始理解不了,但是一定要记住。
单片机有很多很多功能,每个功能都会配一个或多个SFR,我们就是通过对SFR的读写来实现单片机的多种多样的功能的。
讲到这里,我们来了解一下51单片机。
通常我们一说到51单片机,指的都是兼容Intel MCS-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位常数。
第3章MCS-51单片机的内部资源及应用
MOV P0, A ANL P0, #data ORL P0, A
(2)读端口数据方式: CPU读入的这个数据并非端口引脚线 上的数据。读端口数据可以直接读端口。例如,下面的指 令均可以从P1口输入数据,这是锁存器上的数据。
2.P2口
P2口常用做外部存储器的高8位地址 口。当不用做地址口时,P2口也可作为 通用I/O口,这时它也是一个准双向I/O 口。不必外接上拉电阻就可以驱动任何 MOS驱动电路,且只能驱动4个TTL输 入。P2口的位结构如右图所示。
3.P1口
P1口常用做通用I/O口,它也是一 个标准的准双向I/O口,不必外接上拉 电阻就可以驱动任何MOS驱动电路, 且只能驱动4个TTL输入。P1口的位结 构如右图所示。
制。
(3)中断允许控制寄存器IE (0A8H)
EA
ES ET1 EX1 ET0 EX0
(3)中断允许控制寄存器IE (0A8H)
中断与子程序的最主要区别:子程序是预先安排好的,中断 是随机发生的。
中断涉及的几个环节:中断源、 中断申请、开放中断、保护 现场、中断服务、恢复现场、中断返回。
2. 中断源
中断源是指引起中断的设备或事件,或发出中断请求的源头。
3. 中断的分类
中断按功能通常可分为可屏蔽中断、非屏蔽中断和软件中断三类。 可屏蔽中断是指CPU可以通过指令来允许或屏蔽中断的请求。 非屏蔽中断是指CPU对中断请求是不可屏蔽的,一旦出现,CPU必须响应。 软件中断则是指通过相应的中断指令使CPU响应中断。
1.I/O口直接用于输入/输出
在I/O口直接用做输入/输出时,CPU既可以把它们看做数据口,也可以看 做状态口,这是由用户决定的。
51单片机资源分配和功能定义
51单片机资源分配和功能定义1.引言在51单片机的开发过程中,资源的合理分配和功能的准确定义是确保项目成功的关键。
本文将介绍51单片机资源的分配策略以及功能定义的步骤和方法。
2. 51单片机资源分配2.1内存资源分配在51单片机中,内存资源的合理分配对于程序的运行至关重要。
通常情况下,内存资源可以分为3个部分:内部R AM、外部R AM和R OM。
内部R AM分为数据内存和特殊功能寄存器(S FR),而外部R AM一般用于存储大量的数据。
R OM则用于存储程序代码。
在进行内存资源分配时,需要考虑以下几个因素:-程序的规模:根据程序的规模和功能需求,合理分配数据内存和外部R A M的大小;-数据内存和SF R的分配:根据程序的需求,合理分配数据内存和SF R 的地址;-R OM的分配:根据程序代码的大小,合理分配R OM的大小。
2.2I/O资源分配51单片机的I/O资源分配主要涉及到引脚的使用和外设的选择。
在进行I/O资源分配时,需要考虑以下几个因素:-引脚的数量和类型:根据项目需求和外设的连接方式,选择合适的引脚数量和类型;-引脚的功能定义:根据项目需求,在程序中准确定义每个引脚所承担的功能;-外设的选择:根据项目需求和功能要求,选择合适的外设进行连接和使用。
3.功能定义在进行51单片机的功能定义时,需要明确每个功能的需求和实现方式。
以下是功能定义的步骤和方法:3.1需求分析在功能定义之前,首先进行需求分析是十分重要的。
通过与项目团队的沟通和理解,明确项目的功能需求和目标。
3.2功能划分根据需求分析的结果,将项目功能进行划分,并确定每个功能的优先级和重要性。
3.3功能描述对于每个功能,进行详细的功能描述。
功能描述应包括功能的输入、输出、处理逻辑以及与其他功能的关联。
3.4功能实现根据功能描述,确定功能的具体实现方式。
可以使用编程语言来实现功能,也可以利用硬件电路来实现。
4.总结本文介绍了51单片机资源分配和功能定义的相关内容。
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单片机C语言编程基础及实例
51单片机C语言编程基础及实例51单片机C语言编程基础及实例C语言是一门通用计算机编程语言,应用广泛。
下面是店铺整理的51单片机C语言编程基础及实例,希望对大家有帮助!单片机的外部结构:DIP40双列直插;P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)电源VCC(PIN40)和地线GND(PIN20);高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)四个8位通用I/O端口,对应引脚P0、P1、P2和P3;两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 一个串行通信接口;(SCON,SBUF)一个中断控制器;(IE,IP)针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。
C语言编程基础:十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。
如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。
++var表示对变量var先增一;var—表示对变量后减一。
x |= 0x0f;表示为 x = x | 0x0f;TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。
While( 1 ); 表示无限执行该语句,即死循环。
语句后的分号表示空循环体,也就是{;}在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)代码#include //该头文档中有单片机内部资源的符号化定义,其中包含P1.3void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口{P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCCWhile( 1 ); //死循环,相当 LOOP: goto LOOP;}注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。
51单片机硬件及程序详细讲稿
51单片机硬件及程序详细讲稿概述51单片机是一种广泛应用于嵌入式系统和控制器中的微控制器,拥有广泛的硬件资源和易于学习的编程语言。
本文将详细介绍51单片机的硬件及程序设计。
硬件介绍51单片机特点51单片机是一种具有完整硬件系统和软件系统的单片机。
它的主要特点有:1.具有8位CPU结构,集成了ROM、RAM、I/O端口和定时器等基础设备,因此外围器件比较少。
2.采用哈佛结构,将数据存储和指令存储分开存放,有效提高了程序的执行效率。
3.具有典型的 Harvard 设计,数据和指令有独立的存储空间,提高了程序的执行效率。
4.具有比较完善的中断机制,可扩展性高,可适应各种应用场合。
单片机的外部硬件单片机的外部硬件主要有晶体振荡器、电源、复位电路、LED指示灯、按键、数码管、LCD液晶显示器、ADC、DAC、串口、接口电路等。
其中,晶体振荡器是单片机工作的时钟,复位电路是单片机正常工作的保障。
单片机的内部硬件单片机的内部硬件主要有:1.存储器:程序存储器ROM、数据存储器RAM和特殊寄存器SFR等。
2.CPU:包括ALU、ACC、B寄存器等。
3.I/O端口:具有8位输入输出通道,每个通道都有不同的功能。
4.定时器:可用于产生中断、计数、测量时间等功能。
5.串口:可用于与外部设备进行通信。
6.中断:可响应外部中断和内部中断。
程序设计基本语言51单片机的编程主要使用汇编语言和C语言两种。
汇编语言编写的单片机程序执行的速度比较快,但实际应用比较少,C语言编写的程序可读性好,易于维护。
程序结构51单片机程序通常由以下几部分组成:1.头文件:包含了程序需要的相关信息和函数。
2.宏定义:定义一些常量和符号,方便程序的编写和维护。
3.全局变量:定义程序中需要用到的全局变量。
4.函数:包括主函数和其他函数。
程序调试51单片机程序的调试主要有软件仿真和硬件调试两种方法。
在软件仿真调试时,可以使用Keil软件或IAR软件对程序进行仿真调试。
简述51系列单片机的内部组成结构
简述51系列单片机的内部组成结构51系列单片机是一种非常常见的单片机产品,被广泛应用于各种电子设备中。
它具有强大的功能和灵活的可编程性,能够满足不同应用场景的需求。
那么,究竟51系列单片机的内部是如何组成的呢?我们来了解一下51系列单片机的基本结构。
51系列单片机由中央处理器、存储器、输入输出端口、定时器、中断系统等多个部分组成。
其中,中央处理器是51系列单片机的核心部件,负责执行指令和进行数据处理。
存储器用于存储程序代码和数据,包括ROM、RAM 和特殊功能寄存器等。
输入输出端口用于与外部设备进行数据交互,可以实现数据输入、输出和控制功能。
定时器可以生成指定时间间隔的定时信号,用于定时操作和计时功能。
中断系统可以在特定条件下中断正常的程序执行,执行相应的中断服务程序。
接下来,我们详细介绍一下51系列单片机的内部组成结构。
首先是中央处理器部分,它由一个8位的CPU核心组成,具有丰富的指令集和寄存器。
这些指令可以执行各种算术和逻辑操作,以及数据传输、位操作等功能。
CPU核心还包括时钟发生器和系统控制逻辑,用于产生时钟信号和控制系统的运行。
其次是存储器部分,51系列单片机的存储器主要包括ROM和RAM。
ROM是只读存储器,用于存储程序代码和常量数据。
RAM是随机存储器,用于存储变量和临时数据。
此外,51系列单片机还具有一些特殊功能寄存器,用于存储各种控制和状态信息。
再次是输入输出端口部分,51系列单片机有多个I/O口,用于与外部设备进行数据交互。
每个I/O口都有一个特定的地址和控制寄存器,可以设置输入输出方向和电平状态。
通过读写这些寄存器,可以实现数据输入、输出和控制功能。
51系列单片机还具有定时器部分,用于生成精确的定时信号。
定时器可以根据设定的参数生成不同频率和周期的定时信号,用于各种定时操作和计时功能。
此外,定时器还可以用于产生脉冲信号、PWM 信号等。
最后是中断系统部分,51系列单片机具有多个中断源和中断向量。
单片机原理及应用(C51编程)
C51语言继承了标准C语言的语法和结构,同时针对单片机的 特性进行了一些扩展和优化。
03
C51语言支持结构化编程、模块化设计和可重用性,使得程序 更加清晰、易于维护和调试。
C51编程的基本语法
变量声明
C51语言支持多种类型的变量声明,包括整 型、浮点型、字符型等。
条件语句
使用if、else if、else等关键字实现条件判断 和选择执行。
位域
用于表示二进制位,可以用来存储状 态信息或控制位。
C51编程的运算符与表达式
算术运算符
包括加、减、乘、除等基本算术运算。
逻辑运算符
包括与、或、非等逻辑运算,用于实现条 件判断。
位运算符
赋值ห้องสมุดไป่ตู้算符
包括位与、位或、位异或等位运算,可以 用于控制硬件位操作。
包括赋值、自增、自减等赋值运算,用于 修改变量值。
02
单片机具有强大的控制功能,能够实现各种数字信号处理和控制,广泛应用于 工业自动化控制、智能家居、智能仪表等领域。
03
单片机编程语言主要有汇编语言和C语言,其中C语言编程具有易学易用、可读 性强、可移植性好等优点,被广泛应用于单片机开发。
单片机的应用领域
工业自动化控制
01
单片机能够实现各种传感器数据的采集、处理和控制,广泛应
延时函数
在程序中实现一个延时函数,用于控制LED灯的闪烁频率。
按键输入的实现
硬件连接
将按键的一端连接到单片机的某个I/O口,另一端 接地。
编程实现
使用C51编程语言,通过检测I/O口的电平变化来 判断按键是否被按下。
去抖动
为了消除按键抖动对程序的影响,可以在程序中 实现去抖动算法。
第二章 MCS-51 单片机基本知识
CPU
特殊功能寄存器SFR 特殊功能寄存器 (Special Function Register) )
MCS-51单片机的引脚功能 2.1.2 MCS-51单片机的引脚功能
MCS-51单片机芯片共40脚 I/O端口引脚32条 端口引脚32 MCS-51单片机芯片共40脚,I/O端口引脚32条、控制引 单片机芯片共40 电源引脚2 时钟引脚2 如图2 脚4条、电源引脚2条、时钟引脚2条,如图2-1、2-4 所示。 所示
通用I/O I/O口 无片外存储器时,P2口可作通用I/O口使用 口可作通用I/O口使用; ① 通用I/O口:无片外存储器时,P2口可作通用I/O口使用; ② 地址口:在访问外部存储器时,传送ROM/RAM高低8位地址。 地址口:在访问外部存储器时,传送ROM/RAM高低8位地址。 ROM/RAM高低
CPU
算术逻辑单元ALU 算术逻辑单元ALU (Arithmetic Logic Unit) 定时控制器 定时控制器 程序计数器PC 程序计数器PC Counter) (Program Counter) 累加器ACC 累加器ACC (Accumulator) (Accumulator) 程序状态字PSW 程序状态字PSW Word) (Program Status Word) 堆栈指针SP 堆栈指针SP Pointor) (Stack Pointor) 数据指针DPTR 数据指针DPTR Pointer) (Data Pointer) 寄存器B 寄存器B
中央处理单元CPU 2.1.1 中央处理单元CPU
算术逻辑单元ALU 算术逻辑单元ALU (Arithmetic Logic Unit) 加法器 2个暂存器TMP1和TMP2 个暂存器TMP1和 TMP1 布尔处理器 定时控制逻辑 定时控制器 定时控制器 指令寄存器IR 指令寄存器IR (Instruction Register ) 振荡器OSC 振荡器OSC (Oscillator) 特殊功能寄存器 特殊功能寄存器SFR (Special Function Register) )
51单片机内部定时器和中断系统以及编写第一个简单的定时器实验程序
51单片机内部定时器和中断系统以及编写第一个简单的定时器实验程序上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作原理与开发流程。
这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。
通过该讲,读者可以掌握定时器的工作原理和单片机的中断系统。
从而设计定时器计数程序和中断服务程序。
一、原理简介首先让我们举闹钟为例,将它定时在一分钟后闹铃,这就需要秒针走一圈(60 次)。
即一分钟时间转化为秒针走的次数,也就是计数的次数,计数到了60 次然后闹铃,而每一次计数的时间是1 秒。
单片机内部的定时/ 计数器跟闹钟类似,可以通过编程来设定要定时的时间、定时时间到了进行相应的操作。
那么在单片机内部计数一次的时间是多少呢,51 单片机输入的时钟脉冲是由晶体振荡器的输出经12 分频后得到的,所以定时器也可看作是对计算机机器周期的计数器。
因为每个机器周期包含12 个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号。
故其频率为晶振频率的1/12。
如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间刚好为1μs。
在本实验套件中采用的是11.0592M 的晶振,故每接收一个输入脉冲的时间约为1.085μs。
实现精确定时在实际项目应用中非常重要,因为往往需要用到精确定时一段时间,然后定时时间到的时刻做相应的任务。
那如何编程实现定时时间呢?首先先简单介绍下本实验板上单片机(STC89C52)内的定时器资源。
STC89C52 内有三个定时/ 计数器,分别为T0、T1 和T2。
其中T0、T1 工作方式一样,一并介绍。
T2 的工作方式稍有区别,这里不做介绍,实验套件光盘中有实际应用程序。
同时,单片机中的定时器和计数器是复用的,计数器是记录外部脉冲的个数,而定时器则是由单片机内部时钟提供的一个非常稳定的计数源。
本讲中,以T0、T1 作为定时器来进行实例介绍使用。
第五章MCS-51单片机的硬件资源
单片机原理及应用
潭
大 第五章MCS-51单片机的硬件资源
学
单 片
5.1 MCS-51的并行接口及其应用
机 原
5.2 MCS-51的中断系统
理 及
5.3 MCS-51的定时器/计数器
应 用
5.4 MCS-51的串行接口及串行通信
编
著
组
第五章MCS-51单片机的硬件资源
湘 5.1 MCS-51的并行接口及其应用
著 组
MOS输入电路,且能驱动四个LSTTL输入。P2口常用
作外部存储器的高八位地址口。当不用作地址口时,
P2口亦可作通用I/O口,这时它也是一个准双向I/O口。
第五章MCS-51单片机的硬件资源
湘
潭
大 读锁存器
学
单
片
机 原
内部总线
理
DQ
及
应 写入
用
锁存器 CP Q
编
著
组 读引脚
地址
控制
MUX
(b)p2口电路逻辑
理 处于截止状态。引脚上的外部信号即加在下面一个
及 三态缓冲器的输入端,又加在下拉FET的漏极,假
应 用
定在此之前曾输出锁存过数据0 ,则FET是导通的,
编 这样引脚上的电位就始终被钳位在0 电平,使输入
著 组
高电平无法读入。因此作为一般I/O口使用时,P0口
是一个准双向口,即输入数据时,应先向口写“1”,
原 理
P3·1 TxD (串行输出通道)
及
P3·2
INT0 (外中断0)
应 用
P3·3
INT1 (外中断1)
编 著
P3·4
T0 (定时器0外部输入)
51单片机编程
《单片机C51程序设计》课程标准一、课程性质课程名称:单片机C51程序设计课程代码:109025学时数:84其中课内实验学时数:34学分数:6适用专业:应用电子技术、电子信息工程技术二、课程教学目标1、课程知识目标掌握单片机基本原理,熟悉KEILL软件的使用,熟悉基于proteus软件的单片机的仿真方法,熟悉MCS-51的结构与应用设计方法,掌握C51结构与基本的程序设计方法,通过应用实例熟悉单片机C语言的在单片机应用设计中的用法。
2、课程技能目标通过本课程的教学,要求学生初步具有用C语言进行单片机系统设计的能力。
3、职业能力目标掌握电子产品设计的基本方法,能够以单片机作为核心进行电子产品的设计与开发。
三、课程内容本课程由理论教学模块、实验教学模块两大模块组成。
其中理论教学模块50学时、占60%,实践(含实验和实训)教学模块34学时,占40%。
各教学模块如下:1、理论教学模块2、实验教学模块四、学生学习指南模块一keil软件与proteus软件的使用Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选。
Proteus ISIS是一款Labcenter 出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
该软件的特点:①全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
手把手教你学51单片机(C语言版)
10.1.2 定时时间精准性调 整
10.1.4 数码管扫描函数算 法改进
12
Part One
11 UART串口通信
11 UART串口通信
11.1 串行通信的 初步认识
11.2 RS-232通 信接口
11.3 USB转串口 通信
11.4 IO口模拟 UART串口通信
11.5 UART串口 通信的基本应用
A
C
E
13.2 1602整屏 移动
13.4 计算器实 例
13.6 练习题
13.1 通信时序 解析
13.3 多.c文件 的初步认识
B
13.5 串口通信机制 和实用的串口例程
D
F
15
Part One
14 I^2C总线与E^2PROM
14 I^2C总线与E^2PROM
14.1 I2C时 序初步 认识
14.2 I2C寻 址模式
18 RS-485通信与Modbus协议
01
18.1 RS485通信
02
18.2 Modbus 通信协议介绍
18.2.1 Modbus协议 特点 18.2.2 RTU协议帧数 据
03
18.3 Modbus 多机通信例程
04
18.4 练习题
20
Part One
19 实践项目开发——多功能电子钟
19 实践项目开发——多功能电子钟
1.6 答读者问
03
Part One
2 点亮你的LED
2 点亮你的LED
2.1 单片机的 内部资源
2.2 单片机最 小系统
2.3 LED小灯
2.6 练习题
2.5 程序下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 MCS-51单片机内部资源及编程
如果定时时间大于65536μs,这时用一个定时/计数器直接处理不能实 现,这时可用两个定时/计数器共同处理或一个定时/计数器配合软件计 数方式处理。 【例6-3】设系统时钟频率为12MHZ,编程实现从P1.1输出周期为 1s的方波。 根据例6-2的处理过程,这时应产生500ms的周期性的定时, 定时到则对P1.1取反就可实现。由于定时时间较长,一个定时/计数器 不能直接实现,可用定时/计数器T0产生周期性为10ms的定时,然后 用一个寄存器R2对10ms计数50次或用定时/计数器T1对10ms计数50 次实现。系统时钟为12MHZ,定时/计数器T0定时10ms,计数值N为 10000,只能选方式1,方式控制字为00000001B(01H),初值X: X=65536-10000=55536=1101100011110000B 则TH0=11011000B=D8H,TL0=11110000B=F0H。
二.定时/计数器的控制寄存器TCON
TCON
(88H)
D7
TF1
D6
TR1
D5
TF0
D4
TR0
D3
IE1
D2
IT1
D1
IE0
D0
IT0
其中: TF1:定时/计数器T1的溢出标志位,当定时/计数器T1计满时,由 硬件使它置位,如中断允许则触发T1中断。进入中断处理后由内部硬 件电路自动清除。 TR1:定时/计数器T1的启动位,可由软件置位或清零,当TR1=1时 启动;TR1=0时停止。
M1 0 0 1 1 M0 0 1 0 1 工作方式 0 1 2 3 方式说明 13位定时/计数器 16位定时/计数器 8位自动重置定时/计数器 两个8位定时/计数器(只有T0有)
第6章 MCS-51单片机内部资源及编程
C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0 时工作于定时方式。 GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号 的影响。
第6章 MCS-51单片机内部资源及编程
由于是8位的定时/计数方式,因而最大计数值(满值)为2的8 次幂,等于256。如计数值为N,则置入的初值X为: X=256-N 如定时/计数器T0的计数值为100,则初值为256-100=156,转 换成二进制数为10011100B,则TH0= TL0=10011100B。 注意: 由于方式2计满后,溢出信号会触发三态门自动地把TH0(或 TH1)的值装入TL0(或TL1)中,因而如果要重新实现N个单位的 计数,不用重新置入初值。
;中断处理程
第6章 MCS-51单片机内部资源及编程
(2)采用查询方式处理的程序
汇编程序: ORG 0000H LJMP MAIN ORG 0100H ;主程序 MAIN:MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H SETB TR0 LOOP:JBC TF0,NEXT ;查询计数溢出 SJMP LOOP NEXT:CPL P1.0 SJMP LOOP SJMP $ END C语言程序: #include <reg51.h> //包含特殊功 能寄存器库 sbit P1_0=P1^0; void main() { char i; TMOD=0x02; TH0=0x06;TL0=0x06; TR0=1; for(;;) { if (TF0) { TF0=0;P1_0=! P1_0;} //查询计数溢出 } }
第6章 MCS-51单片机内部资源及编程
TF0:定时/计数器T0的溢出标志位,当定时/计数器T0计满时,由硬 件使它置位,如中断允许则触发T0中断。进入中断处理后由内部硬件 电路自动清除。 TR0:定时/计数器T0的启动位,可由软件置位或清零,当TR0=1时启 动;TR0=0时停止。
6.2.3 定时/计数器的工作方式 一.方式0
四.方式3 方式3只有定时/计数器T0才有,当M1M0两位为11时,定时/计数 器T0工作于方式3,方式3的结构如下图. 方式3下,定时/计数器T0被分为两个部分TL0和TH0,其中,TL0 可作为定时/计数器使用,占用T0的全部控制位:GATE、C/T、TR0 和TF0;而TH0固定只能作定时器使用,对机器周期进行计数,这时 它占用定时/计数器T1的TR1位、TF1位和T1的中断资源。
第6章 MCS-51单片机内部资源及编程
二.定时/计数器的应用 通常利用定时/计数器来产生周期性的波形。利用定时/计数器产生 周期性波形的基本思想是:利用定时/计数器产生周期性的定时,定时 时间到则对输出端进行相应的处理。如产生周期性的方波只须定时时 间到对输出端取反一次即可。 【例6-2】 设系统时钟频率为12MHZ,用定时/计数器T0编程实现 从P1.0输出周期为500μs的方波。 分析:从P1.0输出周期为500μs的方波,只须P1.0每250μs取反一 次则可。当系统时钟为12MHZ,定时/计数器T0工作于方式2时,最 大的定时时间为256μs,满足250μs的定时要求,方式控制字应设定 为00000010B(02H)。系统时钟为12MHZ,定时250μs,计数值N 为250,初值X=256-250=6,则TH0=TL0=06H。
第6章 MCS-51单片机内部资源及编程
6.2.4 定时/计数器的初始化编程及应用 一.定时/计数器的编程
MCS-51单片机定时/计数器初始化过程如下: 1.根据要求选择方式,确定方式控制字,写入方式控制寄存器 TMOD。 2.根据要求计算定时/计数器的计数值,再由计数值求得初值,写 入初值寄存器。 3.根据需要开放定时/计数器中断(后面须编写中断服务程序)。 4.设置定时/计数器控制寄存器TCON的值,启动定时/计数器开始 工作。 5.等待定时/计数时间到,到则执行中断服务程序;如用查询处理则 编写查询程序判断溢出标志,溢出标志等于1,则进行相应处理。
第6章 MCS-51单片机内部资源及编程
(1)采用中断处理方式的程序: 汇编程序: ORG 0000H LJMP MAIN ORG 000BH 序 CPL P1.0 RETI ORG 0100H ;主程序 MAIN:MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H SETB EA SETB ET0 SETB TR0 SJMP $ END C语言程序: #include <reg51.h> //包含特殊功 能寄存器库 sbit P1_0=P1^0; void main() { TMOD=0x02; TH0=0x06;TL0=0x06; EA=1;ET0=1; TR0=1; while(1); } void time0_int(void) interrupt 1 //中断服务程序 { P1_0=!P1_0; }
第6章 MCS-51单片机内部资源及编程
6.2 定时/计数器接口
6.2.1 定时/计数器的主要特性 1.MCS-51系列中51子系列有两个16位的可编程定时/计数器: 定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/ 计数器T2。 2.每个定时/计数器既可以对系统时钟计数实现定时,也可以对 外部信号计数实现计数功能,通过编程设定来实现。 3.每个定时/计数器都有多种工作方式,其中T0有四种工作方式; T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某 种方式。 4.每一个定时/计数器定时计数时间到时产生溢出,使相应的溢 出位置位,溢出可通过查询或中断方式处理。
Hale Waihona Puke 第6章 MCS-51单片机内部资源及编程
(1)用寄存器R2作计数器软件计数,中断处理方式。 汇编程序: ORG 0000H MOV TL0,#0F0H LJMP MAIN INC R2 ORG 000BH CJNE R2,#32H,NEXT LJMP INTT0 CPL P1.1 ORG 0100H MOV R2,#00H MAIN:MOV TMOD,#01H NEXT:RETI MOV TH0,#0D8H END MOV TL0,#0F0H MOV R2,#00H SETB EA SETB ET0 SETB TR0 SJMP $ INTT0:MOV TH0,#0D8H
二.方式1 方式1的结构与方式0结构相同,只是把13位变成16位, 16位的加 法计数器被全部用上。
由于是16位的定时/计数方式,因而最大计数值(满值)为2的16 次幂,等于65536。如计数值为N,则置入的初值X为: X=65536-N 如定时/计数器T0的计数值为1000,则初值为655361000=64536,转换成二进制数为1111110000011000B,则 TH0=11111100B,TL0=00011000B。
第6章 MCS-51单片机内部资源及编程
加法计数器在使用时注意两个方面。 第一,由于它是加法计数器,每来一个计数脉冲,加法器中的内 容加1个单位,当由全1加到全0时计满溢出,因而,如果要计N个单 位,则首先应向计数器置初值为X,且有: 初值X=最大计数值(满值)M-计数值N 在不同的计数方式下,最大计数值(满值)不一样,一般来说, 当定时器/计数器工作于R位计数方式时,它的最大计数值(满值) 为2的R次幂。 第二,当定时/计数器工作于计数方式时,对芯片引脚T0(P3.4) 或T1(P3.5)上的输入脉冲计数,计数过程如下:在每一个机器周 期的S5P2时刻对T0(P3.4)或T1(P3.5)上信号采样一次,如果 上一个机器周期采样到高电平,下一个机器周期采样到低电平,则 计数器在下一个机器周期的S3P2时刻加1计数一次。因而需要两个 机器周期才能识别一个计数脉冲,所以外部计数脉冲的频率应小于 振荡频率的1/24。
第6章 MCS-51单片机内部资源及编程
C语言程序: #include <reg51.h> //包含特殊功能寄存器库 sbit P1_1=P1^1; char i; void main() { TMOD=0x01; TH0=0xD8;TL0=0xf0; EA=1;ET0=1; i=0; TR0=1; while(1); } void time0_int(void) interrupt 1 //中断服务程序 { TH0=0xD8;TL0=0xf0; i++; if (i= =50) {P1_1=! P1_1;i=0;} }