流水灯程序设计与调试概要.pptx
《流水灯程序设计与调试概要.pptx》由会员分享,可在线阅读,更多相关《流水灯程序设计与调试概要.pptx(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1流水灯程序设计与调试 一、任务说明1、要求 P1口作为输出口。P1.0至P1.7接8个发光二极管。要求编写程序实现如下功能:8个发光二极管依次亮灭并循环,延时0.1秒(已知fosc=12MHz)。2、重点 1、学习P1口作为输出口的使用方法。2、学习延时程序的设计方法。第1页/共87页2二、硬件电路1、硬件分析发光二极管采用共阳极连接,P1口某个引脚输出“0”则对应的灯点亮。第2页/共87页32、软件分析 (1)整体任务分析:控制字始终是7个“1”和1个“0”,“0”的位置每隔0.1秒左移1位,然后由P1口输出控制字点灯。(2)程序流程图控制字初值0FEH送A控制字送p1口点灯调用延时子程序
2、将控制字左移一位开始第3页/共87页4涉及的指令MOV类指令RL指令DJNZ延时子程序 第4页/共87页5(3)关于左移运算:可以利用循环左移指令实现 指令性质:逻辑运算指令 指令格式:RL A 注意:操作数只能是累加器。指令说明:执行时累加器A的存储内容(8位2进制数),整体向左移动1位(低位移动到相邻的高位),最高位补回到最低位。指令应用:常用于完成快速乘法,每次执行累加器内容扩大2倍。相关指令:RR A;RLC A;RRC A第5页/共87页6延时子程序实例若单片机的主频为12MHz,使用循环转移指令编写延时20ms的子程序。(双重循环结构)一个机器周期:12/12M=1us 次数 周期
3、DELAY:MOV R6,#0C8H 1 1 LOOP2:MOV R7#x 200 1 NOP 200 1LOOP1:DJNZ R7,LOOP1 200 x 2 DJNZ R6,LOOP2 200 2 RET 1 2200+200+400 x+400+2=20 000求出x=48第6页/共87页7三、任务实施 步骤1:各小组按照流程图设计各部分程序。步骤2:程序汇编无误后,利用ISP软件和下载线将目标文件(.HEX)程序代码写入本组的单片机芯片中。步骤3:接通直流电源,启动电路板观察现象,如现象不对则重复步骤1、2。步骤4:现象无误,请求教师检查、评价。步骤5:编制项目报告并提交。第7页/共8
4、7页8四、任务扩展 思考:若想实现8个灯累加点亮并循环,则程序该如何设计?第8页/共87页9一、任务说明 P1口作为输入、输出口。P1.0、P1.1接开关K1、K2;P1.2、P1.3接发光二极管L1、L2;P1.4、P1.5接L5、L6。K1作为左转弯开关,K2作为右转弯开关。L1、L2作为左转弯灯,L5、L6作为右转弯灯。要求编写程序实现如下功能:向上打K1时(K1=1),左转弯灯以一定频率闪烁,向上打K2时(K2=1),右转弯灯以一定频率闪烁,两开关同时向上或向下,四灯都灭。灯闪烁一次即可,闪烁时先亮0.5S再灭0.5S。转弯灯控制程序设计与调试 第9页/共87页10重点:1、学习P1口
5、既作为输入,又作为输出的使用方法。2、学习数据输入、输出程序的设计方法。第10页/共87页11二、任务分析1、硬件分析P1口为准双向I/O接口,输出单条指令完成,输入时应当先向对应的端口锁存器写入1,然后读入数据。第11页/共87页122、软件说明 (1)整体分析:先读入开关的状态,根据开关的四种状态分情况控制灯的亮灭。控灯完成后返回开始继续读开关,保证开关持续有效。(2)多分支判断的实现:开关有四种状态,对应灯有四种控制规律。可采取逐点检测的方式实现分支控制。即读入开关状态后先判断是否为00,若为00则灯全灭;若不为00则判断开关是否为01,若为01则左转弯灯闪烁;若不为01则判断开关是否为
6、10,若为10则右转弯灯闪烁;若不为10则必然为11,灯全灭。K1K0状态状态控灯规律控灯规律控制字控制字00全灭全灭0FFH01左转弯灯闪烁左转弯灯闪烁0F3H,0FFH10右转弯灯闪烁右转弯灯闪烁0CFH,0FFH11全灭全灭0FFH第12页/共87页13(3)实现分支判断的关键指令:条件转移指令CJNE指令名称:比较不相等转移。指令格式:CJNE A,#data,rel;若(A)data,则跳到标号处执行指令,否则顺序执行。对借位标志有影响:若(A)0Y=100 X=0 求出Y值,将Y值存入31H单元。X X0解:根据数据的符号位判别该数的正负,若最高位为0,再判别该数是否为0。程序流程
7、如图2-2所示。参考程序如下:ORG 1000H 第20页/共87页21 MOV A,30H ;取数 JB ACC.7,NEG ;负数,转NEG JZ ZER0 ;为零,转ZER0 ADD A,#02H;为正数,求X+2 AJMP SAVE ;转到SAVE,保存数据ZER0:MOV A,#64H ;数据为零,Y=100 AJMP SAVE ;转到SAVE,保存数据 NEG:DEC A ;CPLA ;求XSAVE:MOV 31H,A ;保存数据 SJMP ;暂停 END第21页/共87页22A为负数?取数,A(30H)开始结束A=0?YNNA|X|A64HAX+2存数,(31H)A(30H)图2
8、-2 例4.3程序流程图第22页/共87页23多向分支程序设计举例【例4.4】根据R0的值转向7个分支程序。R010,转向SUB0;R020,转向SUB1;R060,转向SUB6;解:利用JMP A+DPTR 指令直接给PC赋值,使程序实现转移。程序流程如图2-3所示。第23页/共87页24ORG 2000HMOV DPTR,#TAB;转移指令表首地址 MOV A,R0;取数 MOV B,#10 DIV AB ;A除以10,商在A中 CLR C RLC A ;A2A JMP A+DPTR;PC A+DPTR AJMP SUB0;转移指令表 AJMP SUB1 AJMP SUB6TAB:第24页
9、/共87页25K=?转SUB0转SUB1转SUB6K=0 K=1 K=6开始图2-3多向分支程序流程图返回本节第25页/共87页26交通灯程序设计与调试 一、任务说明 P1口控制6个灯,红、黄、绿各两个,编程实现交通灯控制规律。第26页/共87页27四红灯亮延时1秒东西路口绿灯亮,南北路口红灯亮延时6秒东西路黄灯闪烁8次,南北路口红灯亮每次延时1秒四红灯亮延时1秒东西路口红灯亮,南北路口绿灯亮延时6秒东西路红灯亮,南北路口黄灯闪烁8次每次延时1秒第27页/共87页28u教学提示:教学提示:指令是指令是CPUCPU用于控制功能部件完成某一指定动作用于控制功能部件完成某一指定动作的指示和命令。一台
10、计算机全部指令的集合称为指令的指示和命令。一台计算机全部指令的集合称为指令系统。指令系统体现了计算机的性能,也是计算机重系统。指令系统体现了计算机的性能,也是计算机重要的组成部分,应用计算机进行程序设计的基础。单要的组成部分,应用计算机进行程序设计的基础。单片机应用系统的运行,是依靠合理的硬件接口、用户片机应用系统的运行,是依靠合理的硬件接口、用户程序和监控程序的完美结合实现的,所以掌握单片机程序和监控程序的完美结合实现的,所以掌握单片机需要学习多样的汇编程序设计方法实现运算和控制功需要学习多样的汇编程序设计方法实现运算和控制功能。能。第28页/共87页2980C51单片机具有111条指令,指
11、令系统特点如下:(1)指令执行时间快。1个机器周期指令有64条,2个机器周期指令有45条,而4个机器周期指令仅2条(乘除指令)。(2)指令短,指令编码字节少,单字节的指令有49条(约有一半的指令为单字节指令),双字节的有45条,三字节的仅有17条。(3)具有丰富的位操作指令。(4)可直接用传送指令实现端口的输入输出操作。第29页/共87页30以80C51为内核的单片机指令系统为例,用44种操作码助记符来描述33种操作功能,构成了111条基本指令。单字节指令49条;按字节分双字节指令45条;三字节指令17条;单周期指令64条;按指令执行时间分双周期指令45条;111条基本指令4个机器周期指令2条
12、;数据传送类指令(29);算术运算类指令(24);按功能分逻辑运算及移位类指令(24);控制转移类指令(17);布尔变量操作类指令(17)。第30页/共87页31.1指令格式及常用符号80C5180C51单片机指令格式单片机指令格式)指令由)指令由操作码助记符操作码助记符和和操作数操作数两部组成。两部组成。)指令格式如下:)指令格式如下:标号:标号:操作码助记符操作码助记符 目的操作数目的操作数 ,源操作,源操作数数;注释;注释 符号符号“”其包含的内容因指令的不同可有可无。其包含的内容因指令的不同可有可无。特例:子程序返回指令特例:子程序返回指令RETRET、中断返回指令、中断返回指令RET
13、IRETI、空操作指令空操作指令NOPNOP,皆无目的操作数和源操作数,皆无目的操作数和源操作数 标号:根据编程需要给指令设定的符号地址,可有标号:根据编程需要给指令设定的符号地址,可有可无;通常在子程序入口或转移指令的目标地址处才赋可无;通常在子程序入口或转移指令的目标地址处才赋予标号。标号由予标号。标号由1 18 8个字符组成,第一个字符必须是英个字符组成,第一个字符必须是英文字母,不能是数字或其他符号,标号后必须用冒号。文字母,不能是数字或其他符号,标号后必须用冒号。第31页/共87页32操作码助记符:指令的核心部分,用于指示机器执行何种操作码助记符:指令的核心部分,用于指示机器执行何种
14、操作,如加、减、乘、除、传送等。操作,如加、减、乘、除、传送等。操作数:是指令操作的对象,可以是一个具体的数据,也操作数:是指令操作的对象,可以是一个具体的数据,也可以是参加运算的数据所在的地址。操作数一般有以下几可以是参加运算的数据所在的地址。操作数一般有以下几种形式:种形式:没有操作数,操作数隐含在操作码中,如没有操作数,操作数隐含在操作码中,如RETRET指令;指令;只有一个操作数,如只有一个操作数,如INC AINC A指令;指令;有两个操作数,如有两个操作数,如MOV AMOV A,30H30H指令,操作数之间以逗号指令,操作数之间以逗号相隔;相隔;有有3 3个操作数,如个操作数,如
15、 CJNE ACJNE A,#00H#00H,10H10H指令。指令。注释:对指令的解释说明,用以提高程序的可读性,注释注释:对指令的解释说明,用以提高程序的可读性,注释前必须加分号,注释换行时行前也要加分号。前必须加分号,注释换行时行前也要加分号。第32页/共87页33指令的字节 1.单字节指令(49条)在MCS-5l指令系统中,单字节指令可分为两类:无操作数的单字节指令含有操作数寄存器编号的单字节指令。1)无操作数单字节指令 这类指令只有操作码字段,操作数隐含在操作码中。例如:INC DPTR 第33页/共87页34 指令码为 2)含有操作码、寄存器编码的单字节指令 单字节的指令码由操作码
16、和指示操作数所在寄存器编码组成。例如:MOV A,Rn 指令码为(其中r r r为寄存器Rn的编码)位D7D6D5D4D3D2D1D0十六进制码操作码10100011A3H位D7D6D5D4D3D2D1D0十六进制码操作码+操作数11101rrrE8HEFH例如:例如:INC DPTRINC DPTR第34页/共87页352.双字节指令(46条)双字节指令的操作码字节在前,其后的操作数字节可以是立即数,也可以是操作数所在的片内RAM地址。例如:MOV A,#23H 指令码为位D7D6D5D4D3D2D1D0十六进制码操作码0111010074H 23H操作数(立即数)00100011第35页/
17、共87页361 1实训目的实训目的(1)掌握指令格式及表示方法:助记符表示和机器码表示。(2)了解人工汇编与机器汇编的方法。(3)了解寻址方式的概念。(4)掌握常用指令的功能及应用。实训实训3 3 指令的应用指令的应用2 2实训引入实训引入MOVP1,#55HMOVP1,55H请比较以上两条指令执行请比较以上两条指令执行后后P1P1口的状况口的状况?为什么为什么?第36页/共87页373 3实训表格实训表格表3.1 实验表格题号助记符指令机器码指令检查数据发光二极管状态MOV P1,#55H MOV 20H,#0F0H(20H)=MOV P1,20H MOV A,#0F0HA=MOV P1,A
18、MOV R4,#0FHR4=MOV P1,R4MOV 20H,#0AAH(20H)=MOV R0,#20HR0=MOV P1,R0MOV A,#55H A=MOV P1,A AND A,#0FHA=MOV P1,A 第37页/共87页38MOV A,#55H A=MOV P1,AAND A,#0FHA=MOV P1,A OR A,#0F0HA=MOV P1,A CLR A A=MOV P1,ACPL AA=MOV P1,AMOV A,#01H A=MOV P1,A RL AA=MOV P1,ARL AA=MOV P1,A 第38页/共87页394.4.实训分析与总结实训分析与总结 在实训中看到
19、以下现象:往P1口传送数据的指令中,数据的来源不尽相同。数据是指令的操作对象,叫做操作数。指令必须给出操作数所在的地方,才能进行数据传送。寻找操作数地址的方法,称为寻址方式。寻找操作数到底有多寻找操作数到底有多少种方式呢少种方式呢?第39页/共87页40指令概述指令概述操作码操作码7 07 07 07 0数据或寻址方式数据或寻址方式7 07 07 07 0双字节指令:双字节指令:双字节指令:双字节指令:标号:标号:操作码操作码操作数或操作数地址操作数或操作数地址;注释;注释单字节指令:单字节指令:单字节指令:单字节指令:操作码操作码7 07 07 07 0三字节指令:三字节指令:三字节指令:三
20、字节指令:操作码操作码7 07 07 07 0数据或寻址方式数据或寻址方式7 07 07 07 0数据或寻址方式数据或寻址方式7 07 07 07 0指令按字节长度可以分为三种:指令按字节长度可以分为三种:指令格式指令格式指令格式指令格式指令的格式:指令的格式:例如:例如:MOVAMOVA,R0R0例如:例如:MOVAMOVA,30H30H例如:例如:MOVDPTRMOVDPTR,#2010H#2010H第40页/共87页41一、寻址方式一、寻址方式(找信找信找信找信方式方式方式方式)我的信在他我的信在他我的信在他我的信在他那那那那!找信找信找信找信去去去去!注:找信是寻找信的“地址”!你能说
21、出第你能说出第二封信的二封信的“地址地址”吗?吗?第41页/共87页42目的地目的地#XXHXXH操作数操作数MOVP1,MOVP1,#55H55HMOVA,MOVA,#01H01H#55H55H目的地目的地信信寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址第42页/共87页43目的地目的地寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址内部内部RAMRAM或或SFRSFR区区操作数操作数XXHXXHMOVP1,20HMOVP1,20H20H20H目的地目的地20H20H注:寻址是寻操作数的“地址”!直接给出地址直接给出地址20H20H直接寻址直接寻址直接寻址
22、直接寻址第43页/共87页44目的地目的地寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器寄存器目的地目的地操作数操作数XXHXXHMOVP1,AMOVP1,A寄存器寄存器R0-R7ABDPTR你能说出为什么叫你能说出为什么叫你能说出为什么叫你能说出为什么叫寄存器寻址吗?寄存器寻址吗?寄存器寻址吗?寄存器寻址吗?第44页/共87页45寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址MOVP1,R0MOVP1,R0目的地目的地寄存器寄存器操作数操作数3AH3AH内部内部RAMRAM3AH3AH65H65H3AH3AHR0R1DPTR寄寄存存器器间间接接寻寻址
23、址寄寄存存器器目的地目的地2 2号号信在信在2 2号箱子里号箱子里1 1号号你能说出你能说出你能说出你能说出1 1 1 1号箱号箱号箱号箱子和子和子和子和2 2 2 2号箱子分号箱子分号箱子分号箱子分别对应内存中哪别对应内存中哪别对应内存中哪别对应内存中哪一部分吗一部分吗一部分吗一部分吗?第45页/共87页46寻址比较寻址比较寻址比较寻址比较MOV P1MOV P1,R0R0地址是寄存器地址是寄存器R0R0MOV P1MOV P1,R0R0 地址在寄存器地址在寄存器R0R0里里MOV P1MOV P1,20H20H地址是内存地址是内存20H20HMOV P1MOV P1,#20H#20H直接将
24、直接将20H20H这个数送这个数送P1P1口口错!错!错!MOV P1MOV P1,R0R0对!第46页/共87页47寻址比较寻址比较MOV P1MOV P1,R0R0 地址是寄存器地址是寄存器R0R0MOV P1MOV P1,R0R0 地址在寄存器地址在寄存器R0R0里面里面MOV P1MOV P1,20H20H 地址是内存地址是内存20H20HMOV P1MOV P1,#20H#20H 直接将直接将20H20H这个数送这个数送P1P1口口错!错!错!MOV P1MOV P1,R0R0对!第47页/共87页48寻址比较寻址比较MOV P1MOV P1,R0R0 地址是寄存器地址是寄存器R0R
25、0MOV P1MOV P1,R0R0 地址在寄存器地址在寄存器R0R0里面里面MOV P1MOV P1,20H20HMOV P1MOV P1,#20H#20H 直接将直接将20H20H这个数送这个数送P1P1口口错!错!错!MOV P1MOV P1,20H20H对!地址是内存地址是内存20H20H第48页/共87页49寻址比较寻址比较MOV P1MOV P1,R0R0 地址是寄存器地址是寄存器R0R0MOV P1MOV P1,R0R0 地址在寄存器地址在寄存器R0R0里里MOV P1MOV P1,20H20H 地址是内存地址是内存20H20HMOV P1MOV P1,#20H#20H 直接将直
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 流水 程序设计 调试 概要
限制150内