欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第四章汇编语言程序设计基础课件.ppt

    • 资源ID:1833502       资源大小:376.50KB        全文页数:73页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第四章汇编语言程序设计基础课件.ppt

    第四章汇编语言程序设计基础,第四章汇编语言程序设计基础,第一节、概述第二节、基本程序设计方法第三节、汇编语言程序的编辑和汇编,第一节、概述,1、程序设计语言2、汇编语言源程序的格式3、伪指令,1、程序设计语言,程序设计语言:计算机能理解和执行的语言称计算机程序设计语言。 程序设计:用程序设计语言把解决问题的步骤描述出来。程序设计语言的分类:按照语言的结构及其功能可以分为三种机器语言、汇编语言、高级语言,(1)机器语言(Machine Language) 用二进制代码0和1表示指令和数据的最原始的程序设计语言。(2)汇编语言(Assembly Language) 指令用助记符表示,地址、操作数可用标号、符号地址及字符等形式来描述。(3)高级语言 (High-Level Language) 接近于人的自然语言,面向过程而独立于机器的通用语言。,三种语言程序处理过程,2、汇编语言源程序的格式,1、汇编语言源程序是由汇编语句(即指令)组成的。2、汇编语言的语句最多由四部分(四个字段)组成:【标号:】操作码【操作数】【;注释】 START:MOVA,30H;A(30H) 标号之后用冒号“:”与操作码隔开 操作码之后用空格“ ”与操作数隔开 两操作数之间用逗号“,”隔开 注释之前用分号“;”与操作数隔开,标号字段说明,标号是指令的符号地址,一个标号的值是该指令代码第一个字节的地址。在程序的其它地方可以引用这个标号以代表这个特定的地址。不是每条指令都采用标号,只有那些被其它语句(如转移、调用)引用的语句和数据,才需要赋予标号,以便实现控制程序的转移或调用。,标号的使用有以下规定:(1)标号由大写英文字母开头的字母和数字串组成,长度为18个字符。最后必须以冒号“:”结束。(2)不能使用指令助记符、CPU的寄存器名以及伪指令等作为标号。(3)同一程序内,标号必须互不相同。(4)为便于阅读程序,最好使标号字符有一定含义。,3、伪指令,MCS-51单片机汇编语言,包含两类不同性质的指令。(1)基本指令:即指令系统中的指令。它们都是机器能够执行的指令,每一条指令都有对应的机器码。(2)伪指令:汇编时用于控制汇编的指令。它们都是机器不能执行的指令,无机器码。,(1)、定位伪指令ORG,格式: ORG 16位地址或标号功能: 用在一段源程序或数据块的前面,说明紧随在后的程序段或数据块的起始地址。例如: ORG 2000H START: MOV A,#64H END,说明START的值为2000H,(2)、汇编结束伪指令END,格式: 标号: END 表达式功能: 用在汇编语言源程序的最后,是源程序的结束标志。在机器汇编时,当汇编程序检测到该语句时,它就确认汇编语言源程序已经结束,对END后面指令都不予汇编。 如果源程序是一段子程序,END后不写表达式;若是主程序,则必须写表达式,所写表达式就是该主程序第一条指令的标号,表示该程序的可执行段的首地址。,(3)、赋值伪指令EQU,格式: 字符名称 EQU 表达式功能: 汇编程序自动把EQU右边的“表达式(8位或16位)”的值赋给左边的“字符名称”。“字符名称”必须先赋值后使用。EQU伪指令与存储单元无关。 在某程序中,一旦用EQU伪指令对某字符名称赋值之后,就不能再用EQU伪指令来改变其值,其值在整个程序中是固定的。这里“字符名称”不同于标号,因此不加冒号。,例:,ORG 2000HBTEQU R3DATAEQU 30HDELAYEQU 1050HMOV R0,DATA ;R0(30H)MOV A,BT;A(R3)LCALL DELAY;调用1050H子程序END,(4)、定义字节伪指令 DB,格式: 标号: DB X1,X2,Xn功能:把右边的Xi(i=1n)依次存放到以左边标号为起始地址的连续的存储单元中。其中Xi为8位二进制数据(或十进制、十六进制、表达式、ASCII码等多种形式)。,例:,ORG 1200HTAB: DB 50H,10001100B,100,2*5,-4TAB1: DB D,2,#,ABC,例中的字符以ASCII码存入(例如:D、#、ABC)。负数用补码存入(例如:-4)。,TAB的地址1200HTAB1的地址为1205H,(5)、定义字伪指令DW,格式: 标号: DW X1,X2,Xn功能: DW与DB功能相似,区别在于DB定义的是字节,DW定义的是字(两个字节),所以Xi是16位的数据字或标号,但该标号必须事先赋值。汇编时一个字数据占用两个连续的存储单元。,例:,ORG 1500HDATAEQU 3522HADDR: DW 3456H,9BH,10DW DATA,高字节在前(低地址单元)低字节在后(高地址单元),(6)、定义存储空间伪指令DS,格式:标号: DS 表达式功能:指示汇编程序从DS伪指令的“标号”开始,预留一定数量的存储单元,以备程序执行时使用。预留单元数量由DS语句中“表达式”的值决定,“表达式”可以是数值也可以是数学表达式,例:,ORG 0300H BASE: DS 10 DB AB,(7)定义位地址符号伪指令BIT,格式:字符名称 BIT 位地址功能:把BIT右边的位地址赋给它左边的“字符名称”,B1,B2两个字符定义成位地址01H(即20H.1),和P2口的第0位。,例: ORG 1000HB1 BIT 01HB2 BIT P2.0MOV C,B1MOV B2,C END,第三节、汇编语言程序的编辑和汇编,1、汇编语言源程序的编辑方法 编辑:是指对源程序进行输入、修改、保存等操作,从而正确的将汇编语言源程序输入计算机,建立以 .ASM为扩展名的源程序文件。三步:用编辑程序生成以.ASM为扩展名的源程序文件。用汇编程序生成目标文件。用连接程序把多个目标文件连接在一起,形成一个大的可执行的文件。,由于单片机本身不具备开发功能,只能通过微型计算机系统来完成以上功能。最终还必须借助于开发装置来排除应用系统在设计过程中的硬件故障、以及目标程序中存在的程序错误。当目标系统调试成功以后,再用开发装置把目标程序固化到单片机的内部或外部EPROM芯片中。几乎所有的开发装置都带有系统集成软件,其中都包含有相应的编辑程序。,2、汇编语言源程序的汇编步骤,两类汇编方法:人工汇编、机器汇编(1) 人工汇编先确定程序在程序存储器的起始地址,然后按源程序的顺序逐条转换成机器语言代码,并以字节为单位从起始地址依次排列。对暂时无法确定其实际值的标号或地址偏移量应预留出位置。全部翻译完成后,再对未确定的标号和地址偏移量进行计算和确定,正确填入指令预留出的位置中。,例:对下面源程序进行人工汇编, 首先查指令表写出每条指令的指令代码及第一字节的地址 地址指令代码源程序ORG 3000H3000HD2 91START:SETB P1.13002H75 30 03DL: MOV 30H,#03H3005H75 31 F0DL0: MOV 31H,#0F0H3008HD5 31 rel1DL1: DJNZ 31H,DL1300BHD5 30 rel2 DJNZ 30H,DL0300EHB2 91 CPL P1.13010H空1 空2 AJMP DL END, 对空格中的值进行计算,计算偏移量rel1、rel2已知:偏移量=目标地址当前PC值所以:rel1=3008H300BH= -3 补码表示:rel1=0FDH同理:rel2=3005H300EH= -9补码表示:rel1=0F7H 计算转移地址指令原形:AJMP add11,其中add11=a10a9 a1a0指令代码:a10a9a800001 a7 a0已知:DL=3002H,取其低11位,即add11=000 0000 0010B所以:空1=01H,空2=02H 分别用求得的数将4个空格填好,人工汇编结束,(2)机器汇编,机器汇编是由机器执行“汇编程序”,自动把汇编语言源程序翻译成目标代码。机器汇编的原理和人工汇编类似,实际上是人工汇编的模拟。,3、程序存储器的写入方法,单片机的应用程序一但调试好后就固化在程序存储器中,以避免受到破坏。程序存储器可以在单片机内部(ROM或EPROM),也可在外部(EPROM)。ROM型的存储器其程序是由厂家固化在芯片内。而EPEOM型的存储器是可编程的,允许用户自行写入程序,但必须借助于编程器。市面上有各种智能型多功能编程器,可连接在微机的并行口上,可对上千种器件进行编程(即写入)、测试、加密、逻辑仿真等。许多编程器支持DOS和Windows98双平台界面。此外许多仿真器也专门设置了编程器,专门对EPROM芯片编程。,第二节、基本程序设计方法,一、程序设计步骤:1分析任务:对任务进行仔细的调查研究,收集必要的现场数据。 2确定算法:把控制系统的计算任务或控制对象的物理过程演化为计算机可以处理的形式,并拟制出具体的算法和步骤。3绘制程序流程图:将文字步骤加以图解,而成为流程图(又称程序框图)。流程图充分地表达了程序的设计思路,将问题与程序联系起来,使复杂问题简化和收到提纲挈领的效果 。,4编写汇编语言源程序:根据流程图编写程序(用汇编语言指令实现流程图中每一个功能框的要求),这就是源程序设计。 6上机调试:必须通过上机调试得到正确的结果,才能认为是正确的程序。判断程序质量的三个标准:1、程序的执行时间短2、占用的内存单元数少3、程序的语句行数少,程序流程图,用约定的几何图形、流向线及必要的文字说明构成的用以描述程序过程的图形。,1、端点符号,2、处理符号,3、判断符号,4、调用符号,5、流程线,6、连接符号,二、基本程序设计,(一)顺序程序(简单程序) 特点:是一种基本上按指令书写顺序从头至尾逐条执行的程序。它是程序设计的基础,也能解决某些实际问题,或成为复杂程序的某个组成部分。例41:拆字程序 设内部RAM的20H单元中存有两位BCD码,请编程把它拆成两段,十位BCD数存入21H的低4位,个位BCD数存入22H的低4位。21H,22H单元的高4位置0 。,ORG 1000HST:MOV R0,#20H;源数据指针MOV R1,#22H;目的数据指针MOV A,R0;取源数据送AANL A,#0FH;分离出个位BCD数MOV R1,A;个位BCD数存22H单元MOV A,R0;重新取数ANL A,#0F0H;分离出十位BCD数SWAP A;十位BCD数换到低4位DEC R1;调整目的数据指针MOV R1,A ;十位BCD数存21H单元END,(二)分支程序,特点:在实际问题中,从第一条指令一直执行到最后一条指令的顺序程序是不多的。通常需要计算机对某种情况作出判断,根据判断结果作出相应的处理,而分支程序就充分体现了计算机的这种分析判断能力。程序的分支是通过条件转移指令实现的,根据判断给出的条件满足与否选择程序的不同走向。,例43:符号函数,X-存在片外ROM的VAR单元中Y-存放在片外RAM的DATA单元中解:变量X以补码存放。先对符号进行判断。若X0,则令Y=0;若X0,再判是否小于0,若是则令Y= -1;不是就令Y=1。,流程图:,ORG 0100HSTA:MOV DPTR,#VAR MOV A,#00H MOVC A,A+DPTR;取数(A)X JZ DONE;若X=0,则转DONE JNB ACC.7,PLUS;若X0,则转PLUS MOV A,#0FFH ;若X0,则(A)-1 SJMP DONEPLUS:MOV A,#01H;若X0,则(A)1DONE:MOV DPTR,#DATA MOVX DPTR,A;存Y值 END,例44:多路分支程序,根据R5的内容转向相应的处理程序,设R5的内容为0N,对应处理程序的入口地址分别为BR0BRN。根据某一输入变量或运算结果的值实现多路分支的程序,若采用条件转移指令逐次比较,程序的执行速度会很低。通常采用转移指令表或转移地址表实现。,解1:采用转移指令表实现多路分支。先在程序存储器中建立一张起始地址为TAB的绝对转移指令表,表中连续存放N条AJMP指令,每条AJMP指令对应一个分支(占两个字节)。,ORG 3100HSRA:MOV A,R5;取数(A)R5RL A;(A)(A)*2MOV DPTR,#TAB;TAB转移指令表首地址JMP A+DPTR;跳转到(A)+DPTR单元TAB:AJMP BR0;转分支0AJMP BR1;转分支1AJMP BR2;转分支2AJMP BR3;转分支3AJMP BRN;转分支NEND,由于JMP A+DPTR指令转移的范围是以DPTR为起始的256个字节空间,故由AJMP构成的转移指令表其最大长度不能超过256个字节,由于AJMP指令为两字节指令,故表中可连续存放128条AJMP 指令,实现128路分支的转移。所以R5中的N=0128。由于AJMP指令的转移范围是2KB,因此分支处理程序的位置受到了限制,必须驻留在与AJMP指令同一个2KB存储区内。若把转移指令表中的AJMP改为LJMP指令,则分支处理程序可分布在整个64KB范围内,但程序中N要进行乘3处理。,解2:采用转移地址表实现多路分支 先在程序存储器中建立一张起始地址为TAB的转移地址表,表中连续存放N个处理程序的入口地址。根据R5的内容(即分支转移序号乘以2),由查表指令MOVC取出相应分支入口地址送入DPTR中,再执行JMP A+DPTR指令(A清0)转向相应的处理程序。,ORG 0300HSTA: MOV A,R5;取分支转移序号(A)R5RL A;(A)(A)*2MOV R0,A;(A)*2后暂存入R0MOV DPTR,#TAB;置转移地址表首地址TABMOVC A,A+DPTR;取入口地址的高8位到AXCH A,R0;入口地址的高8位暂存R0INC AMOVC A,A+DPTR;取入口地址的低8位到AMOV DPL,AMOV DPH,R0;入口地址送DPTRCLR A;(A)0JMP A+DPTR;转向处理程序TAB: DW BR0;转移地址表DW BR1DW BR2DW BRNEND,(三)循环程序,顺序程序中:所有的指令仅被执行一次;分支程序中:有的指令被执行一次,而有的可能一次也未被执行。实际应用中:需要反复执行某种操作,而每次完成这些操作都是执行同样的程序,只是处理的数据不同,这时就可以采用循环程序结构 循环程序:使所需程序段自动执行多次,而无须多次写出这段程序,使源程序大大缩短,同时也节省了内存空间,但不能节省执行时间。,例45 负数求补程序:外部RAM地址为3000H的数据块中有100个补码,要求逐一检查,若为负数则取补后放回,正数则不变。 编制循环程序的要点:发现和寻找过程中具有重复性和规律性的部分,并分析出重复的次数、重复结束的条件等。 解:这个任务中规律性的过程是:取数、判符号、若为负数则取补,负数求补程序流程图,ORG 1000HSTART:MOV DPTR,#3000H;置地址指针MOV R7,#64H;置计数初值LOOP1:MOVX A,DPTR;取数JNB ACC.7,LOOP2;若正数转LOOP2CPL AINC A;负数取补MOVX DPTR,A;负数取补后送回LOOP2:INC DPTR;修改地址指针DJNZ R7,LOOP1;100个数未完继续END,循环程序的结构包括四个部分:,(1)初始化部分:为循环做准备。(2)处理部分(循环体部分):实际数据处理部分,是重复执行的程序段部分,是循环程序的主体。(3)控制部分:控制循环的进行和结束。两个内容:1、修改循环参数为下一次循环做准备;2、判断是否满足结束条件,若不满足则转去继续执行循环体部分,满足则退出循环。(4)结束部分:存放所得结果,恢复某些工作单元的初值。,循环程序的2种组织方式,两种组织方式的区别 1、判断循环结束条件的时刻不同:方式1:处理部分至少执行一次方式2:处理部分可能一次也不执行,2、程序的出口不同:方式1:程序的出口在最后方式2:程序出口通常不是在最后,例46 发送字符串程序,一串ASCII字符存放在以BLOCK开始的连续片外RAM单元中,以空白字符“0”结尾。要求用串行口发送出去。循环结束条件是通过检查约定的结束标志0来决定继续循环或终止循环。循环次数不定的情况采用方式2。,发送字符串程序流程图,ORG 2000HMOV DPTR,#BLOCK;字符块首地址LOOP: MOVX A,DPTR;取要发送字符JZ NEXT; 0字符转结束LOOP1:JNB TI,LOOP1;上个发送完吗?CLR TI;发送完清TIMOV SBUF,A;发送字符INC DPTR;调整指针下一个SJMP LOOPNEXT:RET,循环中包含另一个循环叫循环嵌套(LOOP1:JNB TI,LOOP1)有多层嵌套时称为多重循环程序,例47】双重循环实现1ms延时的程序,DELAY1:MOV R6,#32;1个机器周期DEL2:MOV R7,#7;1个机器周期DEL3:NOP;1个机器周期 NOP;1个机器周期 DJNZ R7,DEL3;2个机器周期 DJNZ R6,DEL2;2个机器周期 RET;2个机器周期延时时间为:1+1+(1+1+2)7+232+2=995个机器周期,内循环,当采用12MHz晶振时,一个机器周期为1us,延时时间为995us,与1ms比较有5us误差,( 四)位操作程序,通过位处理器和位处理指令可进行随机逻辑运算和设计,可实现复杂的逻辑操作。,例48:编制程序实现下面逻辑表达式的功能,X0X7从并行口P0输入,Y信号从P1.7输出。,解:先计算三项的逻辑式,三项的结果相或为Y,因此只要这三项中有一个结果为1,则Y就等于1。,程序流程图,ORG 2000HSTART:MOV A,P0;输入8位信号MOV C,ACC.0ANL C,ACC.1ANL C,ACC.2MOV 00H,C;(00H)X0X1X2MOV C,ACC.2ANL C,ACC.3;(C)X2X3ORL C,00HCPL CJC OUT;(C)=1,转输出,MOV C,ACC.1ANL C,/ACC.2ANL C,ACC.3;JC OUT; (C)=1,转输出MOV C,ACC.4CPL CANL C,ACC.5ANL C,/ACC.6ANL C,/ACC.7;OUT:MOV P1.7,C;(P1.7)最终结果SJMP $,( 五)子程序,子程序已成为计算机的一种软件资源。常将子程序构成子程序库,集中放在某一存储空间,主程序可随时调用。子程序的引入大大简化了主程序的结构,节省了存储空间,缩短了程序设计时间。,子程序要为所有调用程序共享,在结构上应具有通用性和独立性,编写时应注意以下几点。,(1)有子程序名以备调用。通常以子程序的第一条指令的标号作为子程序名,这个标号最好有一定含义,以便一看就一目了然。(2)子程序末尾要安排一条RET返回指令。(3)保护现场与恢复现场。主程序调用子程序之前所使用的各寄存器的内容称为现场,通常在子程序开头和末尾(RET指令前)安排一些入栈和出栈指令来保护和恢复现场。而主程序的断点地址,通过调用指令和返回指令能自动保护和恢复,无须用户安排。,(4)子程序要有可浮动性。所谓可浮动性就是子程序可以放在存储器的任何地方并能为主程序调用。为此子程序中必须使用相对转移指令而不用其它转移指令,以便汇编时生成浮动代码。此外,尽量使用寄存器和堆栈作数据暂存器使用,而避免使用固定存储单元作数据暂存器。(5)参数传递(子程序参数分为入口参数和出口参数两类)。因为子程序是主程序的一部分,子程序被调用之前,主程序应先把有关参数(即入口参数)送到某些约定的位置,子程序在运行时可从约定的位置得到有关参数。同样,子程序结束前也应该把运算结果(出口参数)送到约定的位置,返回主程序后,主程序可从约定位置上获得结果,这就是参数传递。8051单片机常用工作寄存器、累加器、地址寄存器、堆栈等来传数。,例411用指针寄存器来传递参数 。,当数据放在存储器中,且量比较大时,可用指针来指示数据的位置,可节省传递数据的工作量。参数放在片内RAM时,用R0或R1作指针;参数在外部RAM或程序存储器时,用DPTR作指针。试编写6位BCD码的加法程序。设被加数放在片内RAM 40H42H单元,加数放在50H52H单元,和放入40H42H中。(注:低位在低地址),解:,主程序通过指针寄存器R0和R1将参加运算的BCD码的地址传递给子程序子程序通过指针寄存器R0将结果的地址传递给主程序。入口参数:(R0)、(R1)分别指向被加数和加数的低字节出口参数:(R0)指向结果的高字节,主程序:完成入口参数的传递和子程序的调用。,ORG 0100HSTAR:MOV R0,#40H ;被加数低字节地址送R0MOV R1,#50H ;加数低字节地址送R1ACALL BADD ;调6位BCD码的加法子程序 ,子程序,BADD:MOV R7,#3;6位BCD码占3字节CLR C;低字节相加时,进位位清0LOOP:MOV A,R0;取被加数字节ADDC A,R1;取加数字节并加到ADA A;BCD码调整MOV R0,A;保存相加的和INC R0;修改被加数指针INC R1;修改加数指针DJNZ R7,LOOP;未完继续DEC R0;使R0指向结果的高字节RETEND,( 六)中断服务程序与堆栈操作,主程序 (1)起始地址:(PC)=0000H,而从0003H002BH分别为各中断源的入口地址,编程时应在0000H处安排一条长跳转指令,使CPU执行程序时可从0000H跳过各中断源的入口地址,然后从跳转的目的地址开始执行主程序。2)初始化:对将要用到的单片机内部部件或扩充部件进行初始工作状态的设定。,中断服务程序,1)起始地址: 0003H002BH为各中断源的入口,5个中断源的入口地址相距很近(8个字节),若中断服务程序的指令代码少于8个字节,则可直接从入口地址开始编写;若大于8个字节,在相应的入口处安排一条跳转指令。(2)中断服务程序编制中的注意事项:视需要确定是否保护现场。时清除那些不能被硬件自动清除的中断请求标志,以免产生误中断。中断服务程序中的压栈PUSH与弹出POP指令必须成对使用,以确保中断服务程序的正确返回。主程序与中断服务程序之间的参数传递类似主程序与子程序之间的参数传递。,( 七)应用程序举例,1. 定时器:首先初始化编程,步骤:(1)设置TMOD:根据功能要求、工作方式及运行工作方式设置。(2)设计数初值TH、TL:根据定时时间或计数要求设置。(3)若使用中断系统则设置中断控制寄存器IE、IP和TCON。(4)启动定时器工作。,例414计算定时/计数器T0工作于方式0 、1、2 时的最大定时时间,设时钟频率fosc=6MHz,分析:因为是加1计数,故当定时时间最大时,初始值a=0。解:设最大定时时间为T(1)方式0,加1计数器为13位,T=21312/6MHz=16.384ms(2)方式1,加1计数器为16位,T=21612/6MHz=131.072ms(3)方式2,加1计数器为8位,T=2812/6MHz=512us,【例415】利用定时器T0,在P1.7引脚上输出周期为100ms的连续方波。设fosc=6MHz 。,分析:周期100ms的方波,应输出50ms高电平和50ms低电平,即T0工作在定时方式1 ,定时时间50ms,每当定时时间到,使P1.7的输出逻辑取反。(1)计算计数初值a:(216a)12/6MHz=50ms a=21650000/2=40536=9E58H(2)初值装入TH0和TL0:(TH0)=9EH,(TL0)=58H(3)写方式控制字:M1M0=01,GATE=0,C/T=0,所以方式控制字TMOD=01H当T0定时50ms时间到,TF0=1,若采用查询方式,则用软件查询TF0;若采用中断方式,则用TF0请求中断。,解1:软件查询方法,ORG 0000HLJMP MAIN;上电,转向主程序ORG 1000H;主程序MAIN:MOV TMOD,#01H;设T0工作于方式1SETB TR0;启动定时器T0LOOP:MOV TH0,#9EH;装计数初值高8位MOV TL0,#58H;装入计数初值低8位JNB TF0,$;计满溢出位TF0是否为1CLR TF0;清TF0CPL P1.7;将P1.7取反,输出SJMP LOOPEND,解2:中断方法,ORG 0000HLJMP START;上电,转向主程序ORG 000BH;T0的中断入口地址AJMP SERVE;转向中断服务程序,主程序,ORG 1000H;START:MOV TMOD,#01H;T0工作方式1LOOP:MOV TH0,#9EH; 初值高8位MOV TL0,#58H; 初值低8位SETB EA;CPU开中断SETB ET0;T0开中断SETB TR0;启动定时器T0工作HERE:AJMP HERE;定时时间到中断,中断服务程序,ORG 2000H;SERVE:MOV TH0,#9EH;重装计数初值高8位MOV TL0,#58H;重装计数初值低8位CPL P1.7;P1.7取反,输出RETI;中断返回END,

    注意事项

    本文(第四章汇编语言程序设计基础课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开