(整理)节日彩灯设计0001_第1页
(整理)节日彩灯设计0001_第2页
(整理)节日彩灯设计0001_第3页
(整理)节日彩灯设计0001_第4页
(整理)节日彩灯设计0001_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档第一章绪论设1计要求1)从两边向中间点亮或从中间向两边点亮,依次循环不止,彩灯的亮灭滚动至少有四组动态变化。)亮灭时间为23)用一个开关控制彩灯的工作与否.设2计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础。1.3设计的原始资料及依据查阅可编程并行芯片82、55中断控制等其他相关资料。用简单的输入输出端口等硬件,结合实际彩灯的亮灭控制过程进行设计,要求至少有四组变化过程。第二章硬件设计硬

2、1件原理2.1.18086系统简介1808系6统概述Intel8086是16位的微处理器(理论学习中为8088,其内部总线为16位,外部总线为8位,故称为准16位微处理器),它采用HMOS工艺40条引脚封装。8086工作时使用5V电源,时钟频率5MHz(8086-1为10MHz,8086-2为8MHz)它有20根地址线,故可寻址的内存空间为1MB。的引脚功能8086CPU采用双列直插式的封装形式,有40条引脚。8086CPU采用了分时复用的地址/数据总线,所以有一部分引脚具有双重功能。为了适应不同的应用环境,8086CPU有两种工作方式:最大方式(MX)和最小方式(MN),这由引脚33(MN/

3、MX)加以控制。最小方式适用于单微处理器组成的小系统,在这种系统中,所有的总线控制信号都直接由8086/8088产生;最大方式适用于多微处理器组成的大系统,它包含两个或多个微处理器,其中一个就是8086,称为主处理器,其他的处理器则称为协处理器,其具体引脚功能见表2.1。表引脚功能说明引脚名称功能引脚名称功能AD0AD15分时复用的双向、三态地址/数据线BHE/S7AD19/S6AD16/S分时复用,输出引INTR3脚NMI输入,非可屏蔽请求GNDCLK输入,时钟READYREST输入,复位INTA(QS1)TEST输入,测试低电平有效DEN(S0)ALE(QS0)输出,地址锁存允许WR(LO

4、CK)DT/R(S1)三态输出,数据发送/接收控制信号MN/MXM/IO(S2)三态输出,存储器/IO端口HOLD(RQ0/GT三态输出高8位数据有效/状态复用输入,可屏蔽请求地线(两个)准备就绪,输入输出,中断响应三态输出,数据允许信号三态输出,写决定工作模式输入总线请求HLDA(RQ1/GT1)总线请求响应,输出RD三态输出,读8086CPU的条引脚如图2.1。GND140VccAD14239AD15AD13338AD16/S3AD12437ADJS4AD11536AD18/S5AD10635AD19/S6AD9734BHE/S7AD8833MN/MXAD7932RDAD610oAo,80

5、8631HOLD(RQ/GT0)AD51130HLDA(RQ/GT1)AD41229WRAD31328M/IO(S2)AD21427DT/R(S1)AD11526DEN(S0)AD01625ALE(QS0)NMI1724INTA(QS1)INR1823TESTCLK1922READYGND2021REST图2.18086CPU引脚图38086系统的内部结构Intel8086/8088CPU是Intel公司推出的高性能的微处理器,具体如下主要特性:8086CPU数据总线为16位,8088CUP数据总线为8位。(2)地址总线都是20位,低16位用于数据总线复用,可直接寻址为1MB的存储空间。有16

6、位的端口地址,可以寻址64KB的I/O端口。有99条基本指令,指令功能强大有9种基本寻址方式。可以处理内部和外部中断,外部中断源多达256个。兼容性好,与80*86,8085在源程序一级兼容。8086/8088标准主频为5MHz,8086/8088-2主频为8MH。(9)支持单处理器或多处理器系统工作。实验中是以微处理器为核心,来模拟处理器来进行系统的测试工作8系6统具体内部结构如图所2示。图内部结构图4.8086CPU寄存器结构中有个位的寄存器其中有个位的通用寄存器个位指针寄存器,2个16位变址寄存器,1个16位指令指针及1个16位标志寄存器(仅用9位)。1)通用寄存器:通用寄存器包括累加器

7、,基址寄存器,计数寄存器,数据寄存器四个寄存器,位于的中,每个数据寄存器可存放位操作数,也可拆成两个位寄存器,用来存放8位操作数。表通用寄存器的特殊用途和隐含属性寄存器名称特殊用途及隐含性质在输入输出指令中作数据寄存器,不能隐含AX在乘法指令中存放被乘数或乘积,在除法指令中存放被除数或商,能隐藏AH在LAHF指令中,作目标寄存器,能隐藏在输入/输出指令中作数据寄存器,不能隐藏AL在十进制运算指令中作累加器,能隐含在XLAT指令中作累加器,能隐含在间接寻址中作基址寄存器,不能隐含BX在XLAT指令中作基址寄存器,能隐含CX在串操作指令和LOOP指令中做计数器,能隐含CL在移位/循环移位指令中作移

8、位次数计数器,不能隐含在字乘法/除法指令中存放乘积高位或被除数高位或余数,能隐含DX在间接寻址的输入/输出指令中作地址寄存器,不能隐含2)指针和变址寄存器指针和变址寄存器包括:堆栈指针SP、基址指针BP、源变址寄存器51、和目的变址寄存器DI四个16位寄存器,可以来存放数据和地址。表2.3指针和变址寄存器的特殊用途和隐含性质寄存器名称特殊用途及隐含性质SIDIBPSP在字符串运算指令中作源变址寄存器,能隐含在间接寻址中作变址寄存器,不能隐含在字符串运算指令中作目标变址寄存器,能隐含在间接寻址中作变址寄存器,不能隐含在间接寻址中基址指针,不能隐含在堆栈操作中作堆栈指针,能隐含3)段寄存器段寄存器

9、包括:代码段寄存器CS,用于存放当前代码段的段地址;数据段寄存器DS,用于存放当前数据段的段地址;附加段寄存器ES,用于存放当前附加段的地址;堆栈段寄存器SS,用于存放当前堆栈段的段地址。这些段寄存器彼此不能互换,每个段寄存器在8086存储寻址空间中规定了64KB的存储快。该64KB存储快叫做段寄存器的当前段。4)专用寄存器包括指令指针寄存器(IP)和标志寄存器(FR)。指令指针寄存器(IP):用来存放要取的下一条指令在当前代码段中的偏移地址,程序不能直接访问IP,在程序运行过程中,BIU可修改IP中内容。指令指针寄存器每执行一次取操作,将自动加1,使它指向下一条要取的内存单元。标志寄存器(F

10、R):尽定义了9位,其中6位用作状态标志,3位用作控制标志。150OFDFIFTFSFZFAFPFCF5)状态标志位进位标志CF:当前加法运算有进位,减法运算有借位时,CF=1,否则CF=0。辅助进位标志AF:在字节操作时,低4位向高4位有进位(加法)或有借位(减法);在字操作时,低字节向高字节有进位(加法)或有借位(减法)时,则,AF=1,否则AF=0。奇偶校验标志PF:当运算结果低8位“1”的个数为偶数时,PF=1,否则PF=0。零标志ZF:当运算结果为0时,ZF=1,否则ZF=0。溢出标志OF:在有符号数的算术运算时,当运算结果有溢出时,OF=1,否则0F=0。符号标志SF:在有符号数的

11、算术运算时,当运算结果为负时,SF=1,否则SF=0。6)控制标志位方向标志DF:当DF=0时,在串操作指令中,进行自动增址操作;当DF=1时,在串操作指令中,进行自动减址操作。中断允许标志IF:当IF=0时,禁止响应可屏蔽中断;当IF=1时,允许响应可屏蔽中断。单步陷阱标志TF:当TF=1时,表示进入单步工作方式;当TF=0时,表示正常执行。一8255芯片概述在计算机系统中,CPU和外部设备要进行数据的传输,必须采用接口电路来实现,8255并行接口就是利用并行传输方式,所谓并行传输方式就是同时在多根传输线上,数据以字节或字为单位进行传送,在并行传送方式下,外设必须通过并行接口与系统总线相连接

12、。在并行接口中,通常采用可编程并行接口芯片与主机相连接。Intel8255A就是应用最广泛的典型可编程并行接口芯片之一2.1.28255芯片的引脚功能如图2.3所示PA3140PA4PA2239PA5PAi338PA6PA0437PA7RD536WRCS635RESETGND734D0833D1D2A098255A32PC71031D3PC61130D4PC51229D5PC41328D6PC01427D7PC11526VSSPC21625PB7PC31724PB6PB01823PB5PB11922PB4PB22021PB3图5.38255A引脚图1、与外部设备端相连的引脚PA0PA7:端口A

13、输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。PB0-PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。2、与CPU相连的引脚RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。D0D/三态双向数据总线,8255与CPU数据传送的通道,

14、当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。3)一:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。4)一:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。5):写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。如图2.48255芯片的内部结构数据接口8255A3个8位数据接口,即接口A,接口B和接口CA端口:包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口:包含一个8位数据输入/输出锁存器和缓

15、冲器,一个8位数据输入缓冲器。C端口:包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。A组控制和B组控制这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。3)读写控制逻辑电路用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端

16、口送到CPU。4)数据总线缓冲器这是一个双向三态的8位数据缓冲器,它是8255与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。2.58255芯片的控制字:位操作:方式选择00:方式001:方式1IX:方式2图2.58255A的方式选择控制字2.硬2线连接2.2实.1际接线图;堆栈段定义;堆栈段定义结束;代码段定义;8255初始化,将控制口地址传送到DX;A、B口输出C口输入工作方式0的控制字;将控制字传送到控制口TEST1:MOVDX,0644HINAL,DXTESTAL,01HJNZOPENJMPDONEOPEN:MOVBX,01

17、80HMOVCX,2MODE1:MOVDX,0644HINAL,DXTESTAL,01HJZGUANJIMOVDX,0644HINAL,DXTESTAL,02HJZMODE1MOVDX,0640HMOVAL,BHOUTDX,ALMOVDX,0642HMOVAL,BL第三章程序设计;文件名:节日彩灯设计.ASM;功能描述:;从两边向中间点亮或从中间向两边点亮,依次循环不止,彩灯的亮灭滚动;至少有四组动态变化。;亮灭时间为0.25S。;用一个开关控制彩灯的工作与否;SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART

18、:MOVDX,0646HMOVAL,89HOUTDX,AL;检测开关是否置于打开,将8255的C口地址赋DX;将C口值赋给AL;检测开关是否打开;开关为1则向下执行OPEN;若开关为0则跳转DONE;第一种模式0000000110000000;第一种模式循环两次;检测开关状态;将C口值赋给AL;检测开关是否打开;如果检测开关为0的话则跳转GUANJI;检测暂停开关状态,将8255的C口地址赋DX;将C口值赋给AL;检测暂停开关是否开启;输出端高位向左循环;将BX的高八位00000001传送给AL;将AL中的00000001传送给8255的A口ROLBH,1;BH逻辑左移1位;输出端低位向右循环

19、;将BX的低八位10000000传送给ALOUTDX,AL;将AL中的10000000传送给8255的B口CALLSEC;启动延时RORBL,1CMPBL,01HJNZMODE1LOOPMODE1MOVBX,03C0HMOVCX,2MODE2:MOVDX,0644HINAL,DX;BL逻辑循环右移1位;将BL中的数值与00000001比较;如果不相等则继续执行MODE1;循环MODE1;第二种模式0000001111000000;第二种模式循环两次;检测开关状态;将C口值赋给ALTESTAL,01H;检测开关是否打开JZGUANJIMOVDX,0644HINAL,DXTESTAL,02H;将C

20、口值赋给AL;检测暂停开关是否开启;如果检测开关为0的话则跳转GUANJI;检测暂停开关状态,将8255的C口地址赋DXJZMODE2MOVDX,0640H;输出端高位向左循环,将8255的A口地址赋DXMOVAL,BHOUTDX,ALROLBH,1MOVDX,0642HMOVAL,BLOUTDX,ALRORBL,1CALLSECCMPBL,03HJNZMODE2LOOPMODE2MODE3:MOVDX,0644HINAL,DXTESTAL,01HJZGUANJIMOVDX,0644HINAL,DXTESTAL,02HJZMODE3;将BX的高八位00000011传送给AL;将AL中的0000

21、0011传送给8255的A口;BH逻辑左移一位;输出端的低位向右循环,将8255的B口地址赋DX;将BX的低八位11000000传送给AL;将AL中的11000000传送给8255的B口;BL逻辑右移一位;启动延时;将BL中的数值与00000011比较;如果不相等,则继续跳转MODE2;如果相等,再循环执行一次MODE2;检测开关状态;将C口值赋给AL;检测开关是否打开;如果检测开关为0的话则跳转GUANJI;检测暂停开关状态,将8255的C口地址赋DX;将C口值赋给AL;检测暂停开关是否开启MOVDX,0640HMOVAL,BHOUTDX,ALRORBH,CLMOVDX,0642HMOVAL

22、,BLOUTDX,ALCALLSECMOVCL,2ROLBL,CLTESTBL,0C0HJZMODE3MOVBX,8001HMOVCX,2MODE4:MOVDX,0644HINAL,DX;第三种模式1100000000000011;将BX的高八位11000000传送给AL;将AL中的11000000传送给8255的A口;BH逻辑左移2位;输出端的低位向右循环,将8255的B口地址赋DX;将BX的低八位00000011传送给AL;将AL中的00000011传送给8255的B口;启动延时;将2传送给CL;BL循环左移CL中的数值位;将BL中的数值与11000000比较;如果不相等则继续执行MODE

23、3;第四种模式为1000000000000001;第四种模式循环两次;暂停开关是否置于打开,将8255的C口地址赋DX;将C口值赋给ALTESTAL,02HJZMODE4MOVDX,0640HMOVAL,BHOUTDX,ALRORBH,1MOVDX,0642H;检测暂停开关是否开启;输出端的高位向右循环,将8255的A口地址赋DX;将BX的高八位10000000传送给AL;将AL中的10000000传送给8255的A口;BH逻辑右移一位;输出端的低位向左循环,将8255的B口地址赋DXMOVAL,BLOUTDX,ALROLBL,1CALLSECTESTBL,80HJZMODE4LOOPMODE

24、4JMPSTARTGUANJI:CALLDONESEC:PUSHCXMOVCX,0D142HAA1:PUSHAXPUSHBXPOPBXPOPAXLOOPAA1POPCXRET;将BX的低八位00000001传送给AL;将BX的低八位00000001传送给B口;BL逻辑左移一位;启动延时;将BL的内容与10000000进行比较;如果不相等则继续执行MODE4;循环MODE4;跳转至USTART;延时指令;延迟时间0.25S;AX进栈;BX进栈;BX出栈;AX出栈;循环AA1;返回DONE:MOVDX,0640HMOVAL,00HOUTDX,ALMOVDX,0642HMOVAL,00HOUTDX,

25、ALJMPTEST1;开关对应指令;将00H传送给AL;将00H传送给A口;将00H传送给AL;将00H传送给B口;跳转至UTEST1CODEENDSENDSTART;程序结束第四章系统实现系1统实现作为节日彩灯,最基本的功能就是让灯亮起来,不过要想让灯亮,就一定要有相对应的电源,为了构成彩灯的变化,就要用多一些的发光二极管,因此要利用我们曾经学过的8255A并行接口这一芯片。在学习了8255芯片以及对应的上机实验之后,我知道让灯亮起来这一问题并不复杂,相对复杂的是让彩灯有规律的循环。通过实验,我知道可以用将初始化的发光信号进行循环操作或者加减1的操作,来达至循环的目的。通过TEST和CMP指令可以用来实现让不同的变化之间进行交替功能。至于有延时选用0.25s的延时程序,开关控制则是利用K0与8255的连接利用隐含寻址以及TEST语句来实现的。止匕外,通过在每一次变化的过程中,加入

温馨提示

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

评论

0/150

提交评论