单片机教学精选PPT.ppt
《单片机教学精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机教学精选PPT.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机教学单片机教学第1页,此课件共96页哦本章主要内容本章主要内容 汇编语言编程的步骤、方法和技巧 单片机汇编语言程序的基本结构 MCS-51单片机汇编语言程序设计举例 汇编语言源程序的编辑和汇编第2页,此课件共96页哦汇编语言的基本结构汇编语言的基本结构 顺序结构 分支结构 循环结构第3页,此课件共96页哦顺序结构顺序结构顺序结构顺序结构是最简单的程序结构,即顺序程序。是最简单的程序结构,即顺序程序。程序按顺序一条一条地执行指令。程序按顺序一条一条地执行指令。以以16位二进制数求补为例:位二进制数求补为例:第4页,此课件共96页哦顺序结构举例顺序结构举例【例例】设设16位二进制数在位二进制
2、数在R1和和R0中,求补结果存于中,求补结果存于R3和和R2中。中。MOV A,R0 ;16位数低位数低8位送位送ACPL A ;求反求反ADD A,#01H ;加加1 MOV R2,A ;存补码低存补码低8位位MOV A,R1 ;取取16位数高位数高8位位CPL A ;求反求反 ADDC A,#00H ;加进位加进位MOV R3,A ;存补码高存补码高8位位第5页,此课件共96页哦分支结构分支结构程序分支是通过条件转移指令实现的,即根据条件对程序的执行程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断、满足条件则进行程序转移,不满足条件就顺序执行程进行判断、满足条件则进行程序转
3、移,不满足条件就顺序执行程序。序。分支程序又分为分支程序又分为单分支结构单分支结构和和多分支结构多分支结构。在在51指令系统中,通过条件判断实现指令系统中,通过条件判断实现单分支单分支程序转移的指令有:程序转移的指令有:JZ、JNZ、CJNE、DJNZ等。此外还有以位状态作为条件进行程序等。此外还有以位状态作为条件进行程序分支的指令,如分支的指令,如JC、JNC、JB、JNB、JBC等。使用这些指令可等。使用这些指令可以完成以完成0、1、正、负,以及相等、不相等作为各种条件判断依据的、正、负,以及相等、不相等作为各种条件判断依据的程序转移。程序转移。第6页,此课件共96页哦单分支结构举例单分支
4、结构举例【例例】存放于存放于20H和和21H中的两个无符号二进制数,求其中较大的数并存于中的两个无符号二进制数,求其中较大的数并存于30H中。中。解:解:START:MOV A,20H ;将将20H中内容送中内容送A CJNE A,21H,LOOP1 ;两数比较,不相等两数比较,不相等 则转则转LOOP1 SJMP LOOP3 LOOP1:JC LOOP2 ;当当CY=1,转,转LOOP2 MOV 30H,A ;CY=0,(A)(21H)SJMP LOOP3 ;转结束转结束 LOOP2:MOV 30H,21H ;CY=1,(21H)(A)LOOP3:END第7页,此课件共96页哦分支结构分支结
5、构多分支程序多分支程序是首先把分支程序按序号排列,然后按序号值进行是首先把分支程序按序号排列,然后按序号值进行转移。转移。分支程序结构分支程序结构散散转转指指令令转向转向0分支分支转向转向1分支分支转向转向n-1分支分支转向转向n分支分支K=0K=1K=n-1K=n 第8页,此课件共96页哦多分支结构举例多分支结构举例【例例】128 128种分支转移程序。种分支转移程序。功能:根据入口条件转移到功能:根据入口条件转移到128128个目的地址。个目的地址。入口:(入口:(R3R3)=转移目的地址的序号转移目的地址的序号00H00H7FH7FH。出口:转移到相应子程序入口。出口:转移到相应子程序入
6、口。128个子程序首址个子程序首址JMP_128:MOV A,R3 RL A MOV DPTR,#JMPTAB JMP A+DPTRJMPTAB:AJMP ROUT00 AJMP ROUT01 AJMP ROUT7F说明:此程序要求说明:此程序要求128个转移目的地址(个转移目的地址(ROUT00 ROUT7FH)必须驻留在与绝对转移指)必须驻留在与绝对转移指令令AJMP相同的一个相同的一个2KB存储区内。存储区内。RL指令对变址部分乘以指令对变址部分乘以2,因为每条,因为每条AJMP指令占两个字节。指令占两个字节。第9页,此课件共96页哦循环结构循环结构在程序运行时,有时需要连续重复执行某段
7、程序,可以使用循环程在程序运行时,有时需要连续重复执行某段程序,可以使用循环程序。其结构包括四部分:序。其结构包括四部分:1、置循环初值、置循环初值 2、循环体(循环工作部分)、循环体(循环工作部分)3、修改控制变量、修改控制变量 4、循环控制部分、循环控制部分其组织方式如下图所示。其组织方式如下图所示。第10页,此课件共96页哦置初值循环体循环修改循环控制退出循环未完完置初值循环体循环修改循环控制退出循环未完完循环组织方式流程图循环组织方式流程图循环结构循环结构第11页,此课件共96页哦1.置循环初值置循环初值对于循环程序中所使用的工作单元,在循环开始时应置初值。对于循环程序中所使用的工作单
8、元,在循环开始时应置初值。例如,工作寄存器设置计数初值,累加器例如,工作寄存器设置计数初值,累加器A清清0,以及设置地,以及设置地址指针、长度等。址指针、长度等。第12页,此课件共96页哦2.循环体循环体 重复执行的程序段部分,分为循环工作部分和循环控制部分。重复执行的程序段部分,分为循环工作部分和循环控制部分。循环控制部分每循环一次,检查结束条件,当满足条件时,就停循环控制部分每循环一次,检查结束条件,当满足条件时,就停止循环,往下继续执行其他程序。止循环,往下继续执行其他程序。第13页,此课件共96页哦3.修改控制变量修改控制变量在循环程序中,不许给出循环结束条件。在循环程序中,不许给出循
9、环结束条件。常见的是计数循环,当循环了一定的次数后,就停止循环。常见的是计数循环,当循环了一定的次数后,就停止循环。在单片机中,一般用一个工作寄存器在单片机中,一般用一个工作寄存器Rn作为计数器,对该计数器赋作为计数器,对该计数器赋初值作为循环次数。每循环一次,计数器的值减初值作为循环次数。每循环一次,计数器的值减1,即修改循环控制,即修改循环控制变量,当计数器的置件为变量,当计数器的置件为0时,就停止循环。时,就停止循环。第14页,此课件共96页哦4.循环控制部分循环控制部分根据循环结束条件,判断是否结束循环。根据循环结束条件,判断是否结束循环。也可采用也可采用DJNZ指令来自动修改控制变量
10、并能结束循环。指令来自动修改控制变量并能结束循环。第15页,此课件共96页哦循环结构举例循环结构举例软件延时程序举例软件延时程序举例当单片机时钟确定后,每条指令的指令周期是确定的,在指令当单片机时钟确定后,每条指令的指令周期是确定的,在指令表中已用机器周期表示出来。因此,根据程序执行所用的总的表中已用机器周期表示出来。因此,根据程序执行所用的总的机器周期数,可以较准确地计算程序执行完所用的时间。软件机器周期数,可以较准确地计算程序执行完所用的时间。软件延时是实际经常采用的一种短时间定时方法延时是实际经常采用的一种短时间定时方法。第16页,此课件共96页哦循环结构举例循环结构举例1.采用循环程序
11、进行软件延时子程序采用循环程序进行软件延时子程序DELAY:MOV R2,#data ;预置循环控制常数预置循环控制常数DELAY1:DJNZ R2,DELAY1;当当(R2)0时,转向本身时,转向本身 RET说明:根据说明:根据R2的不同初值,可实现的不同初值,可实现5513(#data=1255)个机个机器周期的延时(第器周期的延时(第1条为单周期指令,第条为单周期指令,第2条为双周期指令,第条为双周期指令,第3条指令为双周期指令)。条指令为双周期指令)。第17页,此课件共96页哦循环结构举例循环结构举例2.采用双重循环的延时子程序采用双重循环的延时子程序TIME:MOV R1,#0FAH
12、 ;1个机器周期个机器周期 L1:MOV R0,#0FFH ;1个机器周期个机器周期 W1:DJNZ R0,W1 ;2个机器周期个机器周期 ;内循环内循环255次次 DJNZ R1,L1 NOP ;1个机器周期个机器周期 NOP ;1个机器周期个机器周期 RET ;2个机器周期个机器周期250外外循循环环次次第18页,此课件共96页哦循环结构举例循环结构举例计算延时时间计算延时时间t:N=1+(1+2255+2)250+1+1+2 =128255个机器周期(个机器周期(T)如果如果f=6MHz,T=2s 则则 t=NT=1282552=256510 s=256.51ms调整调整R0和和R1中的
13、参数,可改变延时时间。中的参数,可改变延时时间。如果需要加长延时时间,则可增加循环嵌入。如果需要加长延时时间,则可增加循环嵌入。第19页,此课件共96页哦本章主要内容本章主要内容 汇编语言编程的步骤、方法和技巧汇编语言编程的步骤、方法和技巧 单片机汇编语言程序的基本结构单片机汇编语言程序的基本结构 MCS-51单片机汇编语言程序设计举例单片机汇编语言程序设计举例 汇编语言源程序的编辑和汇编汇编语言源程序的编辑和汇编第20页,此课件共96页哦单片机程序设计单片机程序设计 主程序:循序执行的无限循环的程序,其运行过程处于全封主程序:循序执行的无限循环的程序,其运行过程处于全封闭状态。闭状态。e.g
14、.带显示及键盘输入的某单片机系统的主程序框图结构如下带显示及键盘输入的某单片机系统的主程序框图结构如下图所示:图所示:第21页,此课件共96页哦单片机程序设计单片机程序设计上电、复位,进入主程序上电、复位,进入主程序初始化初始化调用显示子程序调用显示子程序调用键盘扫描子程序调用键盘扫描子程序调用键盘值识别子程序调用键盘值识别子程序右键按下?右键按下?1号键处理子程序号键处理子程序2号键处理子程序号键处理子程序n号键处理子程序号键处理子程序YN第22页,此课件共96页哦单片机程序设计单片机程序设计 子程序:完成某一特定功能的一个程序段,也称为一个程序模子程序:完成某一特定功能的一个程序段,也称为
15、一个程序模块。块。作为子程序,要有如下约定:作为子程序,要有如下约定:子程序功能;子程序功能;程序入口;程序入口;程序出口;程序出口;程序影响。程序影响。第23页,此课件共96页哦单片机程序设计单片机程序设计下面以三字节无符号数的加法为例。下面以三字节无符号数的加法为例。该子程序:该子程序:子程序功能:完成三字节无符号数的加法子程序功能:完成三字节无符号数的加法程序入口:程序入口:50H、51H、52H为被加数为被加数(50H为最高位为最高位)55H、54H、53H为加数为加数(53H为最高位为最高位)程序出口:程序出口:50H、51H、52H为和值为和值(50H为最高位为最高位)位地址位地址
16、00H中存放最终的进位位中存放最终的进位位程序影响:程序影响:R0、R1、R7、A第24页,此课件共96页哦三字节无符号数相加:三字节无符号数相加:ADDU:MOV R0,#52H;被加数的低字节地址;被加数的低字节地址MOV R1,#55H ;加数的低字节地址;加数的低字节地址MOV R7,#03H;三字节加法,循环次数为三次;三字节加法,循环次数为三次CLR C;清进位位;清进位位LOOP:MOV A,R0;取被加数;取被加数ADDC A,R1;与加数相加;与加数相加MOV R0,A;存相加的结果;存相加的结果DEC R0DEC R1DJNZ R7,LOOPMOV 00H,C;存进位位;存
17、进位位RET单片机程序设计单片机程序设计第25页,此课件共96页哦单片机程序设计单片机程序设计要调用这段子程序:要调用这段子程序:e.g.已知有数据已知有数据4A59F2H+E789C3H,请利用以上子程序完成,请利用以上子程序完成加法运算,并将和值送往片外加法运算,并将和值送往片外RAM的的50H,51H,52H单元。单元。主程序中的调用程序如下:主程序中的调用程序如下:第26页,此课件共96页哦调用三字节无符号数相加子程序:调用三字节无符号数相加子程序:MOV#52H,#F2H;送被加数;送被加数MOV#51H,#59HMOV#50H,#4AHMOV#55H,#0C3H;送加数;送加数MO
18、V#54H,#89HMOV#53H,#0E7HLCALL ADDU;调用三字节无符号数加法子程序;调用三字节无符号数加法子程序MOV R0,#50H ;和值送往外部;和值送往外部RAMMOV R7,#03HLOOP:MOV A,R0MOVX R0,AINC R0DJNZ R7,LOOP单片机程序设计单片机程序设计第27页,此课件共96页哦单片机程序设计单片机程序设计特定功能汇编语言子程序举例特定功能汇编语言子程序举例第28页,此课件共96页哦1.算数运算程序举例算数运算程序举例(1)多个不带符号的单字节数相加:多个不带符号的单字节数相加:设有多个单字节数依次存放在外部设有多个单字节数依次存放在
19、外部RAM21H开始的连续单元中,要求把计算结果存放在开始的连续单元中,要求把计算结果存放在R1和和R2中中(假定相加的和为假定相加的和为2字节数字节数),其中,其中R1为高位字节,则程序如下:为高位字节,则程序如下:MOV R0,#21H;设置数据指针;设置数据指针MOV R3,#N ;字节个数;字节个数MOV R1,#00H;和的高位字节清;和的高位字节清0MOV R2,#00H;和的低位字节清;和的低位字节清0LOOP:MOVX A,R0;取一个加数;取一个加数ADD A,R2;单字节数相加;单字节数相加MOV R2,A;和的低;和的低8位送位送R2JNC LOOP1INC R1;有进位
20、,则和的高;有进位,则和的高8位加位加1LOOP1:INC R0 ;指向下一个单元;指向下一个单元DJNZ R3,LOOP第29页,此课件共96页哦移位指令实现多字节数乘移位指令实现多字节数乘2:编写程序实现将编写程序实现将30H30H,31H31H单元中的两字节二进制数乘以单元中的两字节二进制数乘以2 2(积小于(积小于6553665536)1.算数运算程序举例算数运算程序举例(2)CLRC;进位位清零;进位位清零MOV A,30H;取出低字节;取出低字节RLCA;低字节乘;低字节乘2MOV30H,A;移回乘;移回乘2后的低字节后的低字节MOV A,31H;取出高字节;取出高字节RLCA;高
21、字节乘;高字节乘2MOV31H,A;移回乘;移回乘2后的高字节后的高字节RET;返回主程序;返回主程序第30页,此课件共96页哦1.算数运算程序举例算数运算程序举例(3)R2A=(R3R7)L,B=(R3R7)HR3R6R7BAR5R7BAR5R4R7BAR5R6R7F0R5R6R7R4BAACC.0A=(R2R7)L,B=(R2R7)HA=(R3R6)L,B=(R3R6)HF0保留进位位保留进位位A=(R2R6)L,B=(R2R6)HACC.0保留进位位保留进位位双字节无符号数乘法:双字节无符号数乘法:将(将(R2R3R2R3)和()和(R6R7R6R7)中双字节无符号数相乘)中双字节无符号
22、数相乘(R2(R2和和R6R6为高位字节为高位字节),),结果存入结果存入 R4R5R6R7R4R5R6R7中。中。第31页,此课件共96页哦将(将(R2R3R2R3)和()和(R6R7R6R7)中双字节无符号数相乘)中双字节无符号数相乘,结果存入结果存入 R4R5R6R7R4R5R6R7中。中。1.算数运算程序举例算数运算程序举例(3)DBMUL:MOV A,R3 MOV B,R7MUL AB XCH A,R7MOV R5,B MOV B,R2 MUL ABADD A,R5 MOV R4,A CLR AADDC A,B MOV R5,AMOV A,R6 MOV B,R3 MUL ABADD
23、A,R4 XCH A,R6 XCH A,BADDC A,R5 MOV R5,AMOV F0,C MOV A,R2 MUL ABADD A,R5MOV R5,ACLRAMOV ACC.0,CMOV C,F0ADDCA,BMOVR4,ARET第32页,此课件共96页哦2.数制转换程序举例数制转换程序举例1616进制转换成进制转换成BCDBCD码:码:将将30H中的十六进制数转换为中的十六进制数转换为BCD码,并存于码,并存于40H、41H:主程序:入口条件为待转换的十六进主程序:入口条件为待转换的十六进 制数存入制数存入R1R1 ORG 0100H MOV R1,30H LCALL SUB MOV
24、 40H,R2 MOV 41H,R3 SJMP$END子程序:出口条件为转换所得子程序:出口条件为转换所得BCDBCD码存入码存入R2R2、R3R3ORG 2000HSUB:MOV A,R1 ;取十六进制数取十六进制数MOV B,#64HDIV AB ;除以除以100MOV R2,A ;商为百位数存商为百位数存R2MOV A,#0AHXCH A,B ;除除100余数作为下余数作为下 一次的被除数一次的被除数DIV AB ;余数再除以余数再除以10SWAPAORLA,B;十位个位合并十位个位合并MOVR3,A;十位个位合并存十位个位合并存R3RET第33页,此课件共96页哦3.查表程序举例查表程
25、序举例 当某一变量当某一变量x与函数与函数y的关系无规律可循时,可以将变量的关系无规律可循时,可以将变量x作为序号,作为序号,函数函数y值作为元素,列出一份序号与元素的关系表。然后利用查表值作为元素,列出一份序号与元素的关系表。然后利用查表法从序号求得元素。法从序号求得元素。1)序号小于)序号小于256的查表程序的查表程序 设在寄存器设在寄存器R1中存放了两个中存放了两个BCD码,将它们转换为码,将它们转换为共阴数码管共阴数码管的的七段码,存入七段码,存入21H和和22H。第34页,此课件共96页哦序号小于序号小于256查表程序查表程序:3.查表程序举例查表程序举例 TRAN:MOVDPTR,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 教学 精选 PPT
限制150内