第7章:常用io芯片(编辑修改稿)内容摘要:
位 DB ‘:’ TENS DB ‘5’ ;存放秒的十位 SECOND DB ‘0’ ;存放秒的个位 DB 0DH,‘ $’ ;从 23: 59: 50开始计时 DATA ENDS CODE SEGMENT START PROC FAR ASSUME CS: CODE, DS: DATA MOV AX, DATA MOV DS, AX MOV AH, 0 INT 16H ; 等待 键按下,并读入到 AX中(注意 “等待” 二字。 ) MOV AL, 08H MOV AH, 35H INT 21H MOV SEG8, ES MOV OFF8, BX ;取 8H中断向量并保存 CLI IN AL, 21H OR AL, 01H OUT 21H, AL ; P134中的内容,屏蔽端口地址为 21H中的定时器中断 PUSH DS MOV AX, SEG TIMER MOV DS, AX MOV DX, OFFSET TIMER MOV AL, 08H MOV AH, 25H INT 21H POP DS ;更改 8H中断中的中断向量 MOV AL, 36H OUT 43H, AL ;初始化 8253:计数器 0,工作方式 3, 43H为计数器控制口 MOV AX, 11932 OUT 40H, AL MOV AL, AH OUT 40H, AL ;给计数器 0送计数值 11932,使之 10MS中断一次 IN AL, 21H ;读入 8259中的 IMR MOV IMR, AL ;保存 IRQ0屏蔽时的 IMR AND AL, 0FCH OUT 21H, AL ;开放时钟和键盘中断 STI FOREVER: MOV AH, 1 INT 16H ;检测键盘而不等待 CMP AL, 20H JZ EXIT ;有空格键按下就退出 MOV DX, OFFSET TENH MOV AH, 09H INT 21H ;显示时、分、秒字符串 MOV AL, SECOND ;取秒值 WAITCHA: CMP AL, SECOND ;秒值变否。 JZ WAITCHA ;秒值不变等待 JMP FOREVER EXIT: CLI MOV AL, IMR ;还原中断向量表之前,关中断 OUT 21H, AL ;此时 IMR中的 IRQ0是屏蔽的 MOV AL, 36H OUT 43H, AL ;重新初始化 8253,计数器 0,工作方式 3 MOV AL, 0 OUT 40H, AL OUT 40H, AL ;重置 8253,使之 55MS中断一次 PUSH DS MOV AX, SEG8 MOV DS, AX MOV DX, OFF8 MOV AL, 08H MOV AH, 25H INT 21H POP DS ;恢复原中断向量 IN AL, 21H AND AL, FEH OUT 21H, AL ;重新开放 IRQ0 STI MOV AH, 4CH INT 21H ;返回 DOS系统,它等效于: .exit 0 ; TIMER PROC FAR PUSHAD ;保存通用寄存器, 386指令 DEC COUNT JNZ L2 ;没有到 1秒的时间不加 1 MOV COUNT, 100 ;恢复计数值为 100 INC SECOND CMP SECOND,‘ 9’ JLE TIMEXT MOV SECOND,‘ 0’ INC TENS CMP TENS,‘ 6’ JL TIMEXT MOV TENS,‘ 0’ ;秒加 1,并考虑到它为 60进制 INC MINUTE CMP MINUTE,‘ 9’ JLE TIMEXT MOV MINUTE,‘ 0’ INC TENM CMP TENM CMP TENM,‘ 6’ JL TIMEXT MOV TENM,‘ 0’ ;分加 1,并考虑到它为 60进制 JMP L3 L2: JMP TIMEXT 中断服务程序: L3: MOV AL, HOUR MOV AH, TENH CMP AH, 32H ; CMP AH,‘ 2’ JE LA CMP AL, 39H JE LB LC: INC AL MOV HOUR, AL JMP TIMEXT LA: CMP AL, 33H ; CMP AL,‘ 3’ JNE LC MOV AH, 30H MOV AL, 30H MOV HOUR, AL MOV TENH, AH JMP TIMEXT LB: INC AH MOV AL, 30H MOV TENH, AH JMP TIMEXT ;以上程序段为小时数加 1,并考虑到它是 24进制的情况 TIMEXT: MOV AL, 20H MOV 20H, AL ;中断结束,送 EOI命令 POPAD IRET TIMER ENDP START ENDP CODE ENDS END START (AH) ← 时的十位数(AL) ← 时的十位数(AH)=2?(AL)=3?(AH) ← 0(AL) ← 0(AL) 按十进制加法计数(AL)=9?(AL) ← 0(AH) ← (AH)+1(AL) ← (AL)+1执行指令JMP TIMEXTNOYESYESNONOYES有关小时的 24进制加法计数程序流程图如下: 8255A可编程并行接口 、 8255特点 并行接口电路: A口、 B口、 C口 三口有多种工作方式: A口三种 B口两种 C口一种 并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。 由于电气特性的限制,传输距离不能太长。 8255A是通用的可编程并行接口芯片,功能强,使用灵活。 适合一些并行输入 /输出设备的使用。 8255A可编程并行接口 、 8255特点 并行接口电路: A口、 B口、 C口 三口有多种工作方式: A口三种 B口两种 C口一种 并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。 由于电气特性的限制,传输距离不能太长。 8255A是通用的可编程并行接口芯片,功能强,使用灵活。 适合一些并行输入 /输出设备的使用。 、 8255引脚功能 8255A是 40根引脚,双列直插式芯片。 40根引脚的分布图如图 610所示,这些引脚可分成: 分类: 两组。 面向 CPU的信号 面向外设 的信号 、 8255引脚功能 A口B口C口PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7D0D1D2D3D4D5D6D7A0A1CSRDWRR E S E TVccGND3 4 43 3 33 2 23 1 13 0 4 02 9 3 92 8 3 82 7 3 7 1 8 8 2 5 5 A 1 99 2 08 2 16 2 25 2 33 6 2 43 5 2 5 1 4 1 5 1 6 1 7 1 32 6 1 27 1 1 1 0、 8255引脚功能 面向 CPU的信号 D0D7: 8位,双向,三态数据线,用来与系统数据总线相连; RESET:复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置 A口, B口, C口均为输入方式; CS:片选,输入,用来决定芯片是否被选中; RD:读信号,输入,控制 8255A将数据或状态信息送给 CPU; WR:写信号,输入,控制 CPU将数据或控制信息送到 8255A; A1, AO:内部口地址的选择,输入。 、 8255引脚功能 面向 IO的信号 PA0~PA7: A组数据信号,用来连接外设; PB0~PB7: B组数据信号,用来连接外设; PC0~PC7: C组数据信号,用来连接外设或者作为控制信号。 控制寄存器状态寄存器输入缓冲寄存器输出缓冲寄存器CSA0A1并行接口地址译码M/IO地址总线数据总线准备好输出准备好输入中断请求复位RDWRCPU输入设备输入数据输入数据准备好输入回答输出设备输出数据输出数据准备好输出回答、 8255并行接口与 CPU、外设之间的连接示意图 o I/0 I/0 I/0 I/0 PC3PC0 WR RD A0 A1 CS RESET D7D0 PC7PC4 PA7PA0 PB7PB0 、 8255A接口逻辑框图 数据总线 缓冲器 读 /写 控制 逻辑 A组 控制 8位内部 数据总线 B组 控制 端口 A ( 8位) 端口 C (高 4位) 端口 C (低 4位) 端口 B ( 8位) 、 8255A接口组成 三个数据端口 A、 B、 C 口 A独立的 8位 I/O端口,有输入 /输出锁存器。 口 B独立的 8位 I/O端口,有输出锁存器。 口 C独立的 8位 I/O端口 /或 2个 4位 I/O端口,有输出锁存器。 在实现高级的传输协议时,口 C的 8条线分为两组,每组 4条线,分别作为口 A与口 B在传输时的控制信号线。 口 C的 8条线可独立进行置 1/置 0的操作。 口 A、口 B、口 C及控制寄存器口共占 4个设备号。 、 8255A接口组成 2. A组和 B组的控制电路 据 CPU命令控制 8255A工作方式,其控制命令被写入内部控制寄存器。 可以根据 CPU送来的编程命令来控制 8255A的工作方式,也可以根据编程命令来对 C口的指定位进行置 /复位的操作。 A组控制电路用来控制 A口及 C口的高 4位; B组控制电路用来控制 B口及 C口的低 4位。 、 8255A接口组成 3.数据总线缓冲器 8位的双向的三态缓冲器。 作为 8255A与系统总线连接的界面,输入 /输出的数据, CPU的编程命令以及外设通过 8255A传送的工作状态等信息,都是通过它来传输的。 4.读 /写控制逻辑 读 /写控制逻辑电路负责管理 8255A的数据传输过程。 它接收片选信号 CS及系统读信号 RD、写信号 WR、复位信号 RESET,还有来自系统地址总线的口地址选择信号 A0和 A1。 8255A BASIC OPERATION CS RD WR A1 A0 执行的操作 0 0 1 0 0 读 A端口 0 1 0 0 0 写 A端口 0 0 1 0 1 读 B端口 0 1 0 0 1。第7章:常用io芯片(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。