




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章MCS-51单片机汇编语言程序设计血”第3章MCS-51单片机汇编语言程序设计单片机微型计算机与接口技术-糜-第3章MCS-51单片机汇编语言程序设计内容提概述伪指令汇编语言程序设计步骤顺序程序设计分支程序设计循环程序设计位操作程序设计3-1概述MCS-51单片机的编程语言可以是汇编语言也可以 是高级语言(如C语言),高级语言编程快捷,但程 序长,占用存储空间大,执行慢;汇编语言产生的目 标程序简短,占用存储空间小,执行快,能充分发挥 计算机的硬件功能。无论是高级语言还是汇编语言, 源程序都要转换成目标程序(机器语言)单片机才能 执行。第3章MCS-51单片机汇编语言程序设计C语言程序汇
2、编语言源程序浮动地址目标程序绝对地址目标程序BINHEX汇编器A51连接/定位器L51符号转换程序OHS51图3-1两种语言源程序转换成目标程序晁 第3章MCS51单片机汇编语言程序设计目前很多公司将编辑器、汇编器、编译器、连接/定位 器、符号转换程序做成集成软件包,用户进入该集成环境, 编辑好程序后,只需点击相应菜单就可以完成上述的各步, 如 WAVE、KEIL, WAVE集成软件的使用见附录。汇编:将汇编语言源程序转换成机器语言目标程序的 过程称为汇编。费 第3章MCS51单片机汇编语言程序设计汇编程序:能将汇编语言源程序转换成机器语言目标 程序的系统软件称为汇编程序。汇编的方法:汇编的方
3、法有两种1 手工汇编:人工查指令表,査出程序中每条指令对应的机器代码。早期的计算机使用。2.机器汇编:用计算机中的汇编程序对用户源程序进行汇编。用机器汇编要提供给汇编一些信息,遵循汇编程 序的一些约定。这些由伪指令指定。应 第3章MCS51单片机汇编语言程序设计1)确定程序中每条汇编语言指令的指令机器码2)确定每条指令在存储器中的存放地址3)提供错误信息庭 第3章MCS-51单片机汇编语言程序设计4)提供目标执行文件(*.OBJ/*.HEX)和列表文件(咒LST)地址机器码源程序ORG 2000H2000H78 30MAIN: MOV RO, #30H2002HE6MOV A, R03.2 伪
4、指令一、汇编语言指令类型1 机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被CPU执行。2伪指令:汇编控制指令,没有指令代码,只用于汇编 过程,为汇编程序提供汇编信息。宏汇编功能:将需要反复多次执行的程序段定义成一个宏 指令名(宏定义)。编程时,可在程序中使用宏指令名来替 代被定义的程序段(宏调用)。第3章MCS-51单片机汇编语言程序设计届1第3章MCS-51单片机汇编语言程序设计-OCCHJuO二伪指令常用伪指令及功能:1 起始指令ORG nn功能:定义程序或数据块的起始地址。指令地址机器码2000H78 302002H E6ORGMAIN:源程序2000HMOV R
5、O, #30HMOV A, R0ORG 3000HTAB: DB 23H, 100,A3000H233001H 64-駐 第3章MCS51单片机汇编语言程序设计地址数据LN20LN+143LN+225LN+3FF2字节定义 标号:DB (字节常数,或字符或表达 式)功能:指示在程序存储器中以标号为起始地址的单 元里存放的数为字节数据(八位二进齐 例LN: DB 32, 2 25H,1;LNLN+2地址单元依次存放20H ,FFH3字定义 标号:DW (字常数或表达式) 作用:指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即16位的二进制数),例如:GH : DW 1234H,2,
6、 08GH34GH+2FFFEGH+400第3章MCS-51单片机汇编语言程序设计5.等值指令 标号EQU (数值表达式)表示FQIJ两边的量等值,用于为标号或标识符赋 值。例如: XI EQU 2000HX2 EQU 0FHMAIN:MOV DPTR, #X1 ; DPTR=2000HADD A, #X2; A=A+0FH專 第3章MCS51单片机汇编语言程序设计6.位定义标号BIT 位地址作用:同EQU指令,不过定义的是位操作地址。 例如 AIC BIT Pl.lo7汇编结束END作用:指示源程序段结束。END指令放在程序的d后OA51汇编程序还有一些其它的伪指令,列在教材表31中,以 备
7、查阅。鑼 第3章MCS51单片机汇编语言程序设计汇编语言程序设计步骤一确定方案和计算方法二了解应用系统的硬件配置、性能指标三建立系统数学模型,确定控制算法和操作步骤 四合理分配存储器单元和了解I/O接口地址五编制源程序1 按功能设计程序,明确各程序之间 的相互关系2. 用流程图表示程序结构和功能3 程序中用注释说明指令在程序中的 作用,方便阅读、调试和修改届1第3章MCS-51单片机汇编语言程序设计-OCCHJCO3.3顺序程序设计顺序程序是一种最简单,最基本的程序。特点:程序按编写的顺序依次往下执行每一条指令,直到最后一条。-矗 第3章MCS-51单片机汇编语言程序设计例:将30H单元内的两
8、位BCD码拆开】开始 )I 二 取数据低4位并转换成ASCII码,转换成ASCII码存ASCII码存入RAM两个单 元中。駐第3章MCS51单片机汇编语言程序设计MOVA,30H;取值ANLA,#0000111 IB;取低4位ADDA,#30H;转换成ASCII码MOV32H, A;保存结果MOVA,30H;取值SWAPA9高4位与低4位互换ANLA,#0FH;取低4位(原来fADDA,#30H;转换成ASCII码MOV31H, A;保存结果SJMP$END t|ORG 0000HI第3章MCS51单片机汇编语言程序设计例3-1编程将外部数据存储器的OOOEH和OOOFH 单元的内容相换。分析
9、:外部数据存储器的数据操作只能用 MOVX指令,且只能和A之间传送,因此必须 用一个中间环节作暂存,设用20H单元。用编 程过程如下:显霑第3章MCS51单片机汇编语言程序设计OOOEHOOOFH三OOOEHOOOEHOOOFHOOOFH OOOEHOOOFHOOOEH4OOOFHOOOEHOOOFHOOOEHOOOFH-巔 第3章MCS51单片机汇编语言程序设计ORG 0000HMOV DPTR, #OOOEHMOVX A, DPTR ;A=(000EH)MOV 20H, A ;(20H)=(000EH)INC DPTRMOVX A, DPTR ;A=(000FH)XCH A, 20H; A
10、=(000EH),(20H)=(000FH)MOVX DPTR, AMOV A, 20HMOV DPTR, #OOOEHMOVX DPTR, A ;交换后的数送各单元例34设变量放在片内RAM的20H单元,其值为地址数据TAB0TAB+11TAB+24TAB+39TAB+416HTAB+525H放入片内RAM的21H单元。00H05H之间,要求编查表程序,查出变量的平方值,并分析:在程序存储器安排一张平方表,首地 址为TAB,以DPTR指向表首址,A存放 变量值,利用查表指令MOVCA, A+DPTR,即可求得。駐第3章MCS-51单片机汇编语言程序设计表中数据用BCD码存放合乎人们的习惯.O
11、RG 0000HMOV DPTR,#TABMOV A,20HMOVC A,A+DPTR ;査表MOV 21H,ASJMP$TAB2: DB 00H,01H,04H,09H,16H,25HEND辱 第3章MCS51单片机汇编语言程序设计读程序MOV Rl,#16MOV R0,#30HMOV DPTR,#2000HAGA: MOV A,ROMOVX DPTR,AINC ROINC DPTRDJNZ R1,AGASJMP $END盘爲 第3章MCS-51单片机汇编语言程序设计3. 4分支程序的设计形成分支结构由条件转移指令构成程序判断框部分,35. 1单分支程序一个判断决策框,两种分支结构图。 例1
12、求8位有符号数的绝对值。方法:正数不变,负数变补影响条祚条件满足?,ORG 0000HMOVA, R2JNBCPLINCMON: SACC.7, N;最高位不是1,为正数? A;负数变补AR2, A$影响条件V条件瀝西处理1丨处理2矗 第3章MCS51单片机汇编语言程序设计MOV A,R0JZ ZEMOV R1 ,#0FFHSJMP $ZE: MOV Rl,#()SJMP $晁 第3章MCS51单片机汇编语言程序设计3.5 循环程序设计当程序中的某些指令需耍反复执行多次吋,釆用循环程 序的方式,这样会使程序缩短,节省存储单元(并不节省 执行时间)。循环次数的控制,有两种控制方式:第一种方法先判
13、断再处理即先判断满不满足循环条件,如不满足,就 不循环,多以循环条件控制。第二种方法先处理再判断,即循环执行一遍后,下一轮还需不需要进行,多以计循环次数控制。循环可以有单重循环和多重循环,在多重循环中,内外循环不能交叉,也不允许外循环 跳入内循环。下面通过几个实例说明循环程序的设计方法。站第3章MCS-51单片机汇编语言程序设计计算执行单循环所用的时间,晶振频率为6MHzMOV Rl, #FFH; 一个机器周期DL1: NOP; 一个机器周期NOP;个机器周期DJNZ Rl, DL1 ;两个机器周期执行程序所用时间与以下因素有关:晶振频率(机器周期).指令的机器周期(附录A査每条指令机器周期计
14、算程序的执行时间)第3章MCS-51单片机汇编语言程序设计指令的条数次数1、由于晶振采用6MHz, 一个机器周期是2ps(?) 单片机外接晶振频率6MHZ时的各种时序单位:振荡周期二 1/fosc 二 1/6MHZ二0 167ps状态周期二2/fosc二2/6MHZ二0 334pis机器周期二 12/fosc二 12/6MHZ二2. 004us=2ps 指令周期二(14)机器周期二14戶2、指令的条数(次数):(1+1+2) X255+13、计算执行单循环所用的时间(1+1+2) X2psX255+2ps=2042ps算第3章MCS-51单片机汇编语言程序设计用单循环实现1ms延时MOV R1
15、, #?;DLl: NOPNOP ;空操作指令DJNZ RE DLl第3章MCS-51单片机汇编语言程序设计(1+1+2) X2jiSXMT=1000jiSMT=125=7DH例3-9设计 延时10ms的延时子程序,己知单片机使用的晶振为6MHz(6* 106)。用单循环可以实现Ims延时, 外循环10次即可达10ms延时。輕第3章MCS51单片机汇编语言程序设计例:XunhuaneasmORG 0000HDL2: MOVDL1: NOPNOPDJNZDJNZMOV RO, #0AHRl, #7DH;外循环10次;内循环MT次;空操作指令Rl, DL1RO, DL2SJMP $计算总的延时时间
16、:1+1+ (1+1+2) X 125+2*10 X2|iS=10062gS=10.062mS寸更长时间,可以采用多重循环。若需雄 第3章MCS51单片机汇编语言程序设计MOV R(),#()F7HDI 2 MOV R 1 ,#()FDHDLkNOPNOPDJNZ R1,DL1DJNZ R0,DL2sjmp $end金第3章MCS51单片机汇编语言程序设计例:Xunhuanl.asmMOV Rl, #0F8HLOOP: MOV R3, #0FAHDJNZ R3, $DJNZ Rl, LOOPRET(1+(1+2*0xFA+2)*0xF8+2)* 2us =(1+(1+2*250+2)*248+
17、2)*2us49.494ms第3章MCS-51单片机汇编语言程序设计知道每条语句的执行时间,因此,通过汇编语言编写出较为精确的延时程序,很容易控制时间但软件延时占用CPU时间,所以比较适合短暂延时.单片机片内有专用的可编程定时器,一般使用定时器控制时间,定时器不占用CPU3.6位操作程序设计MCS-51单片机有着优异的位逻辑功能,可以方便的实现 各种复杂的逻辑运算这种用软件替代硬件的方法,可以大 大简化甚至完全不用硬件,但比硬件要多花运算时间。例317编写一程序,以实现图34中的逻辑运算电路.层第3章MCS51单片机汇编语言程序设计图34硬件逻辑运算电路其中P1.1和P2.2分别是端口线上的信
18、息,TFO和IE1分别是 定时器定时溢出标志和外部中请求标志,25H和26H分别是两个 位地址,运算结果由端口线P1.3输出。届l第3章MCS-51单片机汇编语言程序设计_CCCHJuO船鬼 第3章 MCS51单片机汇编语言稈序设计程序如下:START:MOV C,P2.2ORL C,TFOANL C,P1.1MOV FO,C ;PSW的用MOV C,IE1; TCON 的ORL C, /25H ;对25HEANL C,FOANL CJ26HMOV Pl.3,CSJMP$要注意,位的逻辑运算其中一个操作数必须在C。ORG 0000HMOV C,20HANL C,2FHCPL CORL CJ2F
19、HCPL CANL C,53HMOV P1.0,CSJMP $END3.7子程序当一段程序需多次应用,或为多人应用时,这段程序编为子 程序.子程序是构成单片机应用程序必不可少的部分,通过 ACALL和LCALL两条子程序调用指令,可以十分方便地 用来调用任何地址处的子程序。子程序节省占用的存储单元,使程序简短、清晰,善于灵活的使用子程序,是程序设计的重要技巧之一。子程序必须以RET指令结尾.在调用子程序时,有以下几点应注意:b第3章MCS-51单片机汇编语言程序设计1)保护现场。如果在调用前主程序已经使用了某些存储单元或寄存器,在调用时, 这些寄存器和存储单元又有其他用途,就应先把这些单元或寄
20、存器 中的内容压入堆栈保护,调用完后再从堆栈中弹出以便加以恢复。 如果有较多的寄存器要保护,应使主、子程序使用不同的寄存器组。2)设置入口参数和出口参数。用之前主程序要按子程序的要求设置好地址单元或存储器(称为 入口参数),以便子程序从指定的地址单元或存储器获得输入数据; 子程序经运算或处理后的结果存放到指定的地址单元或寄存器 (称为出口参数),主程序调用后从指定的地址单元或寄存器读取 运算或处理后的结果,只有这样,才能完成子程序和主程序间的数 据的正确传递。显雲第3章MCS51单片机汇编语言程序设计主程序:ORG 0000HMOV SP, #3FHMOV A, 31H;取aLCALL SQR
21、;求3方MOVR1, AMOV A, 32H;取bLCALLSQR;求b方ADDA, R1;求和DA A;调整MOV 33H, AMOV A, #0ADDC A, #0MOV 34H, ASJMP $0030H子程序:ORG 0030HSQR: INCA0301HMOVC A, A+PC0302HRET0303HTAB: DB 00H,01H,04HDB 09H 16H,25H,DB 36H,49H64H,81HEND显薜-第3章MCS-51单片机汇编语言程序设计3.8小结1、程序设计的关键在于指令熟悉和算法(思路)正确、清晰, 对复杂的程序应先画出流程图。只有多做练习多上机调试, 熟能生巧,才能编出高质量的程序。2、伪指令是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养护资产管理办法
- 内审员管理办法
- 内网准入管理办法
- 内部福利管理办法
- 军人生育管理办法
- 军校学生管理办法
- 农业品种管理办法
- 农垦改革管理办法
- 农村厨房管理办法
- 农村果业管理办法
- (高清版)DB36∕T 1324-2020 公路建设项目档案管理规范
- 2025年中考数学总复习《一元二次方程》专项测试卷带答案
- 工艺品雕刻工国家职业标准(2024版)
- 2024年河北省公务员考试《行测》真题及答案解析
- 2025年八省联考新高考 语文试卷
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- 《进一步规范管理燃煤自备电厂工作方案》发改体改〔2021〕1624号
- JGJT299-2013 建筑防水工程现场检测技术规范
- 输变电工程施工质量验收统一表式附件1:线路工程填写示例
- 健康教育指导评分表
- 快速入门穿越机-让你迅速懂穿越机
评论
0/150
提交评论