ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:49.58KB ,
资源ID:7573607      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7573607.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(循环灯实验报告与代码.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

循环灯实验报告与代码.docx

1、循环灯实验报告与代码合肥工业大学计算机与信息学院课程设计课 程:微机原理与接口技术设计专业班级:计算机科学与技术12-1班学 号: * * *一、设计题目及要求:题目: 利用8255A和8253使发光二极管按一定规律轮流点亮要求:发光二极管的点亮方式:将发光二极管分为n组,每组12/n个灯管,每组灯管发光时间没t。设有8种组合:(1) n=12,t=1s: 每个灯管单独一组,间隔1秒循环点亮。(2) n=12,t=2s: 每个灯管单独一组,间隔2秒循环点亮。(3) n=6,t=1s: 每两个灯管一组,间隔1秒循环点亮。(4) n=6,t=2s: 每两个灯管一组,间隔2秒循环点亮。(5) n=4

2、,t=1s: 每三个灯管一组,间隔1秒循环点亮。(6) n=4,t=2s: 每三个灯管一组,间隔2秒循环点亮。(7) n=3,t=1s: 每四个灯管一组,间隔1秒循环点亮。(8) n=3,t=2s: 每四个灯管一组,间隔2秒循环点亮。要求: 按键盘的“A”, “B”, “C”, “D”分别表示选择的灯管数目(一个一组,两个一组,三个一组,四个一组),按键盘的“E”, “F”,表示选择时间(一秒两秒)。程序启动时默认按第一种方式进行循环,当按动“AF”时,根据设定情况随时改变循环方式,当按“0”键退出程序,所有灯管熄灭。提示:1:主程序为键盘输入按AD命令分支到各点亮功能程序段,按0退出。2:定

3、时时间1秒2秒可由8253产生定时中断,通过IPQ2引起中断请求。8253的定时器工作可参考“定时/计数器:8253方波”。3:在中断服务程序中,通过8255A的端口B的PB4-PB7,端口C的PC0PC7来设置发光二极管下一组灯点亮,其他灯都暗。次序可从左到右,也可以从右到左。4: 8255A输出点亮发光二极管可参考 “8255A” 并行口实验(三)。二、设计思想:使用8259中断服务子程序,来去执行中断,用8253方波计时器来去产生1秒和两秒的时间间隔。把8253和8259结合正好可以把间隔一秒和两秒的计时器导入程序之中。利用5255A交通灯的特性,把交通灯按要求轮流点亮。(一)可编程并行

4、接口芯片8255系统中的8255线路8255的数据线片选信号线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出供825实验使用。可编程并行接口Intel8255A,其内部结构如图所示,由以下4个部分组成:数据总线缓冲器。这是一个三态双向8位缓冲器,它是8255A与CPU系统数据总线的接口。所有数据的发送与接收,以及CPU发出的命令字和从8255A来的状态信息都是通过该缓冲器传送的。读/写控制逻辑。读/写控制逻辑由读信号RD,写信号WR,选片信号CS以及端口选择信号A0、A1等组成。读/写控制逻辑控制了总线的开放、关闭和信息传送的方向,以便把CPU的控制命令或输出数据

5、送到相应的端口;或把外设的信息或输入数据从相应的端口送到CPU。8255A的基本操作及在TP86A、PC/TX和扩展板上的端口地址如下表所示。输入/输出端口A、B、C。8255A包括3个8位输入输出端口(port)。每个端口都有一个数据输入寄存器和一个数据输出寄存器,输入时端口有三态缓冲器的功能,输出时端口有数据锁存器功能。在实际应用中,PC口的8位可分为两个4位端口(0方式下),也可以分成一个5位端口和一个3位端口(2方式下)来使用。A组和B组控制电路。控制A,B,C三个端口的工作方式,A组控制A口和C-4-口的上半部(PC4-PC7),B组控制B口和C口的下半部(PC0-PC3)的工作方式

6、和输入输出。A组和B组的命令寄存器还接收按位控制命令,以实现对PC口的按位置位/复位操作。(二) Intel8253可编程定时/计数器1片8253内部有3个计数器,分别称为计数器0、1、2,其结构完全,互相之间工作完全独立。每个计数器有三个引脚和外部联系CLK:计数脉冲输入,计数器对该引脚出现的信号进行计数,最高计数速率为2.6MHZ。Gate:门控输入,用于控制计数器是否对CLK计数。OUT:输出信号端。每个计数器内部都有1个8位的控制寄存器,三个控制寄存器使用同一端口地址,在编程结构图中,画为1个控制寄存器。每个计数器内部还有1个计数初值寄存器(CR)、1个计数执行部件(CE)和1个输出锁

7、存器(OL),它们都是16位的。执行部件(CE)是1个16位减法计数器,其起始值等于初值寄存器(CR)的值。CR的值通过程序设置。输出寄存器(OL)用来锁存执行部件(CE)的值,以便CPU读出。原理:通过Intel8253可编程定时/计数器方式3方波发生器与方式0计数结时产生中断风别产生的方波和中断来计数,配合可编程并行接口芯片8255来控制流水灯的循环点亮,通过键盘扫描来接受外部控制.并通过八段数码管将A,B,C,D显示,并且转入相应的模式执行。实验连线:8255A: PA0-L15 PA1-L14 PA2-L13 PA3-L11 PA4-L10 PA5-L9 PA6-L7 PA7-L6 P

8、B0-L5 PB1-L3 PB2-L2 PB3-L18259:连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与总线单元上方的GS相连。 将8259CS插孔与译码单元的Y0相连,中断源IR7与单脉冲单元的SP插孔相连。用8芯扁平电缆将8259中断控制单元的数据总线插座与数据总线单元任一插座相连。8253: 将8253CS与译码单元的Y1相连,中断源IR0与8253的OUT0口相连。用8芯扁平电缆将8251串行通信单元的数据总线插座与数据总线单元任一插座相连。GATE0与+5V相连,CLK0与频单元T7相连三、功能流程图: 按键 A B C D 按键 按键

9、 按键 按键 E F E F E F E F 按键 0四、结果讨论:刚开始使用循环计时来实现倒计时,计时会有误差,改为8253计时器之后,及时秒数比较准确。因为要求可以随时切换状态,所以将检测有无按键以及按键之后的切换写成一个子程序,在需要切换的地方进行调用。所有的模块都写成子程序,这样在调用的时候比较方便。使用8259中断时,要注意关中断和开中断的位置,否则会造成中断脉冲按键不灵。程序的关键是每个状态的相互切换。附录:实验代码:(完整的源程序)CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 2000HJMP APA EQU 0FFD8HPB E

10、QU 0FFD9HPC EQU 0FFDAHPCTL EQU 0FFDBHOUTSEG EQU 0FFDCH ;段控制口OUTBIT EQU 0FFDDH ;位控制口/键扫口IN_KEY EQU 0FFDEH ;键盘读入口ZXK EQU 0FFDCH ;字型口ZWK EQU 0FFDDH ;字位口Port0 EQU 0FFE4HPort1 EQU 0FFE5HSHOW1 DB 02HFLAG DB ?PCC1 DB 07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH,0FFH,0FFH,0FFH,0FFHPBC1 DB 0FFH,0FFH,0FFH,0FFH,0FF

11、H,0FFH,0FFH,0FFH,07FH,0BFH,0DFH,0EFHPCC2 DB 03FH,0CFH,0F3H,0FCH,0FFH,0FFHPBC2 DB 0FFH,0FFH,0FFH,0FFH,03FH,0CFHPCC3 DB 01FH,0E3H,0FCH,0FFHPBC3 DB 0FFH,0FFH,07FH,08FHPCC4 DB 0FH, 0F0H,0FFHPBC4 DB 0FFH,0FFH,0FH;-8253芯片初始化- A: MOV DX,0FFE3H ;控制口 MOV AL,36H ;计数器0,方式3,二进制计数 OUT DX,AL MOV DX,0FFE0H MOV AL,

12、00 OUT DX,AL MOV AL,4bH OUT DX,AL;-;-8255芯片初始化- MOV DX,PCTL MOV AL,80H ;1000 0000b OUT DX,AL MOV DX,PA ;PA置0 MOV AL,0 OUT DX,AL MOV DX,PB MOV AL,0FFH OUT DX,AL MOV DX,PC MOV AL,0FFH OUT DX,AL;-;-中断向量地址- CLI MOV AX,OFFSET INT8259 MOV BX,003CH MOV BX,AX MOV BX,003EH MOV AX,0000H MOV BX,AX CALL FOR8259

13、 STI;- JMP _AESTART: CALL GetKey CMP AL,0AH JZ NEXTA CMP AL,0BH JZ NEXTB CMP AL,0CH JZ NEXTC CMP AL,0DH JNZ _D JMP NEXTD_D: CMP AL,00H JNZ START JMP EXITNEXTA: MOV FLAG,0 CALL GetKey CMP AL,0EH JZ _AE CMP AL,0FH JZ _AF JMP NEXTA_AE: MOV SI,0 MOV DI,0 CALL E JMP LAST_AF: MOV SI,0 MOV DI,0 CALL F JMP

14、LASTNEXTB: MOV FLAG,1 CALL GetKey CMP AL,0EH JZ _BE CMP AL,0FH JZ _BF JMP NEXTB_BE: MOV SI,0 MOV DI,0 CALL E JMP LAST_BF: MOV SI,0 MOV DI,0 CALL F JMP LASTNEXTC: MOV FLAG,2 CALL GetKey CMP AL,0EH JZ _CE CMP AL,0FH JZ _CF JMP NEXTC_CE: MOV SI,0 MOV DI,0 CALL E JMP LAST_CF: MOV SI,0 MOV DI,0 CALL F JM

15、P LASTNEXTD: MOV FLAG,3 CALL GetKey CMP AL,0EH JZ _DWE CMP AL,0FH JZ _DWF JMP NEXTD_DWE: MOV SI,0 MOV DI,0 CALL E JMP LAST_DWF: MOV SI,0 MOV DI,0 CALL F JMP LASTEXIT: CALL FINISH JMP FINLAST: JMP STARTFIN: HLT;-中断服务子程序-INT8259: CLI CMP FLAG,0 JZ LA CMP FLAG,1 JZ LB CMP FLAG,2 JZ LC JMP LDLA: MOV AL,

16、PCC1SI MOV DX,PC OUT DX,AL MOV AL,PBC1DI MOV DX,PB OUT DX,AL CMP SI,0BH JZ CONA INC SI INC DI JMP FINICONA: MOV SI,00H MOV DI,00H JMP FINILB: MOV AL,PCC2SI MOV DX,PC OUT DX,AL MOV AL,PBC2DI MOV DX,PB OUT DX,AL CMP SI,05H JZ CONB INC SI INC DI JMP FINICONB: MOV SI,00H MOV DI,00H JMP FINILC: MOV AL,PC

17、C3SI MOV DX,PC OUT DX,AL MOV AL,PBC3DI MOV DX,PB OUT DX,AL CMP SI,03H JZ CONC INC SI INC DI JMP FINICONC: MOV SI,00H MOV DI,00H JMP FINILD: MOV AL,PCC4SI MOV DX,PC OUT DX,AL MOV AL,PBC4DI MOV DX,PB OUT DX,AL CMP SI,02H JZ COND INC SI INC DI JMP FINICOND: MOV SI,00H MOV DI,00H JMP FINIFINI: MOV DX,PO

18、RT0 MOV AL,20H OUT DX,AL STI IRET;-中断服务子程序-;-8259芯片初始化-FOR8259: MOV AL,13H MOV DX,Port0 OUT DX,AL MOV AL,08H MOV DX,Port1 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,7FH ;IRQ7 OUT DX,AL RET;-;-按键E-E: MOV DX,PA MOV AL,01H OUT DX,AL MOV DX,0FFE0H MOV AL,00 OUT DX,AL MOV AL,4BH OUT DX,AL RET;-;-按键F-F: MOV DX

19、,PA MOV AL,01H OUT DX,AL MOV DX,0FFE0H MOV AL,00 OUT DX,AL MOV AL,96H OUT DX,AL RET;-;-按键0-FINISH: MOV DX,PCTL MOV AL,80H OUT DX,AL MOV DX,PB MOV AL,0FFH OUT DX,AL MOV DX,PC MOV AL,0FFH OUT DX,AL RET;-;-键扫子程序-GetKey: ; mov al,0ffh ;关显示口 mov dx,OUTSEG out dx,al mov bl,0 mov ah,0feh mov cx,8key1: mov

20、al,ah mov dx,OUTBIT out dx,al shl al,1 mov ah,al nop nop nop nop nop nop mov dx,IN_KEY in al,dx not al nop nop and al,0fh jnz key2 inc bl loop key1nkey: mov al,20h retkey2: test al,1 je key3 mov al,0 jmp key6key3: test al,2 je key4 mov al,8 jmp key6key4: test al,4 je key5 mov al,10h jmp key6key5: test al,8 je nkey mov al,18hkey6: add al,bl cmp al,10h jnc fkey mov bx,offset KeyTable xlatfkey: retKeyTable: ;键码定义 db 07h,04h,08h,05h,09h,06h,0ah,0bh db 01h,00h,02h,0fh,03h,0eh,0ch,0dh;-CODE ENDSEND

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1