模块2 并行IO接口的应用_第1页
模块2 并行IO接口的应用_第2页
模块2 并行IO接口的应用_第3页
模块2 并行IO接口的应用_第4页
模块2 并行IO接口的应用_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块2并行I/O接口的应用课题1基于单片机控制的简易信号灯任务11位灯闪亮的控制任务28位灯闪亮的控制任务38位流水灯的控制任务18位灯多花样闪亮的控制任务2简易交通灯的控制课题2基于单片机控制的信号灯的应用简易信号灯控制任务1工作任务让控制电路图中单片机P1.0口所对应的灯不断闪烁(即亮一会儿,灭一会儿)。简易信号灯控制任务1硬件电路该控制电路由单片机最小应用系统、8位由芯片74LS373驱动的发光二极管和5V直流稳压电源组成的。其中的8位灯是由单片机的P1口控制的,8位灯接成共阳极。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制其与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个I/O口既能输出也能输入的问题。74LS373锁存器的作用简易信号灯控制任务1软件设计要点分析发光二极管如何点亮?高电平“1”低电平“0”即当P1.0~P1.7引脚输出低电平时其对应的发光二极管才会亮!简易信号灯控制任务1软件设计要点分析怎样实现亮“一会儿”?利用程序执行需消耗时间来延时。例:延时50ms的延时子程序

DELAY:MOVR7,#0FFH DL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0RET☆减1不为0转移指令功能:寄存器(直接寻址单元)内容先减1,如所得内容为0,则程序顺序执行;如减1结果不为0,则程序转移。注:“$”代表本指令的地址格式:DJNZRn,relDJNZdirect,rel因为fosc=12MHZ,故机器周期Tcy=12/fosc=1us

DELAY:MOVR7,#0FFHDL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0RET延时时间T1=2us×100+1us=201us延时时间TDELAY=(T1+2us)×255+1us=(201us+2us)×255+1us=51768us≈52ms简易信号灯控制任务1软件设计要点分析延时时间的计算简易信号灯控制任务1软件设计步骤:1、熟读控制要求,理解题意;2、根据控制要求画出流程图;3、根据流程图编写程序。简易信号灯控制任务1软件设计一、控制流程图ORG0000HLJMPSTARTORG0030HCLRP1.0SETBP1.0LJMPSTART

DELAY:MOVR7,#255DL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0

DELAY:MOVR7,#255DL1:MOVR6,#100 DJNZR6,$ DJNZR7,DL1

ORG0000HLJMPSTARTORG0030HSTART:CLRP1.0MOVR7,#255DL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0SETBP1.0

MOVR7,#255DL1:MOVR6,#100DJNZR6,$DJNZR7,DL1LJMPSTARTEND当出现需重复使用的程序时可把它编写成子程序,需要时再用子程序调用指令LCALL/ACALL进行调用。子程序以标号开始,以子程序返回指令RET结束。一般把子程序放在结束指令END前面。简易信号灯控制任务1软件设计

ORG0000HLJMPSTARTORG0030HSTART:CLRP1.0

SETBP1.0LJMPSTART

DELAY:MOVR7,#255DL0:MOVR6,#100DJNZR6,$DJNZR7,DL0RETEND简易信号灯控制任务1软件设计

ORG0000HLJMPSTARTORG0030HSTART:CLRP1.0MOVR7,#255DL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0SETBP1.0

MOVR7,#255DL1:MOVR6,#100DJNZR6,$DJNZR7,DL1LJMPSTARTENDLCALLDELAYLCALLDELAY简易信号灯控制任务1软件设计三、控制功能源程序

ORG0000HLJMPSTARTORG0030HSTART:CLRP1.0LCALLDELAYSETBP1.0LCALLDELAYLJMPSTARTDELAY:

MOVR7,#0FFH DL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0RETEND简易信号灯控制任务1练习用取反指令“CPL”来实现任务。☆取反指令CPL格式:CPLbitCPLCCPLA功能:将位地址bit中的内容、标志位C的内容及累加器

ACC的内容8位取反。简易信号灯控制任务1练习用取反指令“CPL”来实现任务。

ORG0000HLJMPSTARTORG0030HSTART:

CLRCSTART1:MOVP1.0,CCPLCLCALLDELAYLJMPSTART1DELAY:

……END简易信号灯控制任务1软件设计方法小结1、如何让灯亮和灯灭2、有穷程序流程的控制3、如何实现程序的无穷循环4、如何实现延时及延时时间长度的计算和控制5、如何实现子程序的调用和返回控制课前复习1、MOVR0,#08MOVR1,#04LOOP:DECR0DJNZR1,LOOPEND问:执行完该程序后,(R0)=(),(R1)=()。2、已知(R1)=11000011BMOVA,R1CPLA问:执行完以上指令后,(R1)=(),(A)=()。简易信号灯控制任务2工作任务先让P1口控制的灯D7~D0分别灭、亮、灭、亮、灭、亮、灭、亮的状态,延时后,再让P1口控制的灯D7~D0分别亮、灭、亮、灭、亮、灭、亮、灭的状态。简易信号灯控制任务2任务分析10101010P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0各位状态各灯状态灭亮灭亮灭亮灭亮10101010=0AAH=55H状态1:灯D7~D0分别灭、亮、灭、亮、灭、亮、灭、亮P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0各位状态各灯状态亮灭亮灭亮灭亮灭状态2:灯D7~D0分别亮、灭、亮、灭、亮、灭、亮、灭的状态。(P1)=10101010B(P1)=01010101B任务2一、控制流程图软件设计简易信号灯控制ORG0000HLJMPSTARTORG0030HMOVP1,#0AAH

MOVP1,#55HLJMPSTARTLCALLDELAYLCALLDELAY二、控制功能源程序任务2软件设计简易信号灯控制

ORG0000HLJMPSTARTORG0030HSTART:MOVP1,#0AAHLCALLDELAYMOVP1,#55HLCALLDELAYLJMPSTARTDELAY:

MOVR7,#0FFH DL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0RETEND如图2-1-1所示:先让P1口控制的灯D7~D0分别亮、亮、亮、亮、灭、灭、灭、灭的状态,延时后,再让P1口控制的灯D7~D0分别灭、灭、灭、灭、亮、亮、亮、亮的状态。任务2练习简易信号灯控制任务2练习简易信号灯控制用取反指令“CPL”来实现任务。ORG0000HLJMPSTARTORG0030HMOVA,#0AAHCPLALJMPSTARTMOVP1,ALCALLDELAY

ORG0000HLJMPSTARTORG0030H

START:MOVA,#0AAHSTART1:

MOVP1,ACPLALCALLDELAYLJMPSTART1DELAY:

MOVR7,#0FFH DL0:MOVR6,#100 DJNZR6,$ DJNZR7,DL0RETEND任务2练习简易信号灯控制取反指令实现任务的源程序。简易信号灯控制任务2软件设计方法小结1、取反指令“CPL”对应的操作数只能是位地址bit、进位标志位C、累加器ACC

格式:CPLbitCPLCCPLA2、累加器ACC是工作最频繁的寄存器,当指令无法对I/O端口进行直接控制时,通常通过累加器ACC进行传送。任务3工作任务简易信号灯控制让P1口控制的8位灯从D0~D7灯逐个轮流点亮并不断循环。简易信号灯控制任务3任务分析状态1P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭灭灭灭亮状态2P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭灭灭亮灭状态3P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭灭亮灭灭状态4P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭亮灭灭灭状态5P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭亮灭灭灭灭……状态8P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态亮灭灭灭灭灭灭灭1111111011111101111110111111011111101111011111110FEH0FDH0FBH0F7H0EFH07FH任务3★顺序流程控制软件设计简易信号灯控制

ORG0000HLJMPSTARTORG0030HSTART:MOVP1,#0FEHLCALLDELAYMOVP1,#0FDHLCALLDELAYMOVP1,#0FBHLCALLDELAYMOVP1,#0F7HLCALLDELAYMOVP1,#0EFHLCALLDELAYMOVP1,#0DFHLCALLDELAYMOVP1,#0BFHLCALLDELAYMOVP1,#07FHLCALLDELAYAJMPMAIN用循环移位指令“RL”或“RR”及“DJNZ”来实现任务。任务3软件设计简易信号灯控制★有穷循环体控制☆循环移位指令格式:RLA;位循环左移指令

RRA;位循环右移指令

RLCA;带进位标志位C循环左移指令

RRCA;带进位标志位C循环右移指令☆减1不为0转移指令格式:DJNZRn,relDJNZdirect,rel任务3软件设计简易信号灯控制★有穷循环体控制ORG0000HLJMPSTARTORG0030HMOVA,#0FEHMOVR0,#8MOVP1,ARLALCALLDELAYDJNZR0,OUTOUTLJMPSTART任务3软件设计简易信号灯控制★有穷循环体控制

ORG0000HLJMPSTARTORG0030HSTART:

MOVA,#0FEHMOVR0,#8OUT:

MOVP1,ARLALCALLDELAYDJNZR0,OUTLJMPSTARTDELAY:……(略)END任务3练习简易信号灯控制1、如图2-1-1所示电路图,让P1口控制的8位灯从D7~D0灯逐个轮流点亮并不断循环。状态1P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态亮灭灭灭灭灭灭灭状态2P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭亮灭灭灭灭灭灭状态3P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭亮灭灭灭灭灭状态4P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭亮灭灭灭灭状态5P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭亮灭灭灭……状态8P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭灭灭灭亮

ORG0000HLJMPSTARTORG0030HSTART:

MOVA,#7FHMOVR0,#8OUT:

MOVP1,ARRALCALLDELAYDJNZR0,OUTLJMPSTARTDELAY:……(略)END任务3练习简易信号灯控制1、如图2-1-1所示电路图,让P1口控制的8位灯从D7~D0灯逐个轮流点亮并不断循环。参考源程序:2、如图2-1-1所示电路图,让P1口控制的8位灯从D0~D7灯两个两个轮流点亮并不断循环。状态1P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭灭灭亮亮状态2P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭灭灭亮亮灭灭状态3P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态灭灭亮亮灭灭灭灭状态4P1口各位P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0HEX值各位状态各灯状态亮亮灭灭灭灭灭灭任务3练习简易信号灯控制2、如图2-1-1所示电路图,让P1口控制的8位灯从D0~D7灯两个两个轮流点亮并不断循环。任务3练习简易信号灯控制

ORG0000HLJMPSTARTORG0030HSTART:

MOVA,#0FBHMOVR0,#4OUT:

MOVP1,ARLARLALCALLDELAYDJNZR0,OUTLJMPSTARTDELAY:……(略)END参考源程序:简易信号灯控制任务3软件设计方法小结1、循环移位指令对应的操作数只能是累加器ACC。格式:RLA;位循环左移指令

RRA;位循环右移指令

RLCA;带进位标志位C循环左移指令

RRCA;带进位标志位C循环右移指令课前复习1、循环移位指令注:移位指令对应的操作数只能是累加器ACC。

格式:RLA;位循环左移指令

RRA;位循环右移指令

RLCA;带进位标志位C循环左移指令

RRCA;带进位标志位C循环右移指令例1:已知(A)=11000000B,(CY)=1若执行一次RLA后,结果为:(A)=(),(CY)=();若执行一次RRA后,结果为:(A)=(),(CY)=();若执行一次RLCA后,结果为:(A)=(),(CY)=();若执行一次RRCA后,结果为:(A)=(),(CY)=()。课前复习2、流水灯程序设计要点:(1)初始状态(2)移位方向(3)移位次数课前复习

ORG0000HLJMPSTARTORG0030HSTART:

MOVA,#0FEHMOVR0,#8OUT:

MOVP1,ARLALCALLDELAYDJNZR0,OUTLJMPSTARTDELAY:……(略)END课前复习信号灯的应用任务1工作任务让控制电路图中的8位灯按如下流程工作:8位灯以“0AAH”的初态闪亮8次→两灯并行左移后右移(每次移位1次),3个循环后全灭→从D0~D7灯逐个递亮后全灭→从D7~D0灯逐个递亮后全灭→重复循环执行以上程序。信号灯的应用任务1任务分析

MOVA,#0AAHMOVR2,#8LPP:MOVP1,ACPLALCALLDELAYDJNZR2,LPPEND信号灯的应用任务1程序设计(一)8位灯闪亮程序信号灯的应用任务1程序设计(二)两灯并行左移后右移(每次移位1次),3个循环后全灭;左移程序

MOVA,#0FCHMOVR2,#7LLS:MOVP1,ARLALCALLDELAYDJNZR2,LLSMOVP1,#0FFH信号灯的应用任务1程序设计(二)两灯并行左移后右移(每次移位1次),3个循环后全灭;右移程序

MOVA,#3FHMOVR2,#7LRS:MOVP1,ARRALCALLDELAYDJNZR2,LRSMOVP1,#0FFHMOVR3,#3LRS:MOVR2,#7MOVA,#0FCHLLS:MOVP1,ARLALCALLDELAYDJNZR2,LLSMOVP1,#0FFHLCALLDELAY

MOVR2,#7MOVA,#3FHRRS:MOVP1,ARRALCALLDELAYDJNZR2,RRSMOVP1,#0FFHLCALLDELAYDJNZR3,LRS信号灯的应用任务1程序设计(二)两灯并行左移后右移(每次移位1次),3个循环后全灭MOVR3,#3LRS:MOVR2,#7MOVA,#0FCHLCALLLLSMOVP1,#0FFHLCALLDELAY

MOVR2,#7MOVA,#3FHLCALLRRSMOVP1,#0FFHLCALLDELAYDJNZR3,LRSLLS:MOVP1,ARLALCALLDELAYDJNZR2,LLSRETRRS:MOVP1,ARRALCALLDELAYDJNZR2,RRSRET信号灯的应用任务1程序设计(三)从D0~D7灯逐个递亮后全灭(方法一)

MOVR2,#8MOVA,#0FEHLLSS:MOVP1,A

CLRCRLCALCALLDELAYDJNZR2,LLSSMOVP1,#0FFH信号灯的应用任务1程序设计☆新指令剖析1、减1指令DEC功能:将操作数所指定的单元内容减1。格式:DECADECRnDECdirectDEC@Ri信号灯的应用任务1程序设计(三)从D0~D7灯逐个递亮后全灭(方法二)

MOVR2,#8MOVA,#0FEHLLSS:MOVP1,A

RLADECALCALLDELAYDJNZR2,LLSSMOVP1,#0FFH信号灯的应用任务1程序设计(四)从D7~D0灯逐个递亮后全灭(方法一)

MOVR2,#8MOVA,#7FHRRSS:MOVP1,A

CLRCRRCALCALLDELAYDJNZR2,RRSSMOVP1,#0FFH信号灯的应用任务1程序设计☆新指令剖析2、带借位减法指令SUBB功能:从累加器ACC中减去源操作数所指出的数据及进位标志位C的值,差值保存在累加器ACC中。格式:SUBBA,RnSUBBA,directSUBBA,@RnSUBBA,#data例:若(A)=60H,(R3)=3BH,则执行以下指令后,(A)=?

CLRCSUBBA,R3;(A)=60H-3BH-0H=25H信号灯的应用任务1程序设计(四)从D7~D0灯逐个递亮后全灭(方法二)

MOVR2,#8MOVA,#7FHRRSS:MOVP1,A

RRACLRCSUBBA,#80HLCALLDELAYDJNZR2,RRSSMOVP1,#0FFH

;D0~D7灯逐个递亮后全灭

MOVR2,#8MOVA,#0FEHLCALLLLSSMOVP1,#0FFHLCALLDELAY;D7~D0灯逐个递亮后全灭

MOVR2,#8MOVA,#7FHLCALLRRSSMOVP1,#0FFHLCALLDELAY;从D0开始亮LLSS:MOVP1,ACLRCRLCALCALLDELAYDJNZR2,LLSSRET;从D7开始亮RRSS:MOVP1,ACLRCRRCALCALLDELAYDJNZR2,RRSSRET信号灯的应用任务2工作任务用图中的6位灯来分别表示十字路口东西方向的灯、绿灯、黄灯和南北方向的红灯、绿灯、黄灯,实现简易交通灯的控制。信号灯东西方向南北方向绿灯黄灯红灯绿灯黄灯红灯输出分配P1.0P1.1P1.2P1.3P1.4P1.5信号灯的应用任务2任务分析☆系统启动的初始状态:东西绿灯亮、南北红灯亮,维持15s;☆第二状态:东西绿灯闪亮,南北红灯亮,维持3s,其中东西绿灯每隔0.5s状态取反一次;☆第三状态:东西黄灯亮,南北红灯亮,维持2s;☆第四状态:东西红灯亮,南北绿灯亮,维持20s;☆第五状态:东西红灯亮,南北绿灯闪亮,维持3s,其中南北绿灯每隔0.5s状态取反一次;☆第六状态:东西红灯亮,南北黄灯亮,维持2s;重复执行以上状态。1、状态分析信号灯的应用任务2任务分析2、状态数值分析P1口南北方向东西方向P1.7P1.6P1.5(红)P1.4(黄)P1.3(绿)P1.2(红)P1.1(黄)P1.0(绿)HEX值初态状态2状态3状态4状态5状态6110111101101110111110011111010110DEH0DDH0EBH0F3H将P1.0引脚的状态每隔0.5s取反一次将P1.3引脚的状态每隔0.5s取反一次信号灯的应用任务2软件设计☆新指令剖析1、逻辑“异或”运算指令XRL功能:常用来对字节中某些位进行取反操作,若某位取反则该位与“1”相异或;若某位保留则该位与“0”相异或。还可利用异或指令对某单元自身异或,以实现清零操作。格式:XRLdirect,AXRLdirect,#dataXRLA,#dataXRLA,directXRLA,RnXRLA,@Ri例如:若(A)=0B5H=10110101B,执行以下指令:

XRLA,#0F0HMOV30H,AXRLA,30H信号灯的应用任务2软件设计☆新指令剖析1、逻辑“异或”运算指令XRL;A的高四位取反,低四位保留,(A)=01000101B;将A的值存入30H,(30H)=01000101B;自身异或使A清零,(A)=00000000B1、若(A)=63H=01100011B,执行以下指令:

XRLA,#0FHMOV40H,AXRLA,40H练习2、执行以下指令:

SIZEEQU60HORG0000HMOVR0,#SIZELJMP$结果:(R0)=();(A)=01101100B;(40H)=01101100B;自身异或使A清零,(A)=00000000B60H信号灯的应用任务2软件设计☆新指令剖析2、伪指令EQU(=)格式:名字EQU表达式或名字=表达式例如:SIZEEQU15

或SIZE=0FH注意:此指令一般放在开始指令ORG的上面。信号灯的应用任务2软件设计信号灯的应用任务2软件设计(一)延时程序的编写;延时50ms的程序DELAY:MOVR2,#246DL0:MOVR3,#100 DJNZR3,$DJNZR2,DL0RET;延时1s的程序DEL1s:MOVR5,#20DEL1:LCALLDELAYDJNZR5,DL1RET;延时ns的程序

MOVR4,#nDLS:LC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论