版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 输入/输出系统 8.1 输入/输出系统概述 一. 概 述 1. 接口电路的作用 CPU数据 输出接口电路 输出设备 CPU 输入接口电路 输入设备数据接口: 是CPU与外部设备交换信息的中转站 I/O设备与总线之间的连接输出接口电路输出设备输入接口电路输入设备系统总线I/O接口电路2. 接口电路的功能 应具有数据暂存功能 应有端口地址译码器 (便于使用IN, OUT指令读写数据) 与外设之间有联络功能 有中断管理能力 有数据转换功能(并 串,串 并)3. 关于端口的概念 “端口”是接口电路中, 能与CPU交换信息(使用IN, OUT) 的寄存器。 端口分类:数据口: 存放CPU向外设输
2、出或外设输入的数据。控制口: 存放控制信息-控制接口电路、外设的 工作。状态口: 存放状态信息 反映外设的状态。 注意:接口电路必须具有数据口。注:每个端口,系统都为它编了一个地址,系统只要给出某个地址,通过译码电路,就能找到相应的I/O接口电路中的端口寄存器。问 题:系统给出的地址是内存单元地址还是I/O端口寄存器的地址?解决方案:合理安排I/O端口寄存器的编址方式。 4. 端口的编址方式 存储器映像方式 把端口和存储单元等同看待, 统一编址。 特点: 凡访问存储单元的指令都可访问 I/O端口,端口地址占用存储空间。 I/O端口独立编址 特点: I/O 端口不占用存储空间, CPU要有专用的
3、 I/O 指令。5. PC系列机的端口编址 PC系列机采用端口独立编址;从8088 奔腾微处理器, 设计时用A15 A0 低16位地址寻址 I/O 端口; 所以, CPU的端口寻址能力为216=65536个;基于微处理器的PC系列, 实际使用A9 A0 做I/O地址; 所以, PC系列机 I/O 端口地址最多为 210=1024个。这1024个口地址, 系统本身(主板上, 以及常 规 I/O接口)已经占用了一部分。 端口地址( I/O 空间)没有分段的概念。 二. 最常用的 I/O 指令1.直接寻址 I/O 指令设n为8位端口地址IN AL , n ; 口地址为n的端口中取数 AL OUT n
4、 , AL ; AL内容 口地址为n的端口寄存器IN AX , n ; (n) AL, (n+1) AH OUT n , AX ; AL n口, AH n+1口如: IN AL , 61H OUT 61H, AL2. DX间址的I/O指令 当口地址 n 8位二进制数时, 用DX间址 注意: I/O 指令只能在端口和AL, AX, EAX之间 交换信息, 用DX间址, 但不能使用方括号, 即不能写成: IN AL, DX。IN AL , DX ; DX的端口内容 ALOUT DX , AL ; AL DX的端口寄存器IN AX , DX ; DX AL, DX+1 AHOUT DX , AX ;
5、 AL DX, AH DX+1 的端口寄存器 如: MOV DX, 3F8H IN AL , DX ;从3F8H端口取数 AL8.2 微机系统与外设交换信息的方式微机系统与 I/O 端口的信息交换有四种方式: 无条件传送 查询方式 中断方式 DMA方式采用何种方式与接口的硬件电路有直接关系1.无条件传送 输入接口:八个三态门地址译码器IOR数据线外设8入出控控=0,出=入控=1,出为高阻入出控入出控控=1,出=入控=0,出为高阻执行IN指令之前, 外设数据已经准备好。 输出接口锁存器地址译码器IOW数据线外设8 QCP D.D7D0执行OUT指令时: AL内容 数据线, 口地址 地址线上, I
6、OW=低, 把数据锁存到 锁存器中。 2.查询方式 用查询方式交换信息, 必先了解外设的状态。 查询方式输入流程从状态口读取 状态信息数据准备好?执行IN指令,取出数据YN从状态口读取 状态信息外设空闲否?执行OUT指令,输出一个数据YN 查询方式输出流程查询方式输入接口示意图地址译码器地址总线IOR锁存器(8)三态缓冲 器 (8)CPU数据线数据 输 入 设 备输入选通信号 RD Q +5V状态标志寄存器IOR地址译码器数据口选中接数据线D7位 查询式输入核心程序 设状态口地址=200H 数据口地址=201H RSCAN : MOV DX , 200H IN AL , DX TEST AL
7、, 80H JZ RSCAN MOV DX , 201H IN AL , DX 查询式输出接口示意图“0”为空闲锁存器(8)数据IOW地址译码器地址总线IOR数据总线数据口选中ACK 输 出 设 备Q D +5V状态标志状态口选中接数据线D0位 R 查询式数据输出核心程序 设状态口地址=200H=数据口地址 TSCAN: MOV DX, 200H IN AL, DX TEST AL, 1 JNZ TSCAN MOV DX, 200H MOV AL, 某数 OUT DX, AL3. 中断控制方式 在有多个外设的系统中,多个外设要求CPU为它服务是随机的 若采用查询方式工作,就不能保证系统实时地对
8、外设的请求作出响应 为了提高CPU的效率,使系统有实时性能,导致了中断处理技术的产生特点: 在外设没有作好数据传送准备时,CPU可执行与传送数据无关的其它指令 当外设作好传送准备后,主动向CPU请求中断 若CPU响应这一请求,则暂停正在运行的程序,转入中断服务程序,完成数据传送 待服务完毕后,自动返回原来运行的程序4.直接存储器存取(DMA)方式为什么要有DMA?什么是DMA?特点: 用硬件实现在外设与内存间直接进行数据交换,而不通过CPU 数据传送速度的上限就取决于存储器的工作速度 速度快8.3 8254定时器/计数器计算机中的定时和延时控制、对外部事件或信号的计数 软件方法 固定时间的硬件
9、定时 可编程的硬件定时计算机系统中采用可编程定时/计数器I8253和I8254 8254内部集成了3个16位的计数器, 每个计数器有6种工作方式,计数初值可设定为二进制或BCD码。最高工作频率10兆。一.8254内部结构 (24脚)数据总线 缓冲器读写控制控制字寄存器 0号计数器 1号计数器 2号计数器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2数据总线 缓冲器读写控制控制字寄存器 0号计数器 1号计数器 2号计数器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2数据总线缓冲器:
10、 完成和系统数据线的配接。 对外有8条数据线D70 8254的内部结构数据总线 缓冲器读写控制控制字寄存器 0号计数器 1号计数器 2号计数器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2读写控制模块: 选择芯片内部的控制寄存器和计数器, 在读写命令的控制下对选中的端口进行读写操作。对外有5条引线。 8254的内部结构 8254的内部结构数据总线 缓冲器读写控制控制字寄存器 0号计数器 1号计数器 2号计数器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2控制寄存器: 寄存CPU对
11、其初始化编程时写入的控制字,以决定计数器的工作方式和并设置读出命令。 8254的内部结构数据总线 缓冲器读写控制控制字寄存器 0号计数器 1号计数器 2号计数器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2计数器: 每个计数器对外有3条线 GATE 控制信号 CLK 计数脉冲输入 OUT 计数器输出 8254的内部结构口地址译码器A9A2AEND7D0IORIOWA1A0D7D0RDWRA1A0CS8254二. 8254与系统总线的连接I/O口地址分2段A9A2参加译码,译码 输出负脉冲。使CS=0, 选中8254A1,A0直接与芯片A
12、1,A0 相连,选择片内寄存器执行IN时从选中的内部 寄存器读执行OUT时向选中的内 部寄存器写三.8254内部寄存器/计数器口地址 在CS=0前提下 A1 A0 选中0 0 0#计数器0 1 1#计数器 0 2#计数器1 1 控制寄存器设8254与系统总线如上图联接: 口地址=40H43H,“选中”8254,则0#2#计 数器口地址=40H42H,控制口地址=43H。口地址=2FCH2FFH,“选中”8254,则 0#2#计数器口地址=2FCH2FEH,控制口 地址=2FFH。四.计数器内部结构示意图 内部数据线计数初值寄存器(16位)减1计数器(16位)计数值锁存器(16位)锁存命令GAT
13、ECLKOUT内部数据线初始化编程时: 计数初值 计数初值寄存器 减1计数器内部数据线计数初值寄存器(16位)减1计数器(16位)计数值锁存器(16位)锁存命令GATECLKOUT内部数据线 计数器的内部结构当GATA=1时, CLK的下降沿使计数器减1,当计数值减到0 (或某个值由工作方式确定)时, OUT有输出。内部数据线计数初值寄存器(16位)减1计数器(16位)计数值锁存器(16位)锁存命令GATECLKOUT内部数据线 计数器的内部结构 计数初值 = f c l k / f o u t收到锁存命令后, 当前计数值 计数值锁存器(以便读出检查), 而计数器仍然做减1计数内部数据线计数初
14、值寄存器(16位)减1计数器(16位)计数值锁存器(16位)锁存命令GATECLKOUT内部数据线 计数器的内部结构作用: 选择一个计数器, 确定工作方式, 并规定初 值的写入顺序和计数初值 (一串0, 1代码) 的数制。 五. 8254命令字 / 状态字 D7 D6 D5 D4 D3 D2 D1 D0 计数器选择 读写方式选择 工作方式选择 数制选择 D7 D6=00 选择0#计数器, =01 选择1#计数器 =10 选择2#计数器, =11 标志该命令字 是 “读出命令” 1.方式选择命令字 D5 D4=00 标志该命令为 “锁存命令” =01 初值写入时, 只写低8位, 高8位自动 补0
15、;计数值读出时, 只能读低8位 =10 初值写入时, 只写高8位, 低8位自动 补0;计数值读出时, 只能读高8位。 =11 初值写入 / 计数值读出的顺序为先 低8位,后高8位。D7 D6 D5 D4 D3 D2 D1 D0 计数器选择 读写方式选择 工作方式选择 数制选择 8254的命令字和状态字 D3 D2 D1 选中的计数器工作在 0 0 0 方式 00 0 1 1 1 0 2 1 1 31 0 0 41 0 1 5 D0=0, 计数初值为二进制数, D0=1, 初值为BCD码数。D7 D6 D5 D4 D3 D2 D1 D0 计数器选择 读写方式选择 工作方式选择 数制选择 8254
16、的命令字和状态字 2. 锁存命令( D5 D4=00 标志该命令为 “锁存命令”)D7 D6 为锁存对象。 = 0 0,锁存0#当前计数值 = 0 1,锁存1#当前计数值 = 1 0,锁存2#当前计数值计数器选择 0 0 D7 D6 D5 D4 D3 D0D7 D611D5 D4 = 00 8254的命令字和状态字 3.读出命令读出命令是多通道的锁存命令, 一条命令可以锁存3个计数器的计数值、计数器状态。 1 1 0D7 D6 D00: 锁存当前计数值0: 锁存计数器状态1: 选择0#计数器D7D6D0=110是读命令1: 选择1#计数器1: 选择2#计数器 8254的命令字和状态字 4. 状
17、态字 与方式选择命令字相同D7 D6 D5 D00: 计数初值已装入计数器1: 计数初值未装入计数器0: OUT脚为低电平1: OUT脚为高电平 8254的命令字和状态字 CPU对8254的初始化编程 例: 设8254的口地址为40H 43H, 要求2#计数器工作在方式3, 计数初值=4000, 写出2#的初始化程序段。1. 对8254一个计数器的初始化编程步骤: 向控制寄存器写入方式选择命令字 目的: 选择一个计数器, 并确定其工作方式 和计数值(计数初值)的读 / 写顺序。 向选择的计数器写入计数初值。 注意: 如果方式选择命令字D0=0, 则初值 应是二进制, 否则初值应是BCD码数。解
18、1: 设初值为二进制, 初值写入顺序为先低8位后高8位。 MOV AL, 10110110B OUT 43H, AL MOV AX, 4000 OUT 42H, AL MOV AL, AH OUT 42H, AL解2: 设初值为二进制, 写入顺序为仅写高8位。 MOV AL, 10100110B OUT 43H, AL MOV AL, 40 OUT 42H, AL注意: 解2是错误的, 因为:4000=0FA0H, 其低8位不等于0。 8254的初始化编程 解3: 设初值为BCD码, 写入顺序为先低后高。 MOV AL, 10110111B OUT 43H, AL MOV AL, 0 OUT
19、42H, AL MOV AL, 40H OUT 42H, AL解4: 设初值为BCD码, 仅写高8位。 MOV AL, 10100111B OUT 43H, AL MOV AL, 40H OUT 42H, AL 注意: 4000的BCD码数应写成4000H, 解3、解4是正确的。 8254的初始化编程 2. 当计数初值 9999时, “初值”选为二进制或 BCD码都可以; 当计数初值 9999时, “初值”只能选二进制。3. 程序中如何表示BCD码数? 设初值=(1234)10 则 MOV AX, 1234H 是正确的 写成 MOV AX, 1234 是错误的4. 方式选择命令, 锁存命令,
20、读出命令必须写入 控制口。 8254的初始化编程 6. 关于读出命令 读出命令也是锁存命令, 如果在锁存计数值 的同时, 也锁存状态, 那么在随后对计数器读 出时, 先读出的是状态字, 后读的是计数值。5. 关于锁存命令 当程序员要了解计数器的当前计数值时, 先 向控制口写入锁存命令, 然后从选择的计数 器端口读取当前计数值。 8254的初始化编程 六. 8254工作方式 有6种工作方式, 均在CLK下降沿计数一次。有2种启动方式: 软件启动, 硬件启动。 软件启动: GATA=1, 初值写入后, 开始计数。 硬件启动: 初值写入后, 不计数。当GATE从 0 1后开始计数。 方式0: 计数结
21、束OUT引脚输出正跃变信号软件启动, 计数值减到0, OUT从0 1。WR结束后,第一个CLK完成初值装入 3 2 1 0 1CLKWRN=3GATE=1OUT 8254的工作方式 方式1: (可重触发的) 硬件启动的单脉冲发生器GATE由0 1, 下一个CLK下降沿, 使OUT由1 0, 且装入计数值GATE再次从0 1之后, 下一个CLK完成初值自动重装 3 2 3 2 1 0 3 2 1 0 N TCLKCLKWRN=3GATE=1OUTGATEOUTTOUT 8254的工作方式 硬件启动(由外部门控信号启动计数)初值写入后不计数, 当GATE从0 1时, OUT 从1 0。之后每个CL
22、K下降沿计数值减1, 计 数值减到0时, OUT从0 1。 所以: 输出负脉冲的宽度=NTCLK计数过程中, GATE再次从0 1, 初值自动重 装,从而使OUT输出的负脉冲加宽 ( 即有可重 触发的性能)。 8254的工作方式 方式2: 分频器(脉冲发生器)软件启动减1计数, 减到1时OUT从1 0,下一CLK初值 自动重装。所以: OUT为周期性波形, 输出负脉 冲的宽度为一个TCLK, 周期=N TCLK 3 2 1 3 2 1CLKWRN=3GATE=1OUT 周期=N TCLK 8254的工作方式 方式3: 方波发生器CLKWRN=4GATE=1OUT 4 2 4 2 4 2软件启动
23、, 减2计数, 有初值自动重装功能。 N=偶数时, 计数值减到0时初值重装, 输出1:1连续波形。 8254的工作方式 GATE=1WRN=5CLK 4 2 0 4 2 4 2 0OUT N=奇数时: 装入的及重新装入的初值均为写入的初值-1。 输出正脉冲期间, 减到-2时重新装初值 输出负脉冲期间, 减到0时重新装初值 输出正脉冲宽度=TCLK (N+1) / 2 输出负脉冲宽度=TCLK (N1) / 2 8254的工作方式 方式4: 软件启动, 单脉冲发生器软件启动, 减1计数,减到0 有输出, 无初值自动重装功能。 3 2 1 0 -1CLKN=3WRGATE=1OUT 8254的工作
24、方式 方式5: 硬件启动, 单脉冲发生器 硬件启动, 减1计数, 减到0有输出。CLKN=3WR 3 2 1 0 -1OUTGATEGATE从0 1, 下一个CLK下降沿装入计数初值开始计数 8254的工作方式 6种工作方式的比较:方式1方式4方式5功能都是单脉冲发生器启动方式硬件启动软件启动硬件启动输出负脉宽=N TCLK负脉宽=TCLK初值重装在计数过程中(OUT=0期间) GATE从01时初值重装 计数过程中(OUT=1期间) GATE从0 1时初值重装 8254的工作方式 方式0方式2方式3功能计数结束, 输出正跃变脉冲发生器方波发生器启动方式都是软件启动输出启动后延时(N+1)TCL
25、K输出正跃变负脉宽=TCLK周期=N CLK N=偶数,输出1:1方波初值重装计数结束, 初值自动重装 8254的工作方式 七. 8254在PC机中的应用1. 电路:主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V8254 PB0 PB18255 B口IR0 Q D动态存储器刷新电路清“0”+5V与门滤波口地址61H 3个计数器的时钟端都为1.193182 MHZ GATE0, GATE1固定接+5v GATE2, OUT2输出受8255的PB0、PB1控制2. 系统8254口地址为40H 43H。 3.
26、系统加电后,由BIOS完成对3个计数器初始化。 4. 各计数器的使用现状如下: 8254的应用 工作在方式3, 计数初值=0,OUT0=周期为 55ms的方波信号。 作用: 每隔55ms通过中断系统提出 一次日时钟中断请求。主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V PB0 PB18255 B口IR0 Q D动态存储器刷新电路清“0”+5V与门滤波口地址61H8254 0#计数器 8254的应用 主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=
27、1.193182 MHZ+5V PB0 PB18255 B口IR0 Q D动态存储器刷新电路清“0”+5V与门滤波口地址61H8254 工作在方式2, 计数初值=18, OUT1=周期为15.1s的连续脉冲。 作用: 每隔15.1s(向DMAC)提出一次“动态存储器刷新请求”。1#计数器 8254的应用 主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V PB0 PB18255 B口IR0 Q D动态存储器刷新电路清“0”+5V与门滤波口地址61H8254 工作在方式3, 初值=533H,为音响 系统提供90
28、0HZ方波。2#计数器 8254的应用 主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V8254 PB0 PB18255 B口IR0 Q D动态存储器刷新电路清“0”+5V与门滤波口地址61H 用户程序禁止使用1#计数器。 用户程序可以使用0#, 2#计数器。注意: 8254的应用 八. 系统8254 应用举例: 编写音乐程序, 演唱 “友谊地久天长”。歌谱: 友谊地久天长 1=F 2/4 苏格兰民歌 5 1 . 1 1 3 2 . 1 2 3 1 . 1 3 5 6 . 6 6 5 . 3 1. 怎 能
29、忘记 旧 日 朋友,心 中 能 不 怀 想, 旧 日 朋2. 我 们 曾经 终 日 游荡,在故乡的 青 山 上, 我 们 也3. 我 们 也曾 经 日 逍遥,荡 漾 在 绿 波 上, 但 如 今4. 我 们 往日 情 意 相投,让 我 们 紧 握 手, 让 我 们. 8254的应用 3 1 2 . 1 2 3 1 . 6 6 5 1 . 6 5 . 3 3 1 2 . 1 2 6友 岂 能 相忘, 友谊 地 久 天 长;曾 历 尽 苦辛, 到处 奔 波 流 浪;却 劳 燕 分飞, 远隔 大 海 重 洋;来 举 杯 畅饮, 友谊 地 久 天 长;5 . 3 3 5 6 . 1 5 . 3 3 1
30、 2 . 1 2 3 1 . 6 6 5 1 . :谊 万 岁! 举 杯 痛饮, 同声 歌颂 友谊 地 久 天 长。友 谊 万 岁, 友. . . . . 8254的应用 设计思路: 1.开 / 关扬声器的子程序OPEN PROC IN AL, 61H OR AL, 03H OUT 61H, AL RET OPEN ENDPCLOSE PROC IN AL, 61H AND AL, 0FCH OUT 61H, AL RETCLOSE ENDP 8254的应用 2. 使2#计数器产生单音频的程序段 2#应工作在方式3, 计数初值=1.193182兆 / 频 率值,而(1.193182 106)1
31、0=1234DEH。 所以: 在2#写入方式选择命令字之后, 执行下 列程序段即可。 方式选择命令字 控制口(BIOS已经做了)。 MOV DX, 12H MOV AX, 34DEH MOV CX, 频率值 DIV CX ;初值AX OUT 42H, AL MOV AL, AH OUT 42H, AL 8254的应用 3.音符频率表 一首歌曲由若干音符组成, 每一音符对应一个 频率。下表 给出了各种音符的频率对照表。音符频率表 (单位: HZ)音频 音符 1 2 3 4 5 6 7 A 221 248 278 294 330 371 416B 248 278 312 330 371 416 4
32、67C 131 147 165 175 196 221 248D 147 165 185 196 221 248 278E 165 185 208 221 248 278 312F 175 196 221 234 262 294 330G 196 221 248 262 294 330 371. . . . . . . 8254的应用 音符频率表 (单位: HZ)音频 音符 1 2 3 4 5 6 7A 441 495 556 589 661 742 833B 495 556 624 661 742 833 935C 262 294 330 350 393 441 495D 294 330 3
33、71 393 441 495 556E 330 371 416 441 495 556 624F 350 393 441 467 525 589 661G 393 441 495 525 589 661 742 8254的应用 音符频率表 (单位: HZ)音频 音符 1 2 3 4 5 6 7A 882 990 1112 1178 1322 1484 1665B 990 1112 1248 1322 1484 1665 1869C 525 589 661 700 786 882 990D 589 661 742 786 882 990 1112E 661 742 833 882 990 111
34、2 1248F 700 786 882 935 1049 1178 1322G 786 882 990 1049 1178 1322 1484. . . . . . . 8254的应用 4. 音符的演唱时间 这是编程的关键,有两种处理方法: 直接给出每一音符演唱的绝对时间 这种方法, 程序调试很困难, 特别是对于缺少 音乐细胞的人, 对于不太熟悉的歌曲, 很难把 握演唱的节奏。 给出每一音符演唱的 “单位时间” 单位时间 N=演唱时间 N为调试参数,预先给一个值,试听后再 修改。这种方法, 大大加快了调试时间。 8254的应用 5.怎样确定 “单位时间” 3/4拍 1/4拍 一拍.1=F2/4
35、5 1 . 1 1 3 因为: 一首歌曲中,每个音符的演唱时间有一拍、半拍、1/4拍如果最短的音符为1/8拍, 则定义: 一拍音符的单位时间为8 半拍音符的单位时间为4 1/4拍音符的单位时间为2 1/8拍音符的单位时间为1 如: 8254的应用 根据选定的歌曲,将各音符对应的频率值列成一张频率表,将各音符演唱的单位时间列成一张时间表。频率表的表项和时间表的表项要一一对应,不能错位。 8254的应用 6. 音乐程序框图 取频率值转换成计数初值 2#计数器取单位时间 转换成演唱时间 延时调整频率表、时间表指针 接通扬声器有键入?关闭扬声器,返回DOSYN数据段, 设置频率表, 时间表 8254的
36、应用 . 486DATA SEGMENT USE16 TABF DW -1, 262, 350, 352, 350, 441, 393, 350, 393, 441 DW 350, 352, 441, 525, 589, 588, 589, 525, 441 DW 440, 350, 393, 350, 393, 441, 350, 293, 294, 262 DW 350, 589, 525, 441, 440, 350, 393, 350, 393, 589 DW 525, 441, 440, 525, 589, 700, 525, 441, 440, 350 DW 393, 350, 3
37、93, 441, 350, 294, 292, 262, 350, 0 TABT DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 1, 3, 6, 2 DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 6, 2, 4, 4, 12 N EQU 150000 ;微秒 DATA ENDS 7. 程 序 8254的应用 CODE SEGMENT USE16 ASSUME C
38、S:CODE, DS:DATA BEG: MOV AX, DATA MOV DS, AX OPEN: IN AL, 61H OR AL, 00000011B OUT 61H, AL ;接通扬声器 AGA: MOV SI, OFFSET TABF ;SI是频率表指针 MOV DI, OFFSET TABT ;DI是时间表指针 LAST: CMP WORD PTR SI, 0 ;唱完一遍? JE AGA ;是,转 MOV DX, 12H MOV AX, 34DEH DIV WORD PTR SI ;频率转换成计数初值 OUT 42H, AL ;低8位送2号计数器 MOV AL, AH OUT 42H, AL ;高8位送2号计数器 8254的应用 CALL DELAY ;延时 ADD SI, 2 ;频率表指针加2 INC DI ;时间表指针加1 MOV AH, 1 INT 16H ;有键入? JZ LAST ; 否 CLOSE: IN AL, 61H AND AL, 11111100B OUT 61H, AL ;关闭扬声器 MOV AH, 4CH INT 21H 8254的应用 DELAY PROC ;延时子程序 MOV EAX, 0 MOV AL, DI IMUL EAX, EA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年南方医科大学珠江医院肝胆二科招聘科研助手备考题库及一套答案详解
- 纺粘熔喷热轧非织造布制作工冲突解决测试考核试卷含答案
- 2025年吉林大学马克思主义学院公开招聘教师10人备考题库及一套参考答案详解
- “百万英才汇南粤”2026年佛山市高明区公开招聘中学教师(第二场)备考题库及完整答案详解1套
- 2025年陕西省人民医院工程相关专业临聘技术人员招聘备考题库有答案详解
- 重庆市忠县卫生事业单位2025年面向应届高校毕业生考核招聘工作人员备考题库及一套完整答案详解
- 2025年上饶市消防协会招聘备考题库及完整答案详解1套
- 元江县教育体育系统2026年公开招聘高中学校教师校园招聘备考题库(含答案详解)
- 2025年国家空间科学中心空间环境探测重点实验室空间环境探测载荷工程技术人员招聘备考题库完整答案详解
- 2025年中国信安(电子六所)中层管理岗人才招聘备考题库完整参考答案详解
- 2024年吉林省高职高专单独招生考试数学试卷真题(精校打印)
- 第16项-爆破作业安全指导手册
- 小儿癫痫发作护理查房
- 中学食堂饭卡管理制度
- 春妆 春天清新妆容技巧与春风共舞
- 道路高程测量成果记录表-自动计算
- JG/T 160-2004混凝土用膨胀型、扩孔型建筑锚栓
- 2025年度财务决算和2025年度财务预算报告
- 购房者临时居住协议
- 中考物理试题卷及答案
- 白银湘宇麓山环保科技有限公司30万吨-年含锌废料处置利用项目报告书
评论
0/150
提交评论