单片机课件4
北京航空航天大学出版社《单片机基础》第4章课件
2. 操作码 规定语句执行的操作内容,用指令助记符表示。 3. 操作数 用于为指令操作提供数据。 4. 注释 注释以“;”开头,注释不属于语句的功能部分, 只是对语句的பைடு நூலகம்释说明。 5. 分界符(分隔符)
冒号(:) 空格( ) 逗号(,) 分号(;) 用于标号之后; 用于操作码和操作数之间; 用于操作数之间; 用于注释之前。
BRTAB:
BR0: BR1: BRn:
;分支程序
(2)通过转移指令表实现程序多分支 MOV A, n RL A MOV DPTR, #BRTAB JMP @A+DPTR BRTAB: AJMP BR0 AJMP BR1 ┇ AJMP BR127
;分支序号值乘以2 ;转移指令表首址 ;转分支程序0 ;转分支程序1
开始 取数据低4位 转换成ASCII码
存ASCII码
取数据高4位 转换成ASCII码 存ASCII码 结束
MOV A, 30H ANL A, #0FH ADD A, #30H MOV 32H, A MOV A, 30H SWAPA ANL A, #0FH ADD A, #30H MOV 31H, A SJMP $
LOOP:
例:通过查找结束标志(回车符)以统计字 符串长度的循环程序。假定字符串存放在内 部RAM从40H单元开始的连续存储单元中。
MOV R2, #0FFH MOV R0, #3FH LOOP: INC R2 INC R0 CJNE @R0, #0DH, LOOP RET
例:把内部RAM中起始地址为data的数据串传送到 外部RAM以buffer为首地址的区域,直到发现”$” 字符的ASCII码为止;数据串的最大长度为32字节。
4.1.3 80C51 单片机汇编语言的语句格式
单片机原理教程(经典)ppt课件
三、Maxim-Dallas单片机
四、WinBond单片机
五、Motorola单片机
六、其他公司的单片机
1)NEC单片机;
2)东芝单片机;
3)Epson单片机;
4) PIC单片机—— M icrochip公司
•最新课件
•9
第三节 单片机的应用领域及发展
第一章---------9
一、单片机在智能仪器中的应用
第一章---------3
一、微处理器、微机和单片机的概念
微处理器(Microprocessor)——微型计算机的控制和运算器部分;
微型计算机(Microcomputer)——有完整运算及控制功能的计算机,包 括微处理器、存储器、输入/输出(I/O)接口电路以及输入/输出设备等;
单片机(single chip microcomputer)——直译为单片微型计算机,它将 CPU、RAM、ROM、定时器/计数器、输入/输出(I/O)接口电路、中断、串行通 信接口等主要计算机部件集成在一块大规模集成电路芯片上,组成单片微型 计算机简称单片机 。
一种是在通用微型计算机中广泛采用的将程序存储器和数据存储器 合用一个存储空间的结构,称为普林斯顿(Princeton)结构或称冯·诺依曼 结构;
另一种是将程序存储器和数据存储器截然分开,分别寻址的结构, 称为哈佛(Har-vard)结构。Intel公司的MCS-51和80C51系列单片机采用的 是哈佛结构。目前的单片机以采用程序存储器和数据存储器截然分开的 结构较多。
P1口也是—个准双向I/O口,与P0口不同的是,没有多路开关MUX和控 制电路部分。输出驱动电路只有一个FET场效应管,同时内部带上拉电阻, 此电阻与电源相连。P1口可作通用双向I/O口用,而不必再外接上拉电阻。
单片机原理及应用(C51版)第4章单片机C语言程序设计精品PPT课件
4.1 Keil C简介与环境设置 4.2 C51 4.3 C51基础知识及表达式 4.4 C51控制语句 4.5 数组 4.6 指针 4.7 函数 4.8 C51开发工具使用 4.9 Keil C调试方法
一般情况下单片机常用的程序设计语言有两种:
4.2 Cx51简介
4.2.1 Cx51的扩展
Cx51编译器兼容ANSI C标准,又扩展支持了8051微处 理
器,其扩展内容如下: ① 存储区; ② 存储区类型; ③ 存储模型; ④ 存储类型说明符; ⑤ 变量数据类型说明符; ⑥ 位变量和位可寻址数据; ⑦ SFR; ⑧ 指针; ⑨ 函数属性。
部RAM地址为0x80-0xFF的128字节存储单元,这些 存储器一般用作计时器、计数器、串口、并口和外围 使用。
4. sfr16类型 sfr16类型用于声明两个连续地址的特殊功能寄
存器(地址范围为0~65 535)。 5.其它类型 C51程序中常用的数据类型还有: char(字符型) unsigned char(无符号字符型) int(整型) unsigned int(无符号整型)等类型。
4.2.2 存储区
8051单片机支持程序存储器和数据存储器的分离,存 储器根据读写情况可以分为:程序存储区(ROM)、快速 读写存储器(内部RAM)、随机读写存储器(外部RAM)。
1. 程序存储器(code)
在中程序存储器是只读存储器,其空间为64K ,在 C51中用code关键字来声明访问程序存储区中的 变量。 。
● 汇编语言:
汇编语言具有执行速度快、占存储空间少、对硬件可直 接编程等特点,因而特别适合在对实时性能要求比较高的 情况下使用。
● C语言:
C语言克服了汇编语言的不足之处,同时又增加了代码 的可读性,C语言大多数代码被翻译成目标代码后,其效 率和汇编语言相当。特别是C语言的内嵌汇编功能,使C语 言对硬件操作更加方便。
《单片机原理及应用技术(第4版_李全利)》电子课件 第1章绪论
借助开发机完成: 排除硬件故障和软件错误 程序固化到程序存储器芯片中。
2020/4/2
19
指令的表示形式
指令是让单片机执行某种操作的命令,按一定的 顺序以二进制码的形式存放于程序存储器。如:
0000 0100B
04H
04H:累加器A的内容加1,难记! INC A,记忆容易。称为符号指令。
2020/4/2
2020/4/2
16
1.3 单片机的特点及应用领域
1.3.1 单片机的特点
突出的控制性能 可靠性较高,CPU、存储器及I/O接口集成在片内, 数据传送不易受环境条件的影响;控制功能强,位 控能力独特,集成有ADC、PWM、WDT等部件。
优秀的嵌入品质 价格低(批量产品);品种多(应用广泛)引脚少 体积小(印制板减较小),产品结构灵活精巧。
普通高等教育“十一五”国家级规划教 材
单片机原理及应用技术
( 第4 版)
主编 李全利
课程特点:
实践性强,旨在应用 硬件、软件结合紧密
学习方法:
课前预习,课后复习 软硬兼顾,上机实践 广阅书刊,用好网络
2020/4/2
2
第1章 绪论
1.1 电子计算机概述 1.2 单片机的发展过程及产品近况 1.3 单片机的特点及应用领域 1.4 单片机应用系统开发过程 实践1 熟悉µVision开发平台
2020/4/2
8
微型计算机的应用形态
桌面应用 CPU芯片
I/O接口芯片
2020/4/2
存储器芯片
9
输 出 设 备
输入设备
嵌入式应用
输出设备
CPU、存储 器和I/O接口 集成于同一
芯片
2020/4/2
单片机第4章汇编语言程序设计
4.2 伪指令
伪指令是在机器汇编中告诉汇编程序 如何汇编、对汇编过程进行控制的命令。 伪指令与汇编语言指令不同,只在源程序 中出现,不产生任何机器代码,在程序的 运行过程中不起作用,故称为“伪指令”。
处理 判断 连接
2.绘制程序流程图 简单的问题可由文字说明, 当问题复杂时,将文字说明的步骤以图形符号表示, 称流程图。
3.编写源程序 用汇编语言把流程图所表明的 步骤描述出来,实现流程图中每一框内的要求,从 而编制出一个有序的指令流,即汇编语言源程序。
4.汇编、调试 汇编语言是用指令助记符代替机 器码的编程语言,所编写的程序是不能在计算机上 直接执行的,因此利用它所编写的汇编语言程序必 须转换为单片机能执行的机器码形式的目标程序才 能运行,我们把这一过程称为汇编,进行汇编的程 序称为汇编程序。
4. 定义字伪指令DW
[标号:] DW 16位字数据表
该指令的功能与DB相似, 区别仅在于从指定地
址开始存放的是指令中的16位数据, 而不是字节串。
每个16位数据要占两个存储单元, 高8 位先存(低位
地址), 低 8 位后存(高位地址)。
1403H 3CH
ORG 1400H DATA1:DW 324AH,3CH
散转程序是分支程序的一种, 它可根据运算结果或输入数 据将程序转入不同的分支。MCS - 51 指令系统中有一条跳转指 令JMP@A+DPTR,用它可以很容易地实现散转功能。该指令 把累加器的8位无符号数与16位数据指针的内容相加, 并把相加 的结果装入程序计数器PC,控制程序转向目标地址去执行。
第4章-STC89C52单片机硬件结构-PPT
4.3 STC89C52单片机存储器结构
STC89C52RC存储器的结构特点之一是将程序存储器和数据存 储器分开(哈佛结构),并有各自的访问指令。 STC89C52RC系列单片机除可以访问片上Flash存储器外,还 可以访问64KB的外部程序存储器。STC89C52RC系列单片机 内部有512字节的数据存储器,其在物理和逻辑上都分为 两个地址空间:内部RAM(256字节)和内部扩展 RAM(256字节),另外还可以访问在片外扩展的64KB外部 数据存储器。
6. 电源与时钟引脚 (1) VCC:电源正极 (2) Gnd:电源负极,接地 (3) XTAL1:片内振荡器反相放大器和时钟发生器电路输入
端。用片内振荡器时,该脚接外部石英晶体和微调电容。 外接时钟源时,该脚接外部时钟振荡器的信号。 (4) XTAL2:片内振荡器反相放大器的输出端。当使用片内 振荡器,该脚连接外部石英晶体和微调电容。当使用外部 时钟源时,本脚悬空。 RST:复位输入。当输入连续两个机器周期以上高电平时为 有效,用来完成单片机的复位初始化操作。看门狗计时完 成后,RST引脚输出96个晶振周期的高电平。特殊寄存器 AUXR(地址8EH)上的DISRTO位可以使此功能无效。 DISRTO默认状态下,复位高电平为有效。
EA=1时,CPU从片内0000H开始取指令,当PC值没有超出 1FFFH时,只访问片内Flash存储器,当PC值超出1FFFH自动 转向读片外程序存储器空间2000H~FFFFH内的程序。
EA=0时,只能执行片外程序存储器(0000H~FFFFH)中 的程序,不理会片内8KB Flash存储器。
(2)程序存储器某些固定单元用于各中断源中断服务程序入口。
16.封装形式有:LQFP-44、PDIP-40、PLCC-44、PQFP-44。由 于LQFP-44具有体积小、扩展了P4口、外部中断2和3及定 时器T2的功能。PDIP-40的封装与传统的89C52芯片兼容。
中职教育-单片机技术应用课件:第4章 汇编语言与仿真系统(1).ppt
第1章单片机基础知识
4.2 汇编语言程序设计
程序设计是学习单片机的重要内容,因为单片机系统都 是在软件的控制下完成规定的动作或功能,所以软件是硬件 的灵魂。程序设计也是单片机教与学的难点,有些同学因为 不会程序设计而最终无法跨入单片机应用的大门。要学好程 序设计,除了应熟悉、掌握常用的指令外,还必须多看(对 程序设计来说,模仿往往是学习的起步,不但要看程序,更 要看流程图)、多练(练习是基本知识的消化、巩固过程和 编程技巧的领悟途径)、多总结(如循环程序等很有规律, 总结出规律后,几乎可以一劳永逸地采用)。当然程序也并 非都由自己亲手编制,现在的网络资源非常丰富,利用网络 可以整合众人的智慧,互相“借用”别人的“劳动成果” (比如现成的子程序)也是一种方法或途径。
第1章单片机基础知识
【例4-1】
ORG
0050H
MOV MOV
SP,#60H R0,#2FH
……
上述ORG伪指令说明其后面程序的目标代码在存储器中存放 的起始地址是0050H,即: 存储器地址 目标程序
0050H
75 81 60
0053H
78 2F
……
第1章单片机基础知识
(2)等值指令 EQU 指令格式:字符名称 EQU 数字或汇编符号 功能:使指令中的字符名称等价于给定的数字或汇编符号。 使用等值指令可给程序的编制、调试、修改带来方便,如果 在程序中要多次使用某一地址,那么由EQU指令将其赋值给 一个字符名称,一旦需要对其进行变动,就只要改变EQU命 令后面的数字即可,而不需要对程序中涉及该地址的所有指 令逐句进行修改(人工逐句进行修改往往还会漏掉该修改的 地方,从而引起程序单元使用混乱,产生严重后果)。但要 注意,由EQU等值的字符名称必须先赋值后使用,且在同一 个源程序中,同一个标号只能赋值一次。
51单片机第四节数码管
51单⽚机第四节数码管本笔记默认学习者已拥有:1.Keil5和stc 烧写⼯具 等各种软件、驱动、环境;2.有⼀个属于⾃⼰的 51单⽚机开发板及相关零件 ;3.认识C 语⾔的语法;本⼈使⽤的51开发板为 郭天祥C51 TX-1C 增强版开发板 ;本笔记根据B 站up 主:江科⼤⾃化协的教学视频 整理得到ヾ(•ω•)4-1 静态数码管显⽰上图为TX-1C 的 数码管及LED 模块 原理图138译码器和74HC245 都是⽤来控制 数码管显⽰ 的;单数码管1.上图为 ⼀位数码管,数码管有两种连接⽅式(对应 右边上下两幅图);2.右上图的原理图,8个LED的阴极都连在⼀个引脚上,称为共阴极连接;3.右下图的原理图,8个LED的阳极都连在⼀个引脚上,称为共阳极连接;TX-1C 开发板的连接⽅式是 共阴极连接;4.左下⾓的 左边图⽚ ,定义了8个LED的名称;5.左下⾓的 右边图⽚ ,定义了引脚的名称,与右图的引脚名称⼀⼀对应假设数码管连接⽅式为 共阳极连接,观察可以发现,数码管中的 LED 的引脚引出,使⽤的是就近原则;假设数码管连接⽅式为 共阴极连接,如果上数码管显⽰ 数字6 ?1.要让数码管显⽰ 数字6,让要 LED-A、C、D、E、F、G亮起;2.共阴极的公共端 要接地(给数据‘0’,或者是低电平);3.阳极(称为位选端)根据LED的亮灭需求给 数据0或1(1亮、0灭) ,称为 段码(阳码) (1011 1110 即为段码);如果 共阳极连接,共阳极端 要接到 VCC (⾼电平),阴极给 数据0或1 (1灭,0亮),称为 段码(阴码),和共阴极正好是相反关系;共阳极连接→共阳极端接VCC 并选中→阴极(位选端)传递(阴码)段码(1亮、0灭)→数码管显⽰共阴极连接→共阴极端接GND 并选中→阳极(位选端)传递(阳码)段码(1灭、0亮)→数码管显⽰四位⼀体数码管开发板上即为 四位⼀体的数码管,且有两个,正好组成了 ⼋位数码管;⽽TX-1C 上 包含的是六位数码管,⽽⾮⼋位;1.四位数码管 也有 两种连接⽅式,即 共阴极连接 和 共阳极连接 ;{Processing math: 100%2.四位数码管,(每位的公共端 单独引出来,位选端全部连在⼀起(所有A段连在⼀起、所有B段连在⼀起……),总共有12个引脚;假设数码管连接⽅式为共阴极连接,如何在第三位显⽰数字1 ?1.给第三位的公共端 赋值 0(低电平),给其他位的公共端 赋值 1(⾼电平);这样等同于 其他位的公共端(负极)接到了正极上,⽆论如何都亮不了;只有第三位能亮;2.这样给 LED-B、C 的位选端 赋值 1,其他 位选端 赋值0共阳极连接即为公共端赋值 1(⾼电平)亮,其他以此类推;3.发现这样⼀个现象,数码管⽆法在同⼀时间显⽰多个数字,其在同⼀时刻下只能有⼀个显⽰,只有⼀个数码管能被点亮,即使有多个被选中的数码管,显⽰的数字也是相同的;这种共⽤引脚的现象,是为了减少控制数码管IO⼝;(四位数码管有32个LED,如果都采⽤共阴极连接的⽅式,也要32+1(公共端)=33个引脚;)(采⽤这种链接,就只需要12个引脚即可控制四位数码管;)如何让数码管多位显⽰不同数字(动态数码管显⽰)?1.利⽤ ⼈眼视觉的暂留 和 数码管显⽰的余辉 的原理先让第⼀位数码管显⽰1,然后很快地让第⼆位数码管显⽰2,再很快地让第三位数码管显⽰3,让它不断地扫描,重复显⽰1、2、3的过程,这样三个数字就“同时”显⽰了;原理分析138译码器1.观察到 原理图右图 与数码管有关的,有138译码器(74LS138)和74HC245两枚芯⽚;TX-1C的原理图为左图,也有两个74HC573芯⽚与数码管有关;芯⽚名称与功耗、电压、说明符号有关,具体内容不做分析;2.如图,数码管连接⽅式为 共阴极连接,这样传输数据,就能让第三位显⽰ 数字1 了;3.⽽上⾯的 LED1 ~ 8,其实接在了138译码器的输出端,138译码器正好可以实现让LED1 ~ 8输出 0或1;LED1 ~ 8 对应了 TX-1C 六位数码管的SEG DS 1 ~ 6;4.138译码器可将LED 1 ~ 8的⼋个端⼝ 转化为 由 3个端⼝ (P22、P23、P24)控制,⽽G1、G2A、G2B端⼝ 被 称为 使能端;使能端相当于⼀种开关,如果电平有效,它就可以⼯作;如果电平⽆效,它就不⼯作;观察原理图发现,使能端是已经接好 VCC 和 GND 的,也就是说,其上电其实就会⼯作TX-1C的74HC573也是同理,但其并未压缩控制端⼝的数量;5.138译码器也叫“38线译码器”,是由3个线到8个线,其中C是⾼位、A是低位,CBA组成的数符合8进制,控制着Y0 ~ Y7 这8个端⼝;6.所以,138译码器的作⽤就是⽤来选中某⼀位数码管的74HC2451.74HC245是⼀种 双向数据缓冲器,VDD、GND都可视为电源,OE为使能(其 接地 就⼯作);2.DIR(direction),是⽅向的意思,它接到了VCC(⾼电平)上,将数据从左边输出到右边,从右边将数据读取回左边;DIR若接到低电平上,会将数据从右边输出到左边,从左边将数据读取回右边;3.单⽚机的⾼电平 驱动能⼒有限,其输出的最⼤电流不能太⼤;其低电平 驱动能⼒强;因此,LED模块才采⽤了低电平点亮的模式;4.如果⽤⾼电平 直接点亮 数码管,电流会很⼩,灯会很暗;所以其加⼀个缓冲器,缓冲器可以提⾼ 其驱动能⼒,如果直接将 数据 输出 给 数码管,数据就会被视为 驱动数据;现在增加了缓冲器,数据 就变成了 控制信号,控制信号 只需要很微弱,缓冲器 就可以接收到,缓冲器再通过⾃⼰接到的电源,输出 数据 到引脚上,这样控制的电流只需要⾮常⼩,就能驱动数码管 以⽐较亮的形式显⽰;2电容 是⽤来 稳定电源的,叫电源滤波;6.图右有 ⼀ 排阻,阻值为100R(即为100Ω),作⽤为 限流电阻 ,防⽌数码管的电流过⼤;TX-1C既没有电容,也没有排阻;原理总结1.⽤ 138译码器 使 数码管 的某⼀位 被选中;2.再给P0⼝⼀个 段码数据;TX-1C虽然⽤P0⼝控制段码输⼊,但也⽤P0⼝控制位选;需要先⽤ P2.6⼝和P2.7⼝控制输⼊数据是段码还是位选;P2.6⼝控制段码的输⼊;P2.7⼝控制位选的输⼊;例,给P2.6 数据1 (⾼电压)、给P2.7 数据 0 (低电压),就可以确定现在给数据是段码;1.由TX-1C的原理图可知,数码管内 LED灯 与 P0端⼝ 的顺序关系:(1)LED的名称定义是通⽤⽆疑的;(2)数码管本⾝的引脚名称不重要,重要的是 LED与哪个 P0 的 引脚 相连;2.由TX-1C的原理图可知, P0.0引脚 控制 数码管的最左位,P0.5引脚控制 数码管的最右位,剩余引脚是没有控制 数码管 位选 的作⽤的,哪个P0 的 引脚 控制 六位数码管的 哪位 很重要;代码实现静态数码管显⽰(让数码管第三位显⽰3).c#include<reg51.h>sbit D=P2^6; //段码⼝sbit W=P2^7; //位选⼝void main(){D=0;W=1;P0=0xFB;//1111 1011W=0;D=1;P0=0x4F;//0100 1111while(1);}下⾯写出了⼀个通⽤函数,可以让数码管在 第⼏个位置 显⽰ 哪个数#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;void NixieTube(uchar wei,uchar duan){ //NixieTube是数码管的英⽂uchar WEI,DUAN; //(Nixie是⼥⽔妖的意思)D=0;W=1;switch(wei){ //位选部分case 1:WEI=0xFE; break;case 2:WEI=0xFD; break;case 3:WEI=0xFB; break;case 4:WEI=0xF7; break;case 5:WEI=0xEF; break;case 6:WEI=0xDF; break;}P0=WEI;W=0;D=1;switch(duan){ //段码部分case 0:DUAN=0x3F; break;case 1:DUAN=0x06; break;case 2:DUAN=0x5B; break;case 3:DUAN=0x4F; break;case 4:DUAN=0x66; break;case 5:DUAN=0x6D; break;case 6:DUAN=0x7D; break;case 7:DUAN=0x07; break;case 8:DUAN=0x7F; break;case 9:DUAN=0x6F; break;case 10:DUAN=0x77; break; //Acase 11:DUAN=0x7F; break; //Bcase 12:DUAN=0x39; break; //Ccase 13:DUAN=0x3F; break; //Dcase 14:DUAN=0x79; break; //Ecase 15:DUAN=0x71; break; //Fcase 16:DUAN=0x80; break; //.}P0=DUAN;}void main(){NixieTube(3,3);while(1);}运⾏结果如下:4-2 动态数码管显⽰1.如果只是单纯让其显⽰完⼀个再显⽰⼀个,代码如下:#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};//将两个switch改进为数组void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:2.这是⼀个数码管的常见问题,称为 数码管的消影 ;位选-->段选-->位选-->段选-->位选-->......在这⼀位的段选(输⼊段码)结束,进⾏下⼀位的位选时,很短的时间内,上⼀位的数据会串到下⼀位数据⾥⾯去;所以我们在段选和位选之间,增加⼀个 P0 清零的操作;动态数码管显⽰(数码管同时显⽰123).c#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};void Delayms(unsigned int x){unsigned int j;for(;x>0;x--) for(j=110;j>0;j--);}void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];Delayms(1); //让数码管稳定显⽰,⽴刻清零会让数码管显⽰较暗P0=0; //清零操作}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:相关知识1.在运⾏某些代码时,TX-1C的LED点阵模块会乱闪2.将左下⾓ DOT-OE旁的跳线帽 拔下来即可 断开LED点阵模块,3.拔下来的跳线帽不要乱丢,可以 只插⼀个脚放在原处,也可以妥善保管在其他地⽅上图即为拔下来的跳线帽1.此元件为电容;2.104的数量规则与 第⼆节 所讲的电容是相同的,其单位是pF1000pF=1nF, 1000nF=1uF, 1000uF=1000mF, 1000mF=1FF 是⼀个很⼤的单位,正常电容都是uF、nF级别的;超级电容能达到1 ~ 2 F,其⼀般作为备⽤电池;3.TX-1C的原理图上,电容的量都是直接⽤单位标记好的。
单片机第4章8051单片机指令系统
单片机第4章8051单片机指令系统在单片机的世界里,指令系统就如同指挥官手中的指令手册,指引着单片机完成各种复杂的任务。
8051 单片机的指令系统更是其中的重要组成部分,它为我们提供了丰富多样的指令,让我们能够灵活地控制单片机的运行。
8051 单片机的指令系统可以分为五大类,分别是数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令。
数据传送指令是指令系统中的基础,就像是在战场上调配物资一样。
它能够实现寄存器之间、寄存器与存储器之间、立即数与寄存器或存储器之间的数据传递。
比如 MOV 指令,它可以将一个数据从源地址传送到目的地址。
假设我们要将立即数 50H 传送到累加器 A 中,就可以使用指令“MOV A, 50H”。
这样,累加器 A 就存储了 50H 这个数值。
算术运算指令则像是在进行战斗中的兵力计算。
它包括加法、减法、乘法和除法等运算。
ADD 指令用于加法运算,SUBB 指令用于带借位的减法运算。
例如,我们要将累加器 A 中的值与寄存器 B 中的值相加,并将结果存放在累加器 A 中,就可以使用指令“ADD A, B”。
如果要进行带借位的减法运算,比如从累加器 A 中减去寄存器 B 中的值以及借位标志位 CY 的值,可以使用指令“SUBB A, B”。
逻辑运算指令就像是在制定战略时的思考逻辑。
AND 指令用于逻辑与操作,ORL 指令用于逻辑或操作,XRL 指令用于逻辑异或操作。
以 AND 指令为例,如果我们要将累加器 A 中的值与立即数 80H 进行逻辑与操作,并将结果存放在累加器 A 中,就可以使用指令“AND A, 80H”。
控制转移指令则是指挥战斗中的战略部署调整。
它可以改变程序的执行顺序,使单片机能够根据不同的条件执行不同的程序段。
比如 JZ 指令,如果累加器 A 的值为 0,则程序跳转到指定的地址;JC 指令,如果进位标志位 CY 为 1,则程序跳转到指定的地址。
位操作指令则专注于对单个位的操作,就像是在精细地调整战斗中的某个关键环节。
单片机模块四单片机内部三大功能
单片机模块四单片机内部三大功能单片机模块四:单片机内部三大功能单片机作为一种集成度高、功能强大的微型计算机,在众多领域都有着广泛的应用。
要深入理解单片机的工作原理和应用,就需要了解其内部的三大功能:运算与控制功能、存储功能和输入输出功能。
一、运算与控制功能单片机的运算与控制功能是其核心所在。
它能够执行各种算术和逻辑运算,例如加法、减法、乘法、除法以及与、或、非等逻辑操作。
这些运算能力使得单片机能够处理和分析数据,实现各种复杂的控制任务。
在控制方面,单片机通过内部的指令系统来实现对外部设备和系统的精确控制。
指令系统就像是单片机的“语言”,它规定了单片机能够执行的各种操作和动作。
单片机根据预先编写好的程序,按照指令的顺序依次执行,从而实现对外部世界的控制。
例如,在一个温度控制系统中,单片机通过传感器不断获取当前的温度值,并与设定的温度值进行比较。
然后,根据比较结果,单片机执行相应的控制指令,如控制加热装置的开启或关闭,以保持温度在设定的范围内。
为了提高运算和控制的效率,单片机通常采用流水线技术和哈佛结构。
流水线技术使得单片机能够在一个时钟周期内同时执行多个操作步骤,从而大大提高了指令的执行速度。
哈佛结构则将程序存储器和数据存储器分开,使得单片机能够同时访问程序和数据,进一步提高了系统的性能。
二、存储功能存储功能是单片机不可或缺的一部分。
单片机内部通常包含程序存储器(ROM)和数据存储器(RAM)。
程序存储器用于存储单片机运行所需的程序代码。
这些程序代码在单片机生产时就被固化在存储器中,用户无法修改。
程序存储器的容量大小决定了单片机能够运行的程序的复杂程度。
数据存储器则用于存储单片机在运行过程中产生和处理的数据。
与程序存储器不同,数据存储器中的数据可以被单片机随时读取和修改。
数据存储器的容量大小决定了单片机能够处理的数据量的多少。
在实际应用中,为了满足更大的存储需求,还可以通过外部扩展存储器的方式来增加单片机的存储容量。
单片机原理与应用(陈桂友)第4章_指令系统
单片机原理及应用
4.3
寻址方式
8/79
操作数是指令的重要组成部分,它指定了参与运算的数或数所在 单元地址,而如何得到这个地址就称为寻址方式。一般来说,寻址方 式越多,计算机功能越强,灵活性越大。所以寻址方式对机器的性能 有重大影响。8051单片机共有7种寻址方式,描述如下:
1.立即寻址
指令中的源操作数是立即数,叫做立即寻址。立即数的类型可以 是:二进制(B)、十进制、十六进制(H)、整数、序数或者字符。立即 数的字长可以是8位或16位。 例如: MOV A,#61H 这条指令是把61H这个数据送入到累加器A中。 例如: MOV DPTR,#2050H 这条指令是把2050H这个数据送入到数据指针DPTR中。
程序存储器 PC 11100101 操作码 60H 01100000 直接地址
RAM 89H 89H ACC 0E0H
4:59:21
版权所有。
单片机原理及应用
10/79
3.寄存器寻址
指定某一可寻址的寄存器的内容为操作数,对寄存器ACC,B, DPTR和CY(进位标志,也是布尔处理机的累加器),其寻址时具体的 寄存器已隐含在其操作码中。而对选定的8个工作寄存器R7~R0,则用 指令操作码的低3位指明所用的寄存器。在应用中,可以先通过PSW中 的RS1、RS0两位来选择寄存器组,再用操作码中低3位来确定是组内哪 一个寄存器,达到寻址的目的。 例如:INC R5 ;把寄存器R3的内容加1后再送回R5
8位带符号偏移量。 当前工作区(0~3区)的工作寄存器(n=0,1,„,7) 可作地址寄存器的工作寄存器R0和R1(i=0,1) X寄存器内容 由X寄存器寻址的存储单元的内容 表示数据的传送方向 表示位操作数取反 表示逻辑与操作 表示逻辑或操作 表示逻辑异或操作
单片机原理及应用——C51编程+Proteus仿真(第3版)课件第4章-keil与Proteus的使
35
占用程序存储器共89字节。最后生成的.hex文件名为“流水灯.hex”,至 此,整个程序编译过程就结束了,生成的.hex文件就可在后面介绍的 Proteus环境下进行虚拟仿真时,装入单片机运行。
下面对用于编译、连接时的快捷按钮
与 作简要说明:
(1) 用于编译正在操作的文件。。
这些图标大多数是与菜单栏命令【Debug】下拉菜单中的各项子命令是 相对应的,只是快捷按钮图标要比下拉菜单使用起来更加方便快捷。
24
图4-15与图4-16中常用的快捷按钮图标的功能介绍图4-14中各个窗口的开与关。
25
(2)各调试功能的快捷按钮
片机可以运行的二进制文件(.hex格式文件),文件的扩展名为.hex。 (2)Select Folder for objects—选择最终的目标文件所在的文件夹,默认
与项目文件在同一文件夹中,通常选默认。 (3)Name of Executable—用于指定最终生成的目标文件的名字,默认与
项目文件相同,通常选默认。
(2) 按钮—用于编译修改过的文件,并生成相应的目标程序(.hex文 件),供单片机直接下载。
(3) 按钮—用于重新编译当前项目中的所有文件,并生成相应的目标 程序(.hex文件),供单片机直接下载。主要用在当项目文件有改动时 ,来全部重建整个项目。
36
因为一个项目不止一个文件,当有多个文件时,可用本按钮进行编译。 用C51编写的源代码程序不能直接使用,一定要对该源代码程序编译,生
窗口会出现一个空白的文件编辑画面,用户可在这里输入编写的程序源 代码。
11
(2)单击图4-1中快捷按钮
图4-7 建立新文件
(2)单击图4-1中快捷按钮 ,保存用户程序文件,这时会弹出如图4-8 所示窗口。,保存用户程序文件,这时会弹出如图4-8所示窗口。
《单片机》教学课件51单片机的指令系统
MOV Rn ,direct
;(direct)→Rn ,n =0~7
MOV Rn ,#data
;#data→Rn ,n =0~7
把源操作数送入当前寄存器区的R0~R7中的某一寄存器。
3.以直接地址direct为目的操作数的指令
MOV direct,A
; (A)→direct
MOV direct,Rn
寻址空间内快速地找到指定的地址单元。 下面介绍指令系统7种寻址方式。
5
1.寄存器寻址方式
指令中的操作数为某一寄存器的内容。
例如:MOV A,Rn
;(Rn)→A,n =0~7
把Rn中的源操作数送入到累加器A中。由于指令指定了从寄存 器Rn中取得源操作数,所以称为寄存器寻址方式。
本寻址方式的寻址范围:
4.以寄存器间接地址为目的操作数的指令
MOV @Ri,A
;(A)→((Ri)), i=0,1
MOV @Ri,direct ;(direct)→((Ri)),i=0,1
MOV @Ri,#data ;#data→((Ri)), i=0,1
功能是把源操作数内容送入R0或R1指定的存储单元中。
5.16位数传送指令
内部RAM的00H~7FH共128个单元。 6.堆栈操作指令 内部RAM中设定一个后进先出(LIFO,Last In First Out)
的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针 SP,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种, 因此,在指令系统中相应有两条堆栈操作指令。
22
(1)进栈指令 PUSH direct
(1)4组通用工作寄存区共32个工作寄存器。但只对当前工 作寄存器区的8个工作寄存器寻址,指令中的寄存器名称只 能是R0~R7。
精品课件-单片机原理及应用系统设计-第4章
;
PUSH
DPL
;
保护现场, 将主程序中
; DPTR的低八位放入堆
MOV
DPTR, #TABLE
; 在子程
第四章 单片机程序设计语言
恢复现场,
MOVC A, @A+DPTR
POP
DPL
将主程序中DPTR
; ;
;的低八位从堆栈中弹出
POP 场, 将主程序中DPTR
DPH
; 恢复现
;的高八位从堆栈中弹出
图 4-8 循环程序的典型形式
第四章 单片机程序设计语言
【例 4-4】 冒泡程序。假设有N个数, 它们依次存放 于LIST地址开始的存储区域中, 将N个数比较大小后, 使它 们按照由小到大的顺序排列,
编写该程序的方法: 依次将相邻两个单元的内容作比较, 即第一个数和第二个数比较,第二个数和第三个数比 较, ……, 如果符合从小到大的顺序则不改变它们在内存 中的位置,否则交换它们之间的位置。如此反复比较, 直到 数列排序完成为止。
LJMP MAIN
;
MAIN: MOV A, X
XRL A, Y
; (X)与(Y)进行异或操作
JB ACC.7, NEXT1
; 累加器A的第7位
为1, 两个数
;符号不同, 转移到
第四章 单片机程序设计语言
MOV
CJNE
转移到NEQUAL
CLR
P1.0置0
S
MOV DXCE1COUNTER, #00H
; 将DXCE1COUNTER赋值为0
而如下的注释则给出了额外有用的信息:
JNZ PC Comm_Err
;
第四章 单片机程序设计语言
(2) 注释应与其描述的代码相近, 对单条语句的注释应 放在其上方或右方相邻位置, 不可放在下面, 如放于上方
中职教育-单片机技术应用课件:第3章 指令系统(4).ppt
ANL C,/bit
;C∧(/bit)→C,如ANL C,/21H
(2)逻辑“或”指令
ORL C,bit
;C∨(bit)→C,如ORL C,45H
ORL C,/bit
;C∨(/bit)→C,如ORL C,/27H
说明:
斜杠“/”表示用这个位的值取反,然后再与Cy进行运算,但
并不改变这个位的本身。
第1章单片机基础知识
CCyy
AA77
…
AA00
((cc))循循环环右右移移
AA77
…
(d()d)带带CCy位y 位循环循右环移右移
CCyy
AA77
AA00
…
AA00
第1章单片机基础知识
说明:
(1)“RL A”和“RLC A”指令的相同之处在于两者都是使 A中的内容左移一位,而且两者的不同点在于“RLC A”将 Cy连同A中的内容一起循环左移,A7的内容进入Cy,原来 Cy内容进入A0,但不对其他标志位产生影响。 (2)“RR A”和“RRC A”指令的异同点类似于“RL A” 和“RLC A”,仅是A中的数据移位方向向右。 (3)当A中最高位不为“1”时,可以采用“RL A”指令对A 中的内容做乘2运算。 (4)当A中最高位为“1”时,采用“RLC A”指令对A中的 内容做乘2运算,只是在乘前必须将Cy位清零,此时的数据 实际是包括Cy内的“9”位数据。 (5)当A中最低位不为“1”时,可采用“RR A”指令对A中 的内容做除以2运算。 (6)当A中最高低位为“1”时,采用“RRC A”指令对A中 的内容做除以2运算,只是在运算前必须将Cy位清零,Cy相 当于小数位。
若(bit)=0,则程
序顺序执行
②(bit)=0转移指令:
单片机第4章
中断响应及处理过程 保护断点 寻找中断源 中断处理 中断返回 保护断点和寻找中断源都是由硬件自动完成的,用户不用考虑。
4.2 MCS 51中断系统
MCS-51提供了5个中断源,2个中断优先级控制,可实现2个中断 服务嵌套。可通过程序设置中断的允许或屏蔽,设置中断的优先级。 CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位, 若查到某标志位被置位,将启动中断机制。 MCS-51的中断源 5个中断源: 外部中断源(中断标志为IE0和IE1 ) 由P3.2端口线引入,低电平或下降沿引起。
4 MCS® 51单片机中断系统
4.1 中断系统概念
4.2 MCS 51中断系统 4.3 MCS 51中断响应过程 4.4 MCS 51中断系统编程 4.5 MCS 51外部中断扩展
4.1 中断系统概念
中断是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中 止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完 毕(中断服务完成)后,CPU自动返回原程序的过程。 作用:采用中断技术可以提高CPU效率、解决速度矛盾、实现并行 工作、分时操作、实时处理、故障处理、应付突发事件,可使多项任务 共享一个资源(CPU)。 中断与子程序的最主要区别:子程序是预先安排好的,中断是随机 发生的。 中断涉及的几个环节:中断源、中断申请、开放中断、保护现场、 中断服务、恢复现场、中断返回。
EX0/EX1/ET1/ET0/ES :分别是INT0/INT1、T0/T1、串行口的中断允 许控制位。 =0 :禁止中断; =1 :允许中断。 EA:总的中断允许控制位(总开关): =0 :禁止全部中断; =1 :允许中断。
中断优先级控制寄存器IP(0B8H)
PX0/PX1:INT0/INT1优先级控制位: =0 :属低优先级; =1 :属高优先级。 PT0/PT1:T0/T1中断优先级控制位: =0 :属低优先级; =1 :属高优先级。 PS1:串行口中断优先级控制位: =0 :属低优先级; =1 :属高优先级。
单片机原理与接口技术4ppt精选课件
最新课件
15
§4.1.2 汇编语言源程序格式
⑴标 号
如果标号没有赋值,汇编程序就把存放 该指令目标码第一字节的存储单元的地址 赋给该标号, 所以,标号又叫指令标号。 注意:系统中保留使用的关键字不能用
作标号。
最新课件
16
§4.1.2 汇编语言源程序格式
⑵操作码
对于一条汇编语言指令,这个字段是必不 可少的,
3、DATA语句可以把一个表达式的值赋给字 符名称,其中的表达式应是可求值的。 DATA伪指令在程序中用来定义数据地址
最新课件
38
DB 定义字节命令
格式:DB(项或项表)
功能:通知汇编程序从当前ROM地址开始, 保留一个字节或字节串的存储单元,并存 入DB后的数据。
注意:项或项表可以是一个字节,用逗号 隔开的字节串或括在单引号中的ASCII字符 串。
即汇编后生成目标程序存放的起始地址。
例如:
最新课件
31
ORG 汇编起始命令
例如:
ORG 2000H START: MOV A,#64H
┇ 规定了START的地址是2000H,
又规定了汇编后的第一条指令码从2000H开始存 放。
最新课件
32
END 汇编结束指令
• 格式:END • 功能:通知汇编程序结束汇编。
• 模块长度适中。20条~100条的范围较合适。
最新课件
50
二、编程技巧
1、尽量采用循环结构和子程序。 2、尽量少用无条件转移指令。 3、对于通用的子程序,考虑到其通用性,除了用
于存放子程序入口参数的寄存器外,子程序中用 到的其他寄存器的内容应压入堆栈(返回前再弹 出),即保护现场。
最新课件
实验四 MCS-51单片机外部中断实验ppt课件
精选ppt
3
报告要求
▪ 1、针对具体功能画出流程图 ▪ 2、编写程序 ▪ 3、写出程序执行调试的方法以及各寄存器
的状态
精选ppt
4
实验思考题
▪ 1、若要求3S后恢复原花样,如何编程。
精选ppt
5
感谢亲观看此幻灯片,此课件部分内容来源于网络, 如有侵权请及时联系我们删除,谢谢配合!
实验四 MCS-51单片机外部中断 实验
张正华 200MCS-51单片机外部中断的使用方 法。
▪ 2、掌握外部中断的初始化和设置。
精选ppt
2
实验内容
▪ 1、P1口外接八只二极管,按学生自行设 计的花样发光。外中断0接一单脉冲,当按 下单脉冲发生器,八只发光二极管同时点 亮。编程语言不限。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2) 助记符指令和机器指令一一对应,用汇编语言编
写的程序效率高,占用存储空间小,运行速度快,
用汇编语言能编写出最优化的程序。
(3) 能直接管理和控制硬件设备(功能部件),它能 处理中断,也能直接访问存储器及I/O接口电路。
汇编语言和机器语言都脱离不开具体机器的硬件,均
是面向“机器”的语言,缺乏通用性。
通常有单操作数、双操作数和无操作数三种情况。如
果是双操作数,则操作数之间,要以逗号隔开。
(1)十六进制、二进制和十进制形式的操作数表示
采用十六进制形式来表示 ,某些特殊场合才采用
二进制或十进制的表示形式 。 十六进制,后缀“H” 。 二进制,后缀“B” 。 十进制,后缀“D”,也可省略。
若十六进制的操作数以字符A-F中的某个开头时,则需
(2)对源程序进行交叉汇编得到机器代码;
(3)通过微计算机的串行口(或并行口)把机器代码
传送到用户样机(或在线仿真器)进行程序的调试
和运行。
第(1)步,只需在微计算机上使用通用的编辑软件即
可完成。 第(2)步的交叉汇编所用的汇编程序可在购买单片机 的仿真开发工具时,由厂商提供。 第(3)步骤的实现要借助于单片机仿真开发工具进行。
是必不可缺的。
C语言和汇编语言混合编程
在很多需要直接控制硬件的应用场合,则更是非用汇
编语言不可
使用汇编语言编程,是单片机程序设计的基本功之一
4.1.2
汇编语言语句的种类和格式
两种基本类型:指令语句和伪指令语句 (1)指令语句 已在第3章介绍 每一条指令语句在汇编时都产生一个指令代码——机 器代码 (2)伪指令语句 是为汇编服务的。在汇编时没有机器代码与之对应。
在它前面加一个 “0”,以便在汇编时把它和字符
A~F区别开来。
(2)工作寄存器和特殊功能寄存器的表示 采用工作寄存器和特殊功能寄存器的代号来表示,也 可用其地址来表示。 例如,累加器可用A(或Acc)表示。也可用0E0H来表 示,0E0H为累加器A的地址。
ห้องสมุดไป่ตู้
(3)美元符号$的使用 用于表示该转移指令操作码所在的地址。例如,如下 指令: JNB F0, $ 与如下指令是等价的: HERE:JNB F0,HERE 再如: HERE:SJMP HERE 可写为: SJMP $ 4.注释字段
子程序
A,#01H
Y3Y2Y1Y0+2
Y3Y2Y1Y0+3 Y3Y2Y1Y0+4
MOVC
RET DB DB
A,@A+PC
00H,01H,04H,09H,10H 19H,24H,31H,40H,51H
第1条指令 ADD
A,#01H 的作用是加上偏移量,可
以根据A的内容查出X对应的平方。
MOVC A,@A+DPTR 这条指令的应用范围较为广泛,一 般情况下,大多使用该指令,使用该指令时不必计 算偏移量,使用该指令的优点是表格可以设在64K程 序 存 储 器 空 间 内 的 任 何 地 方 , 而 不 像 MOVC A , @A+PC那样只设在PC下面的256个单元中,使用较方 便。 上面的程序可改成如下形式:
6.在子程序调用时,还要注意参数传递的问题
二、 子程序的基本结构
MAIN: ┇ ┇ LCALL ┇ SUB ;调用子程序SUB ;MAIN为主程序或调用程序标号
┇
SUB:PUSH
PSW ;现场保护
PUSH
ACC ;
子程序处理程序段
POP
POP
ACC
PSW
;现场恢复
;
RET
;最后一条指令必须为RET
的计算,要根据转移的目标地址计算偏移量,不但
麻烦,且容易出错。
4.2.2
机器汇编
用编辑软件进行源程序的编辑。编辑完成后,生成一
个ASCII码文件,扩展名为“.ASM”。然后在微计算
机上运行汇编程序,把汇编语言源程序翻译成机器
代码。
交叉汇编—汇编后的机器代码是在另一台计算机(这
里是单片机)上运行。 MCS-51单片机的应用程序的完成,应经过三个步骤; (1)在微计算机上,运行编辑程序进行源程序的输入 和编辑;
3.高级语言
不受具体机器的限制,使用了许多数学公式和数学计算
上的习惯用语,非常擅长于科学计算。常用的如 BASIC、FORTRAN以及C语言等。 高级语言优点:通用性强,直观、易懂、易学,可读 性好。
使用C语言(C51)、PL/M语言来进行MCS-51的应用程
序设计。
对于程序的空间和时间要求很高的场合,汇编语言仍
反汇编——分析现成产品的程序,要将二进制的机器 代码语言程序翻译成汇编语言源程序。 例4-2 下面是一段源程序的汇编结果,读者可通过查 第3章的表3-3至表3-7 ,进行手工汇编,来验证下 面的汇编结果是否正确。
见表4-1(P75)
4.3 汇编语言实用程序设计
4.3.1
汇编语言程序的基本结构形式
常采用以下几种基本结构:
基本语法规则:
1.标号字段
是语句所在地址的标志符号
(1)标号后边必须跟以冒号“:”
(2)由1-8个ASCII字符组成
(3)同一标号在一个程序中只能定义一次
(4)不能使用汇编语言已经定义的符号作为标号
2.操作码字段
是汇编语言指令中唯一不能空缺的部分。汇编程序就
是根据这一字段来生成机器代码的。
3.操作数字段
标号字段
操作码字段
操作数字段
;0→A
;10→R1
注释字段
START: MOV A,#00H
MOV MOV LOOP:ADD R1,#10
R2,#00000011B ;3→R2 A,R2 ;(A)+(R2)→A
DJNZ R1,LOOP;R1内容减1不为零,则循环 NOP HERE: SJMP HERE
START: MOV A,#00H
┋
规定标号START代表地址为2000H开始。
在一个源程序中,可多次使用ORG指令,来规定不同
的程序段的起始地址。但是,地址必须由小到大 排列,地址不能交叉、重叠。例如: ORG 2000H ┇
ORG
2500H
┇
ORG 3000H
┇
2. END(END of assembly)汇编终止命令
例4-3 单字节有符号数的加减法子程序(自己阅读)
本例中参数传递是通过累加器A完成的,主程序将被转
换的数送到A中,子程序将A中的有符号数求补后存 于A中,主程序再将结果放回原来的单元。
例4-4
4位BCD码的减法程序(自己阅读)
主程序通过地址寄存器R0和R1将参加运算的BCD码的地 址传递给子程序,子程序则通过累加器将差传递给 主程序。 4.3.3 查表程序设计
TEST
EQU
2000H
表示标号TEST=2000H,在汇编时,凡是遇到标号TEST 时,均以2000H来代替。 4.1.4 汇编语言程序设计步骤
(1)分析问题,确定算法
(2)根据算法,画出程序框图
(3)分配内存工作区及有关端口地址
(4)编写程序,养成在程序的适当位置上加上注释的
好习惯。
(5)上机调试
(2002H)=18H(10进制数24)
(2003H)=43H(字符“C”的ASCII码)
(2004H)=42H(字符“B”的ASCII码)
DB功能是从指定单元开始定义(存储)若干个字节,
10进制数自然转换成16进制数,字母按ASCII码
存储。
4.DW(Define Word)定义数据字命令
从指定的地址开始,在程序存储器的连续单元中
后,伪指令已无存在的必要,所以“伪”体现在汇编
时,伪指令没有相应的机器代码产生。
常用的伪指令:
(ORiGin)汇编起始地址命令 在汇编语言源程序的开始,通常都用一条ORG伪指令来 实现规定程序的起始地址。如不用ORG规定,则汇编 得到的目标程序将从0000H开始。例如:
ORG 2000H
第4章
MCS-51汇编语言程序设计
汇编语言是面向机器硬件的语言,要求程序设计者对
MCS-51单片机具有很好的“软、硬结合”的功底。
介绍程序设计的基本知识及如何使用汇编语言来进行 基本的程序设计。 4.1 4.1.1 汇编语言程序设计概述 机器语言、汇编语言和高级语言
用于程序设计的语言基本上分为3种:机器语言、汇编 语言和高级语言。
1.子程序的第一条指令的地址称为子程序的入口地
址。该指令前必须有标号。
2.主程序调用子程序
两条子程序调用指令:
(1)绝对调用指令:ACALL addr11
(2)长调用指令:LCALL addr16
3.注意设置堆栈指针和现场保护
4.最后一条指令必须是RET指令
5.子程序可以嵌套,即子程序可以调用子程序
1.机器语言
二进制代码表示的指令、数字和符号简称为机器语
言不易懂,难记忆,易出错。
2.汇编语言
英文助记符表示的指令称为符号语言或汇编语言
将汇编语言程序转换成为二进制代码表示的机器语
言程序称为汇编程序
经汇编程序“汇编(翻译)”得到的机器语言程序称 为目标程序,原来的汇编语言程序称为源程序。 汇编语言特点: (1) 面向机器的语言,程序设计员须对MCS-51的硬件 有相当深入的了解。
无符号数与DPTR中的内容相加,所得结果为某一程 序存储单元的地址,然后把该地址单元中的内容送 到累加器A中。 指令“MOVC A,@A+PC”以PC作为基址寄存器,PC的内 容和A的内容作为无符号数,相加后所得的数作为
某一程序存储器单元的地址,根据地址取出程序存储 器相应单元中的内容送到累加器A中。 指令执行完,PC的内容不发生变化,仍指向查表指令 的下一条指令。 优点:预处理较少且不影响其它特殊功能寄存器的值,