当前位置:   article > 正文

第二章 单片机的硬件结构_mcs51能够运行的最基本配置是什么

mcs51能够运行的最基本配置是什么

2.1 单片机整体结构

2.1.1 MCS-51 单片机整体结构

不同型号MCS-51单片机CPU处理能力和指令系统完全兼容,只是存储器和I/O接口的配置有所不同。

硬件配置基本配置:
1.CPU(微处理器)
2.数据存储器(RAM)
片内为128个字节(52子系列的为256个字节)
3.程序存储器(ROM/EPROM)
8031:无此部件;
8051:4K字节ROM;
8751:4K字节EPROM ;
89C51/89C52/89C55:4K/8K/20K 字节闪存。
4. P1口、P2口、P3口、P0口:为4个并行8位I/O口。
5. 串行口 1个全双工的异步串行口。
6. 定时器/计数器
7. 中断系统
8. 特殊功能寄存器(SFR)
用于对片内各功能模块进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器。
共有21个,是一个具有特殊功能的RAM区。

2.1.2 51单片机内部结构

在这里插入图片描述

一、中央处理器CPU

主要指运算器、控制器

决定单片机的主要性能指标:字长、运行速度、数据处理能力,中断和实时控制能力。

1、运算器
进行算术和逻辑运算 ,8位
主要包括算术逻辑单元ALU、累加器ACC、暂存器、程序状态字PSW、B寄存器
主要任务:
算术运算
逻辑运算
位操作
数据处理
利用程序状态寄存器PSW表述当前运行状态

1)算术逻辑单元ALU
即加法器,是核心部件,进行算术逻辑运算,其中乘(MUL)、除(DIV)运算是执行时间最长的指令。

2)累加器ACC
累加器ACC是最常用的专用寄存器。进入ALU作算术操作和逻辑操作的操作数很多来自ACC,操作的结果也常送回ACC。

3)B寄存器
是ACC的辅助寄存器,在乘除时,ACC不够用便使用B寄存器。

2、控制器
控制器是CPU的大脑中枢,它以定时控制逻辑为中心,按照人们预先给定的计算步骤,即预先编写好的已经输入到计算机存储器中的程序发出一系列控制信号,控制计算机各个部件的工作,如运算、存储等。

包括指令寄存器IR、指令译码器ID、数据指针DPTR、程序计数器(指针)PC、堆栈指针SP、以及控制电路(时序电路、中断控制部件、微操作控制部件)。

1)程序计数器PC(程序指针)
16位的地址指针,专门用来控制指令执行顺序的寄存器,其中的内容总是下一条要执行的指令的地址。可以对64K字节的程序存储器直接寻址。

  复位时,PC=0000H,使程序从0单元开始执行。通常单片机每取一个字节机器码,PC就自动加1,从而保证了指令的顺序执行。

  转移指令可强行改变PC的内容。
  • 1
  • 2
  • 3

2)时序
指按照指令功能发出一系列在时间上有一定次序的信号,控制和启动一部分逻辑电路完成某种操作。

 CPU需要一个时钟,在XTAL1和XTAL2上接石英晶体和微调电容构成振荡器。频率为4~12MHz
  • 1

3)指令寄存器IR
ID是8位寄存器,用于存放从ROM中取出的指令码。而且每条指令的第一个字节一定是操作码,其后的指令码可以是操作数或操作码。

 指令译码器ID
   ID可以对指令码进行译码,即判断出存放的是操作命令(操作码)还是操作数(操作数可以是操作地址或立即操作数),以进行下面的工作。这些工作是自动完成的。
  • 1
  • 2

4)微操作控制部件
逻辑门电路,将ID信号和时序向片内各部件送高低电平。

 中断控制部件
  自动完成“中断申请”、“中断相应”、“恢复断点”等工作。
  • 1
  • 2

二、内部RAM

单片机内部数据RAM共256字节。分为低128B和高128B地址空间。

 低128B地址空间的RAM常称为片内RAM;

高128B地址空间的RAM 称为特殊功能寄存器SFR。
但SFR18个寄存器只占用了21B供用户使用。
其他的107B系统保留。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
1)片内RAM(00~7FH)
工作寄存器区:(32B)
字节地址:00H~1FH

位寻址区:(16B)
字节地址:20H~2FH
位地址为:00H~7FH

数据缓冲区:(80B)
字节地址:00H~7FH
一般使用30H~7FH
在这里插入图片描述

三、片内ROM

   ROM用于存放程序、原始数据及表格。
  • 1

8051:片内4K掩膜ROM
8031:片内ROM
8751:片内4K EPROM

四、定时器/计数器

MCS-51系列单片机典型产品8051等单片机内部有2个可编程的16位定时器/计数器T0、T1
  • 1

最大计数脉冲个数:1~65536

五、并行I/O口

 MCS-51系列单片机有4个8位并行I/O口:P1、P2、P3共占了32根I/O引脚
  • 1

单片机扩展时,这些I/O引脚又作为扩展总线用。
P0口作为地址/数据总线,分时输出低8位地址和传送8位数据;
P2口作为高8位地址总线;
P3口也具有第二功能。这是由接口的特殊结构所决定的。

六、串行口

   完成单片机和其他计算机或通讯设备之间的串行数据通讯。

     MCS-51系列P3口的RXD(P3.0)和TXD(P3.1)构成
  • 1
  • 2
  • 3

七、中断系统

中断系统是计算机的重要指标之一。
在这里插入图片描述

日常生活中的中断与计算机中断的比较:
某人看书 执行主程序 日常事务
电话铃响 中断信号如INT=0 中断请求
暂停看书 暂停执行主程序 中断响应
书中作记号 当前PC入栈 保护断点
电话谈话 执行中断程序 中断服务
继续看书 返回主程序 中断返回

在这里插入图片描述

八、布尔处理器

  MCS-51单片机内含有一个布尔处理器,是单片机CPU中运算器的一个重要组成部分。
  
   它实际上是一个完整的1位微处理器,这个1位机有自己的CPU、位寄存器、I/O口和指令集。可提供17条位操作指令,硬件有自己的“累加器”(进位位C)和自己的位寻址RAM和I/O空间,所以是一个独立的位处理机。
  MCS-51单片机把8位机和1位机复合在一起,发挥各自的长处,这是它的一大优点。
  • 1
  • 2
  • 3
  • 4

2.2 外部引脚功能

MCS-51系列单片机采用40个引脚的双列直插式塑料封装的芯片。
在这里插入图片描述
共可分为四个部分:
1、电源2个
2、外接晶体振荡器2个
3、控制信号引脚4个
4、I/O引脚32个
一、主电源引脚

VDD:接+5V电源

VSS:接地端

一般VDD 和VSS之间应接高频和低频滤波电容。
二、外接晶体振荡器引脚

XTAL1:芯片内部振荡电路(单级反相放大器)输入端
XTAL2:芯片内部振荡电路(单级反相放大器)输出端

振荡频率为晶振频率(1.2~12MHz),另外需两个30pF左右的电容以微调频率
  • 1
  • MCS-51单片机的振荡器有内部和外部两种方式。
    在这里插入图片描述
    1、接石英晶体和微调电容 2、接外部时钟
    时序:时间的先后顺序,控制器按照指令功能发出一系列在时间上有一定次序的信号,控制和启动一部分逻辑电路,完成某种操作。

机器周期=12个时钟周期(振荡周期)
有6个状态(S1~S6),一个状态为2个振荡周期,分为P1和P2节拍,一般算术和逻辑指令发生在P1期间,寄存器之间的传输发生在P2期间。

设单片机工作在12M晶振,则时钟周期为1/12微秒,一个机器周期=12×1/12=1微秒
一些指令完成较快用一个机器周期;一些较慢,用2个机器周期;有两个指令(MUL、DIV)用4个机器周期。
指令周期:执行一条指令的时间。(单周期指令,双周期指令等)

三、控制信号

1、RST/VPD:复位/掉电时内部RAM的备用电源输入端
复位端RST :
启动时,需要复位,使CPU各部件处于确定的初始状态。

正常工作状态(振荡器稳定),该引脚上出现持续24个振荡周期(即两个机器周期)以上的高电平,单片机就可完成系统复位操作 。

  • MCS-51复位后内部寄存器状态

在这里插入图片描述
备用电源输入端VPD:

当无VCC时使用,使内部RAM供电以实现掉电保护。
  • 1

2、ALE/PROG:地址锁存允许/编程脉冲输入。
① ALE:地址锁存允许信号
片外存储器作数据存取时,ALE为低8位地址锁存允许输出信号,在其下降沿将从P0口输出的低8位地址锁存到地址锁存器。
以1/6振荡频率(即1/2机器周期)周期性输出
②PROG:在对8751片内EPROM编程时,编程脉冲由此输入。

3、EA/VDD:访外允许/编程电压输入

①、8031中EA必须接地。
8051/8751中
EA=1,单片机使用片内ROM/EPROM(由PC值决定);
EA=0,单片机片内程序存储器失效,而 使用片外程序存储器。

②、VDD 对8751片内EPROM编程时,此脚接编程电压。(+21V~+25V)

4、 PSEN:外部程序存储器读选通信号

它与ALE配合,使P0口完成地址线和数据线的功能。

当访问片内ROM、RAM时无效。

5、四个8位并行I/O口
MCS-51单片机有4个8位并行I/O口,共占了32根I/O引脚,单片机扩展时,这些I/O引脚又作为扩展总线用。其中P0口作为地址/数据总线,分时输出低8位地址和传送8位数据;P2口作为高8位地址总线;P3口也具有第二功能。这是由接口的特殊结构所决定的。每一个口都包含一个锁存器,一个输出驱动器和两个(P3口为3个)输入缓冲器。各口的结构也有些差异,下面分别介绍

(一)P1口
1、接口结构
在这里插入图片描述

接口结构中锁存器起输出锁存作用,8位锁存器组成特殊功能寄存器P1。
2、接口功能
P1口只有一种功能——通用输入输出接口。

(二)P2口
1、接口结构
P2口一位结构如下图所示,与P1相比,多了一个多路开关MUX,因此P2具有双重功能:通用I/O口和高8位地址总线口。
在这里插入图片描述

2、接口功能
(1)地址总线
单片机扩展时,“控制”信号使 MUX 打向右边,内部的地址线经反相器与输出驱动器相连,于是内部“地址”信号可以由P2口引脚输出,此地址信号为高8位地址。
(2)通用I/O接口
作为通用I/O口时,“控制”信号使 MUX 打向左边,这时P2口电路结构与P1口相同,其功能和用法亦与P1口相同,负载能力也相同。

(三)P3口
1、接口结构
P3口一位的结构如下图所示,与P1口相比多了一个与非门和一个输入缓冲器,所以它除了可作为一般I/O口外,还具有第二功能。
在这里插入图片描述

2、接口功能
(1)通用I/O接口
作为通用I/O接口时,“第二功能输出”线为“1”,接口的电路结构与P1口相同,所以功能和用法均与P1相同。
(2)第二功能
当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(外部数据存贮器读选通)
可见有些信号为输出,有些信号为输入,为使第二功能信号能顺畅的输入或输出,该口锁存器的状态必须为“1”。

(四)P0口
1、接口结构
P0口的一位的结构如下图所示。其中输出驱动电路由一对FET(场效应管)组成,其工作状态由输出控制电路控制。P0口可作为通用I/O接口,也可作为地址/数据总线口。
在这里插入图片描述

2、接口功能
(1)地址/数据总线
这时“控制”信号为1,多路开关MUX向上,地址/数据信号反相后经多路开关送到下一个场效应管的栅极。
如果地址/数据信号为1,则下一个场效应管截止上一个场效应管导通,引脚为高电平;若地址/数据信号为0,则下一个场效应管导通上一个场效应管截止,引脚为低电平,即地址/数据信号可顺利的到达引脚。
(2)通用I/O接口
此时“控制”信号为“0”,多路开关MUX向下,输出驱动器处于开漏状态,故需外接上拉电阻,这种情况下,电路结构与P1相同,所以也是一个准双向口,当要作为输入时,必须先向口锁存器写“1”。
在这里插入图片描述
在这里插入图片描述

2.3 存储器组织

一、存储器空间分类

根据作用分类:
程序存储器ROM
数据存储器RAM

根据位置分类:
片内存储器
片外存储器
构成了4个结构独立的存储器空间
1、片内程序存储器(片内ROM)
8051、8751有4KB的片内ROM(0000H~0FFFH)
2、片内数据存储器(片内RAM)
共有256B
00~7FH:128B片内RAM
80H~FFH:18个特殊功能寄存器(占21B)
3、片外ROM扩展
最多64K片外ROM,地址为0000H~FFFFH或者1000H~FFFFH
注:8051、8751芯片根据EA状态
4、片外RAM扩展
地址:0000H~FFFFH
在这里插入图片描述
MCS-51(8051)存储结构如图所示
在这里插入图片描述
从用户使用的角度,即从逻辑上划分3个存储器地址空间:
片内外统一编址的64KB的程序存储器地址空间
片内片外的程序存贮器在同一逻辑空间中,地址从0000H~FFFFH,共有64K字节范围

片内256B数据存储地址空间
片内数据存贮器为00H~FFH

片外64KB的数据存储器地址空间
片外为0000H~FFFFH
![在这里插入图片描述](https://img-blog.csdnimg.cn/d602d43b57db4230bbf42f0b832c77c7.png

二、区分四个独立空间的方法

1、使用MOV、MOVX、MOVC三个不同的指令分别 区分片内RAM、片外RAM和ROM

2、片外ROM使用控制信号PSEN
片外RAM使用控制信号RD、WR

3、EA引脚接地,从片外ROM开始
0000H~0FFFH 位于片外ROM
EA引脚接高电平,从片内ROM开始
0000H~ 0FFFH位于片内ROM

4、ROM和片外RAM一定要用16位地址
片内RAM 和SFR,只能使用8位地址

三、程序存储器ROM

最多为64K,用于存放程序和表格
使用PC作为程序地址指针
编址方式:片内、片外ROM统一编址(0000H~FFFFH)
片内(如有,4K)为低地址(0000H~0FFFH),片外为高地址
加电复位后,PC=0000H,当PC超出片内,则会自动转向片外ROM
EA引脚控制PC值(8031和8051不同)
MOVC用来读取ROM中存放的表格常数
分为两个部分:
1、系统使用区:其中0000H~0002H为系统复位入口,其中必有一条存放PC的跳转指令(转至主程序);0003H~002AH为各个中断源处理程序使用
2、用户使用区:其余地址空间

四、片内RAM

单片机的数据存储器分为片内RAM和片外RAM,两者单独编址(片内为00~FFH,片外为0000~FFFFH)。一般需要外部扩展时才使用最多64K的片外RAM。
通常将单片机256B的内部数据存储器RAM分为两个部分,一个是片内RAM(占128B) ,一个是特殊功能寄存器SFR(占另外128B的21B)。
片内RAM的128B地址为00~7FH,可分为四个大区:
工作寄存器区、位寻址区、数据缓冲区、堆栈区
在这里插入图片描述

2.4 定时/计数器

一、概述

51单片机的片子上有两个16位的寄存器T0和T1,提供计数或定时功能。

这一功能是通过对脉冲源输入的脉冲信号进行计数(加1)实现的。

定时与计数功能的区别在于:从硬件角度讲,当脉冲源为等间隔脉冲序列时,为定时功能;当脉冲信号间隔不等时,为计数功能。从软件角度讲,T0或T1工作于定时还是计数状态,是由寄存器TMOD中相应的控制位C/T的值控制的。

二、时间常数的计算

要想使用一个计数器,最重要的问题就是它应该计多少。比方现在要让定时器定时1s,1s之后去完成一个什么操作。那么就要解决以下问题:应该让定时器计数几次,每一次计时持续的时间是多长,定时器可以装载的最大计数次数是否够用,计时完成后通过何种方式通知单片机计时结束……只有理解了以上问题,才能确定出应该装入计数器的时间常数,达到准确定时的目的。

1.时间常数的存储——特殊功能寄存器TL0,TH0;TL1,TH1

在51单片机上的特殊功能寄存器(Special Function Register,SFR)区,有两组寄存器是专门用来存放计数器的时间常数的。它们就是TL0,TH0和TL1,TH1,各自都是8位的。其中TL0和TH0分管时间常数的低8位和高8位,控制计数器0;TL1和TH1同理,控制计数器1。

为什么要把低8位和高8位分开存储呢?因为这样可以为计数器提供更多的工作方式。这4个寄存器既用来存放时间常数,同时也可看作4个定时计数器。51单片机的计数器有4种工作方式:方式0,方式1,方式2,方式3。(工作方式的设置是通过设定TMOD寄存器的M1和M0位来控制的)

方式0:13位寄存器,时间常数存储在TLx(x=0,1)的低5位和THx的8位。TLx的高3位无意义。

方式1:16位寄存器。时间常数存储在TLx的8位和THx的8位。

方式2:自动再装入的8位计数器。在方式2中,TLx作为8位计数器,THx负责存储计数初值。当计数溢出时,自动将THx中存储的时间常数送入TLx,使TLx从这一初值开始重新计数。再装入后,THx的值不变。

方式3(仅对计数器T0有效):8位计数器和8位定时器。此方式被称为“鸠占鹊巢”,因为在方式3中,TL0为8位计数器,计数器T0的所有控制位都只为它的低8位——TL0服务。而TH0只能用作定时器,但它此时借用了计数器T1的中断和控制位。当T0工作于方式3时,T1可工作于方式0,1,2,但因为中断标志被T1占用,因而此时T1不能使用中断控制。

2.时间常数值的确定与装载

在计算时间常数值以前,需要知道以下原理:

①1个机器周期=12个晶振周期。即

②定时时间=计数值x机器周期。

③定时计数器以+1方式计数,故:计数值+时间常数=

例 已知晶振频率6MHz,定时器工作于方式0,要求计时1ms。则时间常数为____。

解:6MHz对应的机器周期

计数值

因为定时器是+1计数,方式0的计数位数n=13。

所以时间常数=

将时间常数赋给寄存器的程序代码如下:

MOV TL0,#0CH

MOV TH0,#1EH ;#号表示传递的是立即数而非地址

三、计数器的设置与启动

1.计数器的设置

计数器的设置通过对寄存器TMOD(Timer MODE)赋值而完成。TMOD的控制字结构叙述如下:

位 7 6 5 4 3 2 1 0

GATE C/T M1 M0 GATE C/T M1 M0

高位控制定时器1,低位控制定时器0。

GATE:中断控制位。如果要求只有在关中断的条件下才允许启动计数器,则使GATE=1.否则一般应使GATE=0.

C/T:Counter/Timer.高电平为计数器,低电平为定时器。

M1,M0:工作方式控制位。M1M0=00,01,10,11,分别对应方式0,1,2,3。

2.计数器的启动

计数器的启动通过对寄存器TCON(Timer Control)的赋值而完成。与TMOD不同,TCON允许位赋值,即可以对这个寄存器的每一位单独操作。值得指出的是,TCON的各位除了控制计数器以外,还有控制系统中断响应方式的重要作用。

TCON的控制字结构叙述如下:

位 7 6 5 4 3 2 1 0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

后缀的0/1标志了它控制计数器0还是1.

TFx(Timer Flow x):溢出时自动置1

TRx(Timer Run x):手动置1时启动计数器(当GATE=1且INT=0时,无法启动)

注意:下面的ITx和IEx与计数器无关。x对应的是中断位INTx。即IT0和IE0控制INT0的中断响应方式,IT1和IE1控制INT1的响应方式。

ITx(Interrupt Trigger):决定系统响应何种中断触发方式。ITx=0为电平触发方式,ITx=1为边沿触发方式。

IEx(Interrupt Enable):这一位是为了从硬件原理上能够响应边沿触发而设定的。具体来说,如果ITx=0(x=0,1),亦即电平触发,那么只要INTx=0,系统立马就响应中断了,自不必说。但如果ITx=1,也就是边沿触发,这时候系统需要在INTx口检测一个高电平和紧接着的一个低电平,才能触发中断。为了记录这个顺序,当检测到一高一低时,系统硬件会把IEx置为1,这时候CPU只要检测IEx的电平高低就可以判断是否响应中断了。

换句话说,ITx=0时,IEx是没用的;当ITx=1时,系统硬件通过检测IEx的高低判定中断的响应。

回到计数器的话题,要想启动计数器,一般只需要将TRx置为1即可。

四、计数器的中断

工作原理
定时器/计数器实际上是加1计数器
当它对外部事件进行计数时,由于频率不固定,此时称之为计数器;
当它对内部固定频率的机器周期进行计数时称之为定时器。
在这里插入图片描述

1.系统中断的触发与控制

计数器计数溢出时会使标志位TFx(Timer Flow)置1。如果系统允许中断,则会触发中断。进入中断程序后,就可以完成用户希望进行的操作了。

要想使系统允许中断,需要对控制中断的寄存器IE(注意!与IE0,IE1不是一个东西。IEx是TCON里的一位,而IE是一个8位的特殊功能寄存器)进行设置。

IE的控制字格式叙述如下:

位 7 6 5 4 3 2 1 0

EA x x ES ET1 EX1 ET0 EX0

EA(Enable):系统中断的总控制位。只有EA=1时,才允许中断。EA=0时,禁止一切类型的中断。

例:程序 SETB EA 表示开中断。此指令执行完后,CPU便可接收中断响应请求。

ES(Enable Serial):串行通道中断允许位

ETx(Enable Timer x):计数器中断允许位

EXx(Enable External x):外部中断允许位

例:希望允许系统响应定时器1的中断,则应该先开定时器1中断,再开系统中断。这样写:

SETB ET1

SETB EA

2.中断服务程序地址

不同的中断触发源引起的中断程序段需要从指定的地址开始存储。若主程序从0000H开始,则定时器T0的中断程序入口地址为000BH,T1为001BH。CPU从此地址开始执行中断程序直到遇到RETI(Return Interrupt)为止。

程序格式为:ORG 000BH

…(中断程序内容)

RETI

五、计数器程序编写举例
到现在为止,我们终于具备了编写单片机计数器程序的主要知识。下面将通过实例进一步分析计数器程序的编写。

题1 设定时计数器T0工作在定时状态,方式1,定时时间2ms。每当2ms到时申请中断,中断程序中将累加器A的内容左环移一次送P1口。已知晶振频率为6MHz。编写程序实现上述功能。(累加器A的初值可给定为01H)

解:首先搭一个汇编程序框架

ORG 2000H ;程序起始地址

AJMP MAIN ;AJMP为绝对跳转指令,跳转至主程序入口MAIN

ORG 200BH ;中断程序起始地址

RETI ;中断返回

MAIN: ;主程序入口地址

接下来就可以往里面添功能了。依题意,机器周期为12/6MHz=2μs。计数值为2ms/2μ=1000.工作方式1的位数为16位,所以应装入的时间常数为2^16-1000=64536 =FC18H。

(1)主程序的编写

MAIN:

首先应指定堆栈区地址:MOV SP,#53H (虽然本程序堆栈没什么用,不过还是写上)

给定A的初值:MOV A,01H

给时间常数:MOV TL0,#18H

MOV TH0,#0FCH ;字母开头的立即数前面要加0

设定工作方式:MOV TMOD,#05H ;其实控制字就是00000001B

启动:SETB TR0 ;SETB是位寻址的专用指令,可以位寻址的位不能用MOV赋值

开计数器中断:SETB ET0

开系统中断:SETB EA

之后,就需要让程序循环执行,等待计数器溢出时,中断就会自动响应:

SJMP $ ;$表示本条指令地址,意即反复执行此条指令,直到中断来临为止

(2)中断程序的编写

ORG 200BH

中断程序完成的功能是将累加器A的内容左环移一次送P1口。这一功能通过如下指令完成:

RLC A

MOV P1,A

之后还需要对计数器重新置数,以便中断返回后重新计数。

MOV TL0,#18H

MOV TH0,#0FCH

RETI ;中断返回

至此,所有程序编写完成。总览如下:

ORG 2000H

AJMP MAIN

ORG 200BH

RLC A

MOV P1,A

MOV TL0,#18H

MOV TH0,#0FCH

RETI

MAIN:

MOV SP,53H

MOV TMOD,#01H

MOV A,#01H

MOV TL0,#18H

MOV TH0,#0FCH

SETB TR0

SETB ET0

SETB EA

SJMP $


题2 设定时计数器T0工作在方式2,TL0为8位计数器,TH0为数据缓冲器,可自动再装入时间常数,产生500μs定时中断。在中断服务程序中把A减1送P1口。晶振频率为6MHz。编写程序实现上述功能。

解:时间常数为6

ORG 2000H

AJMP MAIN

ORG 200BH

DEC A

MOV P1,A

RETI

MAIN:

MOV SP,#53H

MOV TMOD,#02H ;TMOD=00000010B=02H

MOV TL0,#06H

MOV TH0,#06H

SETB TR0

SETB ET0

SETB EA

SJMP $

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/456097
推荐阅读
相关标签
  

闽ICP备14008679号