微机原理与接口技术实验讲稿ppt内容摘要:

工作原理后,编写出 8253的 初始化程序。 3.编写出 8253分频程序,观察实验显现。  实验原理 ▼ 8253的引脚 8253有 3个独立的 16位减计器通道 , 每一个通道有三条引线: CLK、 GATE和 OUT。 ① CLK: 输入时钟 , 8253规定 , 加在 CLK引脚的输入时钟周期 不能小于 380ns。 ② GATE:门控信号输入引脚。 这是控制计数器工作的一个外部 信号。 当 GATE引脚为低时 , 通常都是禁止计数器工作的;只有 GATE 为高时 , 才允许计数器工作。 ③ OUT:输出引脚。 当计数到 “ 0”时 , OUT 引脚上必然有输出 , 输出信号波形取决于工作方式。 8253内部端口的选择及每个通道的读 /写操 作的选择如下表所示 RD WR A 1 A 0 寄存器选择和操作1 0 0 0 写入计数器 01 0 0 1 写入计数器 11 0 1 0 写入计数器 21 0 1 1 写入控制寄存器0 1 0 0 读计数器 00 1 0 1 读计数器 10 1 1 0 读计数器 20 1 1 1 无操作( 3 态) ▼ 8253的端口控制子 D7 D6 D5 D4 D3 D2 D1 D000 选择计数器 001 选择计数器 110 选择计数器 211 非法选择00 计数器锁存命令01 只读 / 写最高有效字节 (高 8 位)10 只读 / 写最低有效字节 (低 8 位)11 先写最低有效字节 再写最高有效字节000 方式 0001 方式 1x10 方式 2x11 方式 3100 方式 4101 方式 50 二进制1 BCD▼ 8253的工作方式和输出波形 方式功能 输出波形0 计完最后一 个数中断 写入计数值 N 后,经过 N+1 个 CLK 脉冲输出变高1 硬件再触发单拍脉冲 单拍脉冲的宽度为 N 个 CLK 脉冲2 速率发生器 每 N 个 CLK 脉冲,输出一个宽度为 CLK 周期的脉冲3 方波速率发生器 写入 N 后,输出1/2N 个 CLK 高电平 ,1/2N 个 CLK 低电平 (N 为偶数 )(N+1)/2 个 CLK 高电平 ,(N1)/2N 个 CLK 低电平 (N 为奇数 ){4 软件触发选通 写入 N 后,过 N+1 个 CLK ,输出一个宽度为 1 个 CLK 的脉冲5 硬件触发选通 门控触发后,过 N+1 个 CLK ,输出一个宽度为 1 个 CLK 的脉冲▼ 实验电路组成原理框图 OUT0GATE0CLK0OUT1GATE1CLK1OUT2GATE2CLK2CSRDWRA0A1111091314151617182M HZf x2122232019DSDCDCLKV ccD0....D71Y5RDWRA0A1V ccPC3AO2FX自激振荡( 自 D/A 输出 )(外部输入 TTL )(实验主板振荡电路)指示灯电路D0D7V ccV ccV cc▼ 本实验共用到六个端口地址: 23H( 1Y1) : 输出口 , 8255的控制端口 22H( 1Y1) : 输出端口 ( PC3) , 发出计数器 0的闸门信 号 ( 0为关 , 1为开 ) A0H( 1Y5) : 输入 /输出端口 , 8253计数器 0 的读写口 A1H( 1Y5) : 输入 /输出端口 , 8253计数器 1的读写口 A3H( 1Y5): 输出端口, 8253的控制寄存器的端口  编程与调试 对 8253的计数器 0和 1写入初值,使计数器 1输出一定 频率的方波,从而使得与计数器 1输出端相连接的指示灯 循环亮和灭。 开始EPP 初始化8255 初始化8253 初始化8255 的 PC3 口置 1结束 ① 调用自定义头文件(同上实验一)。 ② EPP端口初始化 ( 同上实验一 )。 ③ 初始化 8255。 8255的控制字应该定义 C口的低位为输出口 , 工作方式为方式 0。 epp_write_data(CW_8255,0x8a)。 ④ PC3口置 “ 0”, 阻止脉冲输入。 初始化 8253前 , 要阻止脉冲输入 , 就要向 PC3口置 0, 8255的 C口 的各个端口可以直接置位和复位。 epp_write_data(CW_8255,0x06)。 ⑤ 初始化 8253。 8253的计数器 0、计数器 1,工作方式分别为方式 2和方式 3,都是 先写低字节再写高字节和 BCD码计数。 向计数器 0置入初值是 1000, 向计数器 1置入的初值也是 1000。 /*8253的 0口初始化 , 写 1000进去 */ epp_write_data(CW_8253,0x35)。 epp_write_data(CT0_8253,0x00)。 epp_write_data(CT0_8253,0x10)。 / *8253的 1口初始化 , 设置时间为 1s*/ epp_write_data(CW_8253,0x77)。 epp_write_data(CT1_8253,0x00)。 epp_write_data(CT1_8253,0x10)。 ⑥ PC3置 “ 1”, 允许脉冲输入。 epp_write_data(CW_8255,0X07)。 参考实验指导书附录 I4。  思考和练习题 1.向计数器 0和计数器 1写入不通的值,指示灯 会出现什么现象。 2.计数器 0和 1采用不同的工作方式,指示灯有 什么现象。 3. 8253的初始化要在一个脉冲的作用下才能完 成,这对实验中计数器输出信号的频率有没 有影响。 实验四 8253计数器在测频中的应用  实验目的 1. 了解频率测量原理。 8253的应用编程。  实验任务 8253的硬件电路原理。 , 编写出 8253的测频程序 , 并运行通过。  实验原理 ▼ 频率测量原理 所谓 “ 频率 ” ,就是周期性信号在单位时间变化的次数。 若在一定时间间隔 T内,计得这个周期信号得重复变化次 数为 N,则其频率可表达为: f= N/T。 电子计数器就是严 格按照该定义进行测频得。 其原理方框图和工作时间波 形下图所示。 脉冲形成电路 闸门 电子计数器门控电路时基信号发生器1 2 543Fx 时基 T12345▼ 8253的工作原理。 ▼ 自激振荡电路 R2 R1 RwCf图中将滑动变阻器 Rw左边的阻值设为 Rx,令 R=Rx+ R1。 当 R=R2时 , 当 RR2时, 本实验主板上设计的是第二种情况,通过调节滑动变阻 器 Rw可获得不同频率的信号源。 ▼ 电路原理 OUT0GATE0CLK0OUT1GATE1CLK1OUT2GATE2CLK2CSRDWRA0A1111091314151617182M HZf x2122232019DSDCDCLKV ccD0....D71Y5RDWRA0A1V ccPC3AO2FX自激振荡( 自 D/A 输出 )(外部输入 TTL )(实验主板振荡电路)指示灯电路D0D7V ccV ccV cc① 输入单元:输入的待测信号 fx有以下三种来源: a. AO2是自 D/A0832(程控信号源)输出的信号,详见实验六。 b. FX是外界直接输入的信号。 c. 实验主板上自带的振荡电路源。 ② 计数部分 :被测频率信号由 8253的计数器 2计数 ③ 时基信号产生与变换单元 ④ 逻辑控制单元 开门信号由 8255的 PC3控制。 计数器 0的输出 ( OUT0) 和计数器 1的时钟 ( CLK1) 直接相连 , 计数器 1的 OUT1通过反相器 , 控制计数器 2的 CLK2的信号输入 , 完成硬件方面的控制。 实验波形如下图 4所示( 计数器 0、 2的工作方式依次为方式 0、 2, 闸门信号全部为高 ) PC3C LK0O U T 0( C LK1 )O U T 1C LK2▼ 闸门时间 在本实验中初始化 8253时,设定计数器 0、 2的工作方式分别为 0 方式 0、 2,向计数器 0、 2中置入的数据一次为为 N0、 N N2。 定义计数器 0的时钟输入频率为 F。 闸门( PC3)打开后,信号 F进入 计数器 0,计数器 0工作在方式 2经 N0分频后输出的波形信号频率 f0为 : ( 1) 计数器 0输出的频率为 f0的信号作为计数器 1时钟信号( CLK1),计数 器 1工作在方式 0,经 N1分频后输出的波形信号频率 f1为: 由式( 1)、( 2)得: ( 2) ( 3) 计数器 1输出的频率为 f1的信号作为被测信号 fx的门控信号,则信号 f1的周期即为闸门时间 T,由式( 3)得: ( 4) 本实验共用到六个端口地址: 23H( 1Y1):输出端口, 8255的控制端口 22H( 1Y1):输出端口( PC3),发出计数器 0的闸门信号( 0为关, 1为开) 输入端口( PC6),读取计数器 2的闸门信号( 0为开, 1为关) A3H( 1Y5):输出端口, 8253计数器的控制寄存器的端口 A0H( 1Y5):输入 /输出端口, 8253计数器 0 的读写口 A1H( 1Y5):输入 /输出端口, 8253计数器 1的读写口 A2H( 1Y5):输入 /输出端口 ,8253计数器 2的读写口  编程步骤 本程序是利用 8253计数器 , 实现对未知频率信号的测频。 实验过 程中 , 可以通过探测点 TP TP TP11分别查看计数器 0、 2的 输出情况 , 通过测试点 TP1 TP13测量经过 74LS74输出的 1Mhz、 5KHz的波形信号。 开始初始化EPP 、 8255 、 8253 初始化8255 的 PC3 口置 1读取门控( PC6 )输出值gategateamp。 40H=0?读取计数器 2 的值将计数值转化为频率值结束Y ① 调用自定义头文件(同上实验一)。 ② EPP端口初始化 ( 同上实验一 )。 ③ 初始化 8255。 epp_write_data(CW_8255,0x8a)。 /*8255写控制字 */ ④ PC3置 0, 阻值脉冲输入 ( 同实验三 )。 ⑤ 初始化 8253。 /*8253的 0口初始化 , 写 1000进去 */ epp_weite_data(CW_8253,0x35)。 epp_weite_data(CT0_8253,0x00)。 epp_weite_data(CT0_8253,0x01)。 /*8253的 1口初始化 , 设置时间为 1s*/ epp_weite_data(CW_8253,0x71)。 epp_weite_data(CT1_8253,0x00)。 epp_weite_data(CT1_8253,0x10)。 /*8253的 2口初始化 , 写 ff进去 */ epp_weite_data(CW_8253,0xb4)。 epp_weite_data(CT2_8253,0xff)。 epp_weite_data(CT2_8253,0xff)。 ⑥ PC3置 1,允许脉冲输入(同实验三) ⑦ 读取计数器 1的输出量( PC6)。 do { epp_read_data(PC_8255,amp。 gate)。 /*读 PC6的值 */ gate=gateamp。 0xf0。 gate=gateamp。 0x40。 } ⑧ 读取计数器 2寄存器内的值。 epp_weite_data(CW_8253,0x80)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。