版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、明德 厚学 沉毅 笃行,单片微机原理与接口技术,主 讲: 蒋书波 参考教材:例说51单片机(第3版)(C语言版),目录,第一章 单片机系统设计入门 第二章 深入探讨单片机系统硬件设计 第三章 内部RAM存储空间 第四章 MCS51指令系统 第五章 伪指令 第六章 输出口的应用 第七章 输入口的应用 第八章 外部RAM的扩展,目录,第九章 中断的应用 第十章 定时器/计数器的应用 第十一章 串行口的应用 第十二章 C程序设计规范 第十三章 STC89C52RC 第十四章 液晶显示技术 第十五章 DS18B20温度传感器,明德 厚学 沉毅 笃行,第一章单片机系统设计入门,1,第一章 单片机系统设计
2、入门,什么是单片机 单片机系统设计案例 硬件设计简介 软件设计 AT89S51内部结构简介,明德 厚学 沉毅 笃行,什么是单片机,1,什么是单片机,一个单片的微型计算机 英文简写:MCU (Microcontroller Unit),AT89S51芯片文字说明,ATMEL : 公司名 AT89S51: 芯片型号 1-3 24PU: 最大晶振24M,工业级(PC为民用级) 0940A: 09年第40批,STC89C52,STC89C52芯片文字说明,STC : 公司名 89C52RC: 芯片型号39 40C: 最大晶振40M,民用级(I为工业级) PDIP: 封装类型 40:引脚数,STC89C
3、52同AT89S51的区别,STC89C52功能更多,更强。 STC89C52兼容AT89S51的功能。 具体区别,后面会陆续介绍。,明德 厚学 沉毅 笃行,单片机系统设计案例,1,单片机系统设计案例,例题:1个LED闪烁(汇编) 功能:用汇编语言编写程序实现1个LED闪烁,并在学习板上运行。 硬件设计简介 软件设计,明德 厚学 沉毅 笃行,硬件设计简介,1,电路图,AT89S51,AT89S51一共有多少个引脚? 引脚号的确定:缺口朝上,左边最上面的引脚为1号引脚,晶振电路,提供时间基准 晶振频率越高,指令执行速度越快。,复位电路,复位电路后面的课程详细讲。,存储器设置电路,31号引脚接高电
4、平,使用内部ROM;接低电平,不使用内部ROM。,电源,双列直插式芯片的电源引脚一般为: 左下角接地 右上角接电源正极 图中的C6起滤波作用,以后详细讲。,LED电路,LED电路,参考如下:,思考,当P1.0引脚电压为0时,发光LED亮还是灭? 当P1.0引脚电压为VCC时,发光LED亮还是灭?,电路图,AT89S51硬件电路的最小系统,上述电路图除发光LED电路外的其它电路都是单片机正常工作必不可少的,称为单片机硬件电路的最小系统。,课堂练习,打开42。在学习板电路图中找到单片机最小系统(晶振电路、复位电路、存储器设置电路、电源)的电路图。 透彻理解该部分电路,并利用万用表,在学习板上找到相
5、关元器件。 分析学习板电路图上LED的电路,并在学习板上找到相关元器件。,明德 厚学 沉毅 笃行,软件设计,1,集成开发环境,Keil Vision 是单片机最流行的集成开发环境。 目前的最新版本是Keil Vision 4。 该环境可支持多种汇编语言和C语言。,课堂练习:Keil Vision的安装,大家跟我一起来安装Keil Vision 如果需要Keil对STC的支持,参考41,汇编语言,由于二进制指令代码(机器语言)阅读困难,难以记忆,可通过一些容易记忆的符号代替二进制指令代码,来编写程序,然后,通过对程序进行汇编,翻译成机器语言烧写到ROM中。 这种用助记符代替二进制指令代码的语言就
6、是汇编语言。,读懂例题程序,打开例题项目文件,读懂例题程序。,将例题程序烧录到学习板上,将程序烧录到芯片中,需要编译生成 “ *.hex ” 文件 选中: Target optionsoutput“create HEX file” 后,点击“rebuild”图标,生成“ *.hex ” 文件 STC单片机可通过串口“烧录”程序 安装STC烧录程序软件 烧录程序,课堂练习,修改例题,在学习板上实现2个LED交替闪烁。,学会自己建立项目,新建一个文件夹,用于存放项目文件。 文件夹的名称可根据需要任意设定。 建1个名称为“v0.0.0”的子文件夹,该名称为该项目的版本号(见下页) 在项目中添加“ma
7、in.asm”文件,用于编写汇编程序。,版本号添加规范,版本号添加规范:v0.0.0 当版本号带有第3个数字时,为调试版本,当修改程序时,需保存老版本,并增加该数字的值在新版本上修改。 当程序调试成功,可以发布时,可增加中间的数字,并去掉第3个数字。 当可发布的版本有重大改进,可增加第1个数字。,课堂练习,新建项目,在项目中添加“main.asm”文件,并在该文件中编写汇编代码实现: 1P83霹雳灯实验。,明德 厚学 沉毅 笃行,AT89S51内部结构简介,1,AT89S51的内部结构图,单片机的内部结构,单片机的内部结构主要有以下几部分: CPU ( Central Processing U
8、nit ,中央处理器) ROM ( Read-Only Memory,只读存储器) RAM ( Random Access Memory,随机存取存储器) 其它内部设备,单片机系统设计,单片机系统设计包括: 硬件设计(上图中的绿色部分) 软件设计(上图中的黄色部分) 硬件设计:设计单片机及外部设备的硬件电路 软件设计:用C语言或汇编语言编写程序并烧写到ROM中,CPU,CPU也称为内核 内核为MCS51的单片机统称为51系列单片机 AT89S51、STC89C52均为51系列单品机 CPU的作用:读取指令,执行指令,指令5,基于MCS51核的汇编指令有111条 这些指令都是用机器语言(二进制代
9、码)来表示 指令的单位是字节(Byte) 1字节为8位(bit) 每条指令的长度为1-3B 为什么有些指令超过1个字节呢 指令代码可以通过烧写器写到ROM中,指令周期,每条指令执行时间为1-2个机器周期(乘除指令除外) 1个机器周期 = 12 * 晶振振荡周期 思考:如果晶振选用12MHz,执行1条单片机指令需要多长时间?,思考,如果晶振是12M, 案例中延时子程序的精确延时时间是多少?,ROM,ROM: 用于存放指令代码 MCS51核可读取(不能写) ROM中的指令代码。 MCS51核通过内部总线读取内部ROM。,内部总线,内部总线分为: 地址总线 数据总线 控制总线,思考,AT89S51的
10、内部ROM地址范围是? AT89S51的内部ROM中最多可存放多少条指令? 答: 0 x0000- 0 x0fff 答: 2000条左右,思考,STC89C52的内部ROM为8K,其地址范围是? 答: 0 x0000- 0 x1fff,程序计数器PC,作用:存放CPU将要读取的ROM地址 占用2个字节 默认值为:0 x0000 读取ROM1个字节后,PC值自动加1,CPU,CPU也称为内核 内核为MCS51的单片机统称为51系列单片机 AT89S51、STC89C52均为51系列单片机 CPU的作用 :读取指令,执行指令,ROM的读取过程(自动),CPU端: 1.将PC值通过地址总线送出 3.
11、给读ROM控制总线短暂低信号 5.将数据总线数据读至CPU 6.PC值自动加1 ROM端: 2.根据地址选中相应存储单元 4.当有读ROM控制总线有低信号时,将选中的单元数据送数据总线。,RAM空间,MCS51核内部RAM空间是256个字节 地址范围是:0 x00-0 xff 其中, 0 x00-0 x7f 为128B的RAM, 0 x80-0 xff散布着20多个(不同型号数量不同)专用寄存器(见图)。,专用寄存器,有专门用途的存储单元,CPU的作用,读取指令,执行指令 自动:读ROM,读写RAM,永不停息。,内部设备,CPU通过对专用寄存器的读写间接控制内部设备。,外部设备,外部设备通过引
12、脚连接到部分内部设备上 CPU通过对专用寄存器的读写间接控制内部设备,进而控制外部设备。,例题,进入软件调试状态,单步调试程序,观察P1口引脚变化、 RAM的变化、 ROM中的值、 PC的变化,熟悉CPU工作原理。,课后练习,熟悉keil编程环境,熟悉keil调试环境 熟悉程序的烧录过程。 通过调试程序,熟悉MCS51核的工作原理。 编程实现:利用软件延时实现LED每隔1秒定时闪烁,并在学习板上试验。 参考资料42,P1口和8个LED灯。 复习:C语言,明德 厚学 沉毅 笃行,第二章深入探讨单片机系统硬件设计,1,第二章 深入探讨单片机系统硬件设计,复位电路 电源电路 LED电路 单片机IO口
13、的内部结构简介,提问,CPU,RAM,ROM的作用是? CPU的工作过程是?,明德 厚学 沉毅 笃行,复位电路,1,复位电路,复位电路,单片机9号引脚保持高电平(2.8V)时间超过10ms 时, AT89S51自动复位。 思考:复位电路上电后,9号引脚电压如何变化?请写出电压变化公式。,三个重要公式,复位电路分析,课堂练习,求9号引脚电压值。,电容电压求解,9号引脚电压,9号引脚电压变化曲线图,电容和电阻的取值,当t=RC时,9号引脚电压约为0.37*VCC 通常:电阻选择10K,电容选择10uF 此时, 9号引脚电压保持高电平(2.8V)时间接近100ms,可以可靠复位。,思考,思考:复位电
14、路可否采用大电阻小电容形式? 答:也可以。但该电路抗干扰能力差。 思考:如何添加复位键?,课本中添加复位键的方法,思考,上图有一个缺陷,是什么? 答:按键需串联1个小电阻,防止电容损坏。,明德 厚学 沉毅 笃行,电源设计,1,思考,普通5V稳压电源能直接给单片机供电吗? AT89S51单片机的供电电压:4V-5.5V 我们先研究一下普通稳压电源的内部结构。,稳压电源的内部结构图,(a)是普通稳压电源的内部结构图 (b)是未加电容时输出电压波形图。,添加电容后输出电压波形图,电容越大滤波效果越好(RL为负载电阻)。,电解电容,大容量电容几乎都是电解电容。主要有两种: 铝电解电容 钽电解电容 铝电
15、解电容一般简称:电解电容 钽电解电容一般简称:钽电容,电解电容规格,额定耐压值需大于正常工作电压的2倍。 常见耐压值有: 6.3V、 10V、 16V、 25V、 35V、 50V、 63V、 80V、 100V、 250V、 400V 、 500V、630V。 常见电容值有:0.47uF、 1.0uF、 2.2uF、 3.3uF、 4.7uF、 10uF、 22uF、 33uF、 47uF、 100uF、 220uF、 330uF、 470uF、 680uF、 1000uF、 2200uF、 3300uF、 4700uF、 6800uF,钽电容规格,额定耐压值需大于正常工作电压的2倍。 常见
16、耐压值有: 6.3V、 10V、 16V、 25V、 35V。 常见电容值有:0.47uF、 1.0uF、 2.2uF、 3.3uF、 4.7uF、 10uF、 22uF、 33uF、 47uF、 100uF、 220uF、 330uF、 470uF、 680uF,电解电容,钽电容,电解电容与钽电容比较,电解电容 优点:价格便宜,耐压值高,容量大 缺点:误差大,稳定性差,寿命低。 钽电容 优点:误差小,稳定性高,寿命高。 缺点:价格高,耐压值低,稳压电源能直接给单片机供电吗?,答:不可以,稳压电源的电源电压波动太大,直接给单片机供电,将影响单片机工作的稳定性,甚至会损坏单片机。 一般需添加稳压
17、芯片。,常见的稳压芯片7-10,线性稳压芯片:LM7805,LM1117 开关稳压芯片:LM2596 观察学习板上使用的稳压芯片。,LM7805 7,性能指标 输出电压: +5V 输出电流: 1A (添加散热器可达1.5A) 线性调整率: 100mV 负载调整率: 100mV 输入电压: 8V-15V 淘宝价格: 约0.5元,线性调整率和负载调整率,线性调整率:输入电压变化时输出电压变化指标 负载调整率:负载变化时输出电压变化指标,lm1117-3.3 8,性能指标 输出电压: +3.3V 输出电流: 800mA 线性调整率: 0.2% 负载调整率: 0.4% 输入电压: 4.75V-10V
18、淘宝价格:约0.2元,Lm2596 5.0 9,性能指标 输出电压: +5.0V 输出电流: 3A 输出电压误差: 4% 输入电压: 7V-40V 效率: 80% 淘宝价格:约2元,关于输出电流,如果系统长期运行,系统中稳压芯片的实际输出电流不能超过额定电流的1/3。,学习板电源电路,下面我们来研究一下,学习板的电源电路。 请同学们拿出学习板,观察学习板电源电路的相关元器件。,学习板电源电路图,思考,为什么稳压芯片两端需加电容? 答:电源滤波。,思考,为什么用两个电容并联? 这个问题比较复杂,先学习一下基本知识。,电解电容,电解电容并不是理想地呈现容性,也存在很小的电阻和电感。,电解电容的阻抗
19、,电解电容的阻抗,电解电容的电阻和电感非常小,因此,当频率较低时,电解电容呈现容性。 但是,当频率非常高时,电解电容反而呈现感性。,电解电容阻抗随频率变化的图形,电解电容,结论:电解电容可以滤除电源电路中的低频干扰,但不能滤除高频干扰。 11,12 陶瓷电容感性非常小,可以滤除高频干扰。 独石电容和薄膜电容现在使用越来越少。,贴片陶瓷电容,独石电容,薄膜电容,课堂练习,请画出陶瓷电容阻抗随频率变化的图形,并与电解电容进行比较。,学习板电源电路中的电解电容,思考:C1、C2的作用? C1的电容值一般大于C2,防止断电后C1放电过快,稳压芯片电压反转损坏芯片。 思考:当外接稳压电源时,C1可以省略
20、吗?,学习板电源电路中的的电容,C3、C4用于滤除高频干扰,该电容的正极需尽可能靠近稳压芯片的管脚。 一般情况下,高频干扰对IC芯片影响较大,而PCB板的走线很容易受环境影响产生高频干扰信号。 解决办法:在每个芯片的输入电源处加一个0.1uF的高频滤波电容,并尽可能靠近芯片的电源正极引脚。,提问:C6的作用是?,明德 厚学 沉毅 笃行,LED电路,1,思考,限流电阻取多大比较合适?,LED(Light-Emitting Diode),LED即发光二极管,一般电流达到3mA以上可正常发光 特性如图,当电压达到约1.7V时,电压变化很小。,限流电阻,为使LED正常发光,例题中的限流电阻不能超过 1
21、K LED的电流最好不要超过100mA,否则容易被烧坏。,思考,限流电阻取100R可以吗? LED可以反接吗? 我们还需要进一步熟悉单片机IO口的内部结构。,例题,硬件知识学晕了吧?下面讲软件缓解一下。 例题:1个LED闪烁(汇编改进版) 例题:1个LED闪烁(C语言),明德 厚学 沉毅 笃行,单片机IO口的内部结构简介,2,单片机IO口简介,单片机有4个输入输出口(P0、 P1、 P2、 P3),每个口8个引脚,共32个引脚均可接LED电路。,思考,AT89S51单片机一共多少个引脚? 有多少引脚我们已经学过了? 还剩/P/S/E/N引脚和ALE引脚没学过。 这两个引脚现在已经很少使用,后面
22、会简单提及这两个引脚的接法。 下面对P1口的引脚作部分讲解。,单片机P1.x的内部结构,P1.x的内部结构,P1.x主要由1个D锁存器,两个三态门,1个上拉电阻(约30K)和1个场效应管组成。 可实现的功能:写引脚,读引脚,读锁存器。 今天,我们仅研究写引脚。,P1.x的D锁存器,D锁存器的工作原理。 D: 接内部数据总线(共8根)中的1根 CL:由“写RAM”控制总线 + 地址总线共同得到锁存信号。,写引脚举例,指令:MOV 0 x90, #0 xfe CPU端: 1. CPU将#0 xfe送内部数据总线 3. CPU将#0 x90送地址总线 4. CPU给“写RAM”控制总线控制信号 P1
23、.0引脚: 2. D锁存器的D端得到信号“0” 5. D锁存器的CL端得到上升沿信号 6. D锁存器的/Q端锁存为信号“1” 7. 场效应管导通,P1.0引脚呈现电压0,AT89S51引脚的驱动能力,当引脚流过的电流过大时,容易引起单片机工作不稳定,甚至损毁。 AT89S51引脚的驱动能力: P0口-P3口的每个引脚: 10mA P1口- P3口的8个引脚合计: 15mA P0口的8个引脚合计: 26mA,STC89C52引脚的驱动能力,STC89C52引脚的驱动能力: P0口的每个引脚: 12mA P1口-P3口的每个引脚: 6mA 参见44P62,回答思考题,限流电阻取100R可以吗? 答
24、:不可以,超过AT89S51芯片引脚的驱动能力。 当该芯片P1口仅接1个LED时,限流电阻一般可取为:330R 1K 。 LED可以反接吗? 答:不可以,由于内部上拉电阻较大,使电流太小, LED不亮。,LED电路,思考,限流电阻取500R可以吗? 答:可以取470R或510R 6 ,最好不要取500R, 500R的电阻不好买,价格较高,第二章课后练习,用学习板实现十字路口交通灯系统,其中,绿灯切换为红灯前用黄灯过渡1秒钟(用汇编语言和C语言两种语言编写) 。熟悉电解电容的特性和低频滤波功能。 熟悉陶瓷电容的特性和高频滤波功能。 熟悉电容的相关公式。 熟悉IO口的内部结构。,明德 厚学 沉毅
25、笃行,第三章内部RAM存储空间,6,第三章 内部RAM存储空间,内部RAM区 通用寄存器区 位寻址区 堆栈区 普通存储区 专用寄存器区 位寻址区相关指令,AT89S51的内部结构图,内部RAM存储空间,内部RAM存储空间,内部RAM存储空间分为两部分: 内部RAM区 专用寄存器区 内部RAM区:128B(0 x00-0 x7f) 专用寄存器区:散布着若干个专用寄存器。 专用寄存器区的剩余空间未被使用。,内部RAM,内部RAM又分为: 通用寄存器区 位寻址区 堆栈区 普通存储区,内部RAM,通用寄存器区,R0-R7共4组(0组,1组,2组,3组) 地址分别为:0 x00-0 x07, 0 x08
26、-0 x0f, 0 x10-0 x17, 0 x18-0 x1f 上电复位后,默认使用第0组通用寄存器。,例题,观察例题(1个LED闪烁汇编改进版)调试过程中通用寄存器区值的变化。,MOV P1, #0 xfe,为便于编写对专用寄存器的读写操作指令,专用寄存器均可用特定的符号代替专用寄存器的地址。 在汇编时,自动将符号转换为相应的地址值。 观察该指令代码与上次课例题相应的指令代码是否相同。,MOV R7, #0 xff,观察该指令代码与上次课例题相应的指令代码是否相同。 观察该指令执行后,RAM的变化与上次课例题是否相同。 结论:用不同的指令,实现了相同的运行结果。,两条指令代码的区别4,MO
27、V direct,#data 指令代码:75H 操作内容:directdata 字节数: 3 机器周期:2 MOV Rn, #data 指令代码:0 x780 x7F 操作内容:Rndata,n07 字节数: 2 机器周期:1,两条指令代码的区别,第1条指令可以写整个内部RAM空间 第2条指令只能写通用寄存器 第2条指令效率更高:占用空间小,执行速度快。 一般子程序中的临时变量多使用通用寄存器。,通用寄存器组,在子程序调用时,如果主程序中已经使用了通用寄存器,在子程序中使用同样的通用寄存器后,再返回会引起错误。 为什么?怎么解决? 子程序调用时,可以改变寄存器的组号。 通用寄存器组号的更改通过
28、写专用寄存器PSW(程序状态字)实现。,PSW(0D0H),P: 奇偶校验位(自动变化) CY: 进位标志(自动变化);位累加器 RS0、RS1: 寄存器组选择位,课堂练习,写出改用第1组通用寄存器的指令。 答:MOV PSW, #0X08,课堂练习,观察下列指令执行后内部RAM的变化: MOV A, #0X08 MOV PSW, A SETB C CLR RS0 SETB RS1 MOV R2, #0X55,间接寻址,通用寄存器中的R0、R1还支持间接寻址。,课堂练习,观察下列指令执行后内部RAM的变化: MOV R0, #0 x30 MOV R0, #0 x55 试试看以下指令是否错误?为
29、什么? MOV R2, #0 x55 MOV 0 x00, #0 x55,课堂练习,观察下列指令执行后PSW的值: MOV A, #0X10 MOV PSW, A 观察下列指令执行后内部RAM的变化: MOV PSW, #0X08 MOV R2, #0X55,提问,AT89S51的内部RAM空间是多大? AT89S51的内部RAM是多大? AT89S51的内部RAM分为几个区? 通用寄存器共几组?每组几个? 哪些通用寄存器可间接寻址?,STC的内部RAM,STC的内部RAM为512B。 STC的内部RAM中有128B,读写方式同AT89S51相同。其余字节的读写方式以后介绍。,明德 厚学 沉毅
30、 笃行,位寻址区,1,位寻址区,内部RAM中,0 x20-0 x2f共16个单元可以进行位操作,且有专门的位地址。 专用寄存器区也有11个专用寄存器可以进行位操作,且有专门的位地址。 PSW、P0、 P1、 P2、 P3都可位操作。 指令系统中与位操作相关的指令有17条。见20第三章P68,内部RAM中位寻址区位地址,从0 x20.0-0 x2f.7共128位,位地址为:0 x00-0 x7f。,位寻址区的位地址(部分),思考:空白处的位地址,思考,0 x22.4的位地址是? 0 x2f.0的位地址是? 答:0 x14,0 x78,11个专用寄存器位地址,明德 厚学 沉毅 笃行,位操作的相关指
31、令,1,位操作的相关指令,位传送指令 2条 位修改指令 6条 位逻辑与指令 2条 位逻辑或指令 2条 位条件转移指令 5条,位传送指令,MOVC,bit MOVbit,C,课堂练习,下列关于位操作的指令正确吗? MOV C, 0 x20.7 MOV 0 x90, C MOV C, #0 x01 MOV C , 0 x90.0 MOV C , 0 xc0 MOV 0 x01 , 0 x02 答: ,课堂练习,观察下列指令执行后内部RAM的变化: MOV 0 x20 ,#0 x55 MOV C,0 x01 MOV 0 x90,C MOV C, 0 x20.0 MOV P1.0 ,C,课堂练习,写出
32、将0 x20.1中的值传送到0 x20.0中的指令。 答: MOV C, 0 x20.1 MOV 0 x20.0, C,位修改指令,CLRC CLR bit CPL C CPL bit SETB C SETB bit,课堂练习,观察下列指令执行后内部RAM的变化: MOV 0 x20 ,#0 x55 CPL 0 x20 SETB C CLR 0 x20.6 SETB 0 x07 CLR C,课堂练习,使用位修改指令,改进第1个例题,并在学习板上实现。,位逻辑与指令,ANL C,bit ANL C,/bit,课堂练习,观察下列指令执行后内部RAM的变化: SETB C ANL C, 0 x00
33、SETB C ANL C, /0 x00,位逻辑或指令,ORLC,bit ORLC,/bit,课堂练习,观察下列指令执行后内部RAM的变化: ORL C, /0 x00 CLR C ORL C, 0 x00,位条件转移指令,JC rel ;如Cy=1,转移 JNC rel ;如Cy=0,转移 JB bit,rel;如bit =1,转移 JNB bit,rel;如bit =0,转移 JBC bit,rel;如bit =1,转移, 并清0,JC rel,指令代码:40H 操作内容: 若(C)1,则PC(PC)+2 若(C)1,则PC(PC)+2+rel 字节数: 2,关于rel,rel占用1个字节
34、,因此跳转范围受到限制。 写汇编程序时,可以用标号代替rel,汇编时,该标号会被计算好的rel值。,课堂练习,打开案例“JC指令”,先看懂程序,然后输入不同的R0值调试程序,观察运行结果。 案例中用到新的指令:“CJNE A,dircet,rel ”请参考4自学,例题,用AT89S51实现熟悉例题(1个LED闪烁C语言)的反汇编程序,C语言与汇编语言比较,C语言优点: 可读性好 移植性好 编写容易 汇编语言优点: 代码效率高 C语言成为主流,但学习汇编语言有利于熟悉微机原理和更好地编写C语言程序,明德 厚学 沉毅 笃行,堆栈区,1,堆栈区,作用:子程序或中断程序调用时保护断点和保护现场 堆栈区
35、的地址: 0 x08-0 x7f(默认) 堆栈区的大小可通过改变SP的值来实现。 SP(0 x81):堆栈指针,默认值是0 x07 堆栈操作遵循的原则是:先进后出。 通过课堂练习来熟悉SP和堆栈区的作用。,课堂练习,观察“1个LED闪烁(汇编改进版)”例题的RAM变化 添加指令“MOV SP, #0X60”后,观察RAM的变化。,课堂练习,观察“堆栈区”例题的RAM变化 例题中涉及新的指令,请参考4,子程序(中断程序)调用过程,汇编程序: 子程序(中断程序)调用时,自动保护断点,人工保护现场; 子程序(中断程序)退出时,人工恢复现场,自动恢复断点。 C程序:全部自动保护,明德 厚学 沉毅 笃行
36、,普通存储区,1,普通存储区,内部RAM均可作为普通存储区。 熟悉普通存储区的相关指令。(direct),累加器A,累加器A是使用最频繁的寄存器,与A相关的指令最多。 熟悉与累加器A相关的指令。,专用寄存器,思考:我们已经学过的专用寄存器有哪些? 答:P0, P1, P2, P3,PSW,SP, PC,ACC 其余专用寄存器我们会陆续学习,第三章课后练习,熟悉内部RAM存储空间。 参考4-5,理解位操作指令,熟悉其余汇编指令。 用学习板实现十字路口交通灯系统,其中,绿灯切换为红灯前用黄灯过渡1秒钟(用C语言编写,并熟悉其反汇编程序)。,回答问题,电容的滤波原理 复位电路原理 MOV P1, #
37、0 xfe的执行过程 子程序调用时,内存变化情况,明德 厚学 沉毅 笃行,第四章 MCS51指令系统(基本了解),1,第四章 MCS51指令系统,数据传送类指令(28条) 算术运算类指令(24条) 逻辑操作类指令(25条) 控制转移类指令(17条) 位操作类指令(17条),MCS51指令系统,MCS51指令系统共111条指令,按功能分为五类: 数据传送类指令(28条) 算术运算类指令(24条) 逻辑操作类指令(25条) 控制转移类指令(17条) 位操作类指令(17条),明德 厚学 沉毅 笃行,数据传送类指令(28条),1,以A为目的操作数的指令,MOVA,Rn MOVA, Ri MOVA,di
38、rect MOVA,#data,A与ACC,观察和思考下面指令的区别: MOV ACC , #0 x33 MOV A , #0 x33 答:2条指令不同,但效果相同。第1条指令等同于: MOV 0 xE0 , #0 x33;第2条指令代码效率更高。,MOVA, Ri,为间接寻址标识。 内部RAM空间的间接寻址不能寻址专用寄存器区。,STC89C52的内部RAM,STC89C52内部有512B的RAM AT89S52内部有256B的RAM AT89S52内部RAM中低128B的读写方法同AT89S51,高128B的读写方法只能采用间接寻址。 STC89C52内部RAM中低256B的读写方法同AT
39、89S52 ,高256B的读写方法以后介绍 。,AT89S52高128BRAM读写方法,汇编: MOV A, Ri MOV Ri, A C语言: unsigned char idata test;,课堂练习,观察下列程序的反汇编代码: unsigned char t1; unsigned int data t2; unsigned int idata t3; t1 = 0 x11; t2 = 0 x2222; t3 = 0 x3333;,以Rn为目的操作数的指令,MOV Rn ,A MOV Rn ,direct MOV Rn ,#data,课堂练习,写出将R2中的内容转到R1中的指令。,以di
40、rect为目的操作数的指令,MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,Ri MOV direct,#data,以寄存器间接地址为目的操作数的指令,MOVRi,A MOVRi,direct MOVRi,#data,16位地址传送指令,MOVDPTR,#data16,DPTR,DPTR是16位的专用寄存器, 用于存放16位地址,后面会详细讲。 它由2个8位专用寄存器组成: DPL (0 x82) DPH(0 x83) 上述也可写成: MOVDPH,#data MOVDPL,#data,堆栈操作指令,PUSH direct P
41、OP direct,课堂练习,将PSW中的内容读入A,下列指令正确的是: (1) MOV A, PSW (2) MOV A, 0D0H (3) MOV R0, #0D0H MOV A, R0 (4) PUSH PSW POP ACC 答: (1) (2) (4),外部RAM传送指令(后面详细讲),MOVX A,DPTR MOVX A,Ri MOVX DPTR,A MOVX Ri ,A,查表指令(后面详细讲),MOVC A,A+PC MOVC A,A+DPTR,字节交换指令,XCHA,Rn XCHA,direct XCHA,Ri XCHD A,Ri ;半字节交换,课堂练习,编写程序,测试字节交换
42、指令和半字节交换指令,明德 厚学 沉毅 笃行,算术运算类指令(24条),1,加法指令,ADD A,Rn ADD A,direct ADD A,Ri ADD A,#data ADDC A,Rn ;带进位标志加 ADDC A,direct ADDC A,Ri ADDC A,#data,加法指令说明,所有加法指令都有A参与,且结果存于A中。 加法指令对所有的标志位(Cy、Ac、OV、P)都有影响。,加法指令对标志位的影响,如果有溢出(位7有进位),则Cy=1,否则Cy=0 如果有符号数有溢出(位6有进位,位7没有进位,或者位7有进位,位6没有进位),则OV=1 ,否则OV=0 如果位3有进位(已很少
43、使用,可不学),Ac=1,否则Ac=0,课堂练习,观察下面指令运行后,RAM的变化: MOV A, #0 xff ADD A, #0 x02 结果:PSW = 0 xc1;A = 1 观察下面指令运行后,RAM的变化: MOV A, #0 x7f ADD A, #0 x02 结果:PSW = 0 x44 ;A = 0 x81,课堂练习,观察下面指令运行后,RAM的变化: MOV A, #0 xff ADD A, #0 xff 结果:PSW = 0 xc1 ;A = 0 xfe 观察下面指令运行后,RAM的变化: MOV A, #0 xf0 ADD A, #0 x81 结果:PSW = 0 x8
44、4 ;A = 0 x71,课堂练习,下列指令执行后, ,RAM的变化 SETB C MOV A,0 x50 ADD A, 0 x50 ADDC A, 0 x50 答: A = 0 xf0,思考,如果1个单元(单字节)用于存放无符号整数(正整数),该单元可存放值的范围是? 答:0255 如果2个单元(双字节)用于存放无符号整数(正整数),该单元可存放值的范围是? 答:065536,例题,双字节无符号加法。,思考,如果用补码表示有符号整数(整数), 1个单元(单字节)可存放值的范围是? 答:-128127,补码,补码的最高位为符号位,“0”,表示正数,“1” 表示负数 下面举几个补码的例子,请大家
45、思考补码是如何表示的: 0 xff代表-1 0 xf0代表-16 0 x80代表-128 0 x7f代表+127,思考,连续2个单元(双字节)中,如果存放的是有符号整数, 值的范围是? 答:-3276832767,例题,双字节有符号加法。,课堂练习,编程实现单字节有符号加法,结果存在两个单元中。,增1指令,INC A INC Rn INC direct INC Ri INC DPTR,课堂练习,下面指令执行后,A = ? MOV A, #0 x33 INC A 下面指令执行后,A = ? CY = ? MOV A, #0 xff INC A,增1指令,增1指令不影响标志位(除P外)。,十进制调
46、整指令,DA A 对压缩的BCD码(一个字节存放2位BCD码)的加法结果进行十进制调整。 BCD码现在已经很少使用。,例题,观察和分析下列指令执行后的结果: MOV R7, #0X50 MOV A, #0X50 ADD A, R7 DA A 最后两条指令合在一起相当于压缩BCD码的加法。 结果为: A = 0;CY = 1,课堂练习,观察和分析下列指令执行后的结果: MOV 0 x60,#0 x2B MOV 0 x61,#0 x61 CLR C MOV A,#0 x91 SUBB A, 0 x60 ADD A, 0 x61 DA A 答: A = 0 x27; CY = 1,带借位减法指令,S
47、UBB A,Rn ;A = A Rn - Cy SUBB A,direct SUBB A,Ri SUBB A,#data,对标志的影响,如果位7需借位则Cy置1,否则Cy清0; 如果位6借位而位7不借位,或者位7借位而位6不借位,则溢出标志位OV置“1”,否则OV清“0”。 如果位3需借位则Ac置1,否则Ac清0;,课堂练习,观察下面指令运行后的结果: MOV A, #0 x00 SUBB A, #0 x01 结果:PSW = 0 xc0;A = 0 xff 观察下面指令运行后,RAM的变化: MOV A, #0 x7f SUBB A, #0 x80 结果:PSW = 0 x84 ;A = 0
48、 xff,减1指令,DEC A DEC Rn DEC direct DEC Ri,减1指令,减1指令不影响标志位(除P外)。,乘法指令,MUL AB 积的低字节在累加器A中,高字节在B中。 如果积大于255,则OV置1,否则OV清0。Cy标志总是清0。,除法指令,DIV AB 指令执行后,商(整数)存于A中,余数存于B中,Cy和OV清“0”。 如果B的内容为0(即除数为0),指令执行后,A、B中内容不定,OV置1。,例题,双字节无符号乘法。,明德 厚学 沉毅 笃行,逻辑操作类指令(25条),1,逻辑与指令,ANLA,Rn ANLA,direct ANLA,#data ANLA,Ri ANLdi
49、rect,A ANLdirect,#data,思考,下列指令实行后的结果: MOV A, #0 x07 MOV R7, # 0 xfd ANLA,R7 答:A = 0 x05,逻辑或指令,ORLA,Rn ORL A,direct ORL A,#data ORL A,Ri ORL direct,A ORL direct,#data,思考,下列指令实行后的结果: MOV A, #0 x07 MOV R7, # 0 xfd ORLA,R7 答:A = 0 xff,逻辑异或指令,XRLA,Rn XRL A,direct XRL A,#data XRL A,Ri XRL direct,A XRL dir
50、ect,#data,思考,下列指令实行后的结果: MOV A, #0 x07 MOV R7, # 0 xfd XRL A,R7 答:A = 0 xfa,其它逻辑操作指令,CLR A CPL A RL A RLC A RR A RRC A SWAP A ;高半字节与低半字节互换,思考,下列指令实行后的结果: MOV A, #0 x57 SWAP A 答:A = 0 x75,明德 厚学 沉毅 笃行,控制转移类指令(17条),1,直接跳转指令,LJMPaddr16 PC = addr16 AJMPaddr11 PC = PC + 2 PC0-10= addr11 SJMPrel PC = PC +
51、2 PC = PC + rel,间接跳转指令,JMP A+DPTR PC = A + DPTR 该指令用于实现多分支转移,条件转移指令,JZrel 若A = 0,PC = PC + 2 + rel 若A != 0, PC = PC + 2 JNZrel 若A != 0,PC = PC + 2 + rel 若A = 0, PC = PC + 2,比较转移指令,CJNEA, #data,rel 若A = data ,PC = PC + 3; CY = 0 若A data ,PC = PC + 3 + rel; CY = 0 若A data ,PC = PC + 3 + rel; CY = 1 CJ
52、NEA, direct,rel CJNE Rn,#data,rel CJNE Ri, #data,rel,减1条件转移指令,DJNERn, rel Rn = Rn 1 若Rn != 0, PC = PC + 2 + rel 若Rn = 0, PC = PC + 2 DJNE direct , rel,调用子程序指令,LCALLaddr16 PC = PC + 3 SP = SP + 1 (SP) = PC7-0 SP = SP + 1 (SP) = PC15-8 PC = addr16 ACALLaddr11,返回指令,RET ;子程序返回 PC15-8 = (SP) SP = SP - 1
53、PC7-0 = (SP) SP = SP - 1 RETI ;中断程序返回 除上述功能外,还清除了中断响应时被置1的内部中断优先级寄存器的中断优先级状态,空指令,NOP PC = PC + 1,明德 厚学 沉毅 笃行,位操作类指令(17条),1,位操作类指令,第三章已作介绍。,第四章课后练习,熟悉全部111条指令。 实现双字节无符号减法。 实现双字节有符号减法。 实现双字节无符号除法。,明德 厚学 沉毅 笃行,第五章 伪指令,1,汇编语言程序设计概述,程序是指令的有序集合。 汇编语言程序:用汇编语言编写的程序。 汇编语言的两种基本语句: 指令语句 伪指令语句,伪指令,是控制汇编(翻译)过程的一
54、些控制命令。在汇编时没有机器代码与之对应。,伪指令,ORG /汇编起始地址命令 END /汇编终止命令 EQU/标号赋值命令 DB/定义数据字节命令 DW/定义数据字命令 DS/定义存储区命令 BIT/位定义命令,数码管,我们先学习一下七段LED数码管,然后讲关于伪指令的例题。,明德 厚学 沉毅 笃行,七段LED数码管,1,七段LED数码管,七段LED数码管的内部结构,七段LED数码管,说明,上图中,“6”,“9”通常更习惯添上一横。,七段LED数码管,当采用共阳极七段LED数码管时,显示“0”的代码是:0 xc0 思考:显示“1”的代码是? 思考:显示“2”的代码是?,例题,七段LED数码管
55、+1(C语言)。 七段LED数码管+1(汇编)。 功能:实现1位七段LED数码管显示值自动加一。 硬件图: 打开42 为什么加三极管,下一章详细讲。,DS,定义存储区命令 从指定地址开始,保留指定数目的字节单元作为存储区,供程序运行使用。 例如: TABEL:DS10 表示从TABEL代表的地址开始,保留10个连续的地址单元。,BIT,位定义命令 例如: LED0BIT P1.0 功能是把P1.0的位地址赋给变量LED0 。,例题,在最右边的数码管上实现:七段LED数码管+1。 在最右边的数码管上实现:光标循环转动。,明德 厚学 沉毅 笃行,第六章 输出口的应用,1,第六章输出口的应用,输出口
56、的内部结构 蜂鸣器 三极管 让蜂鸣器发出声音 让蜂鸣器发出音乐 多个七段LED数码管组合 动态显示技术 继电器,明德 厚学 沉毅 笃行,P1口内部结构回顾,1,单片机P1.x的内部结构,P1.x的内部结构,P1.x主要由1个D锁存器,两个三态门,1个上拉电阻(约30K)和1个场效应管组成。 可实现的功能:写引脚,读引脚,读锁存器。,P1.x的D锁存器,D锁存器的工作原理。 D: 接内部数据总线(共8根)中的1根 CL:由“写RAM”控制总线 + 地址总线共同得到锁存信号。,写引脚举例,指令:MOV 0 x90, #0 xfe CPU端: CPU将#0 xfe送内部数据总线 CPU将#0 x90
57、送地址总线 CPU给“写RAM”控制总线控制信号 P1.0引脚: D锁存器的D端得到信号“0” D锁存器的CL端得到上升沿信号 D锁存器的/Q端锁存为信号“1” 场效应管导通,P1.0引脚呈现电压0,AT89S51引脚的驱动能力,当引脚流过的电流过大时,容易引起单片机工作不稳定,甚至损毁。 AT89S51引脚的驱动能力: P0口-P3口的每个引脚: 10mA P1口- P3口的8个引脚合计: 15mA P0口的8个引脚合计: 26mA,STC89C52引脚的驱动能力,STC89C52引脚的驱动能力: P0口的每个引脚: 12mA P1口-P3口的每个引脚: 6mA 参见44P62,明德 厚学
58、沉毅 笃行,其它输出口的内部结构,2,其它输出口的内部结构,当作为输出口使用时,P2口、P3口的内部结构同P1口完全相同。 P0口当作为输出口使用时,同P1口的区别只是:没有上拉电阻。,单片机P0.x口的内部结构,明德 厚学 沉毅 笃行,蜂鸣器,1,蜂鸣器,蜂鸣器分为有源蜂鸣器和无源蜂鸣器。这里的“源” 是指震荡源。 有源的一通电就会叫; 无源的必须用频率为1K5K的信号才能鸣叫。 蜂鸣器的内阻约为几十R,驱动电压一般1.5V-15V都可以。,有源蜂鸣器,无源蜂鸣器,学习板上的蜂鸣器,学习板上是无源蜂鸣器 用万用表测量学习板上无源蜂鸣器的电阻。,思考,如果给无源蜂鸣器引脚接5V电源,蜂鸣器流过
59、的电流为多大? 可以用单片机引脚直接驱动吗? 回答:不可以,电流太大。 一般采用三极管驱动蜂鸣器。 打开参考资料42,看看学习板上蜂鸣器的电路图。,明德 厚学 沉毅 笃行,三极管,1,三极管的管脚,三极管的特性曲线,三极管的特性,3个区域:截止区、放大区、饱和区 截止区(VBE 0.7V ):关断状态 (IC=0) 放大区:电流被控状态(IC=IB ) 饱和区:导通状态 举例:三极管开关电路(发射极接1K电阻,基极接100K电阻;将100K电阻降为1K),思考,学习板蜂鸣器电路中三极管IB约为多大? 学习板蜂鸣器电路中三极管ICE约为多大? 三极管允许的最大ICE是多少? 参考13,对13的补充,5551 NPN 160V 600mA 625mW 300MHz
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学习《员工违反规章制度处理办法》心得体会
- 学生行为规范养成方案
- 学生考试成绩异常处理管理办法
- 物业设备安装监理实施细则
- 物业小区绿化肥料农药管理制度
- 物业保洁作业规范
- 机关事业单位环境卫生管理制度
- 中药饮片烫制工艺技术手册
- 《短剧项目复盘总结手册》
- 《航班延误物资调配保障手册》
- 2026年度成都市公开选调公务员笔试备考试题及答案详解
- 2026年临床检验科尿常规检测技术考核模拟试题及答案解析
- 2026-2030中国高油酸花生油市场供需趋势与营销推广渠道分析报告
- 汽车零部件清洁生产办法
- 电梯工程质量监理评估报告模板
- 《具身智能技术及产业实践的阶段性进展 》
- 2026年人教版初中七年级语文上册文言文古今异义卷含答案
- 2025年杭州市西湖区社区工作人员(网格员)考试题库真题及答案
- 审计人员轮岗制度
- 2026新高考政策全景解读与志愿填报策略
- 安全生产举报培训
评论
0/150
提交评论