当前位置: 首页 > news >正文

微机原理-实验4 8254 定时/计数器实验

一、实验环境

软件:Wmd86软件

硬件:8254可编程间隔定时器芯片,内部架构与外部引脚如下所示:

二、实验内容

1. 计数应用实验。编写程序,应用 8254 的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5 次后,产生一次计数中断,并在屏幕上显示一个字符‘M’。

2. 定时应用实验。编写程序,应用 8254 的定时功能,产生一个 1s 的方波,

并用本装置的示波器功能来观察。

3. 电子发声实验,通过将一段乐曲的音符对应频率的方波(由8254产生)依次送到扬声器,实现播放乐曲《友谊地久天长》。

三、实验

1.计数应用实验:将 8254 的计数器 0 设置为方式 3,计数值为十进制数k,用单次脉冲 KK1 +作为 CLK0 时钟,OUT0 连接 MIR7,每当 KK1+按动k+1次后产生中断请求, 在屏幕上显示字符“M”。

实验程序,经编译、链接无误后运行,每连续按动 5 次 KK1+,在界面的输出区会显示字符“M”。得到实验结果如下所示:

IOY0 EQU 0600H ;IOY0起始地址 A8254 EQU IOY0+00H*2 B8254 EQU IOY0+01H*2 C8254 EQU IOY0+02H*2 CON8254 EQU IOY0+03H*2 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START: PUSH DS MOV AX, 0000H MOV DS, AX MOV AX, OFFSET IRQ7 ;取中断入口地址 MOV SI, 003CH ;中断矢量地址 MOV [SI], AX ;填IRQ7的偏移矢量 MOV AX, CS ;段地址 MOV SI, 003EH MOV [SI], AX ;填IRQ7的段地址矢量 CLI POP DS ;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01H OUT 21H, AL ;ICW4 MOV AL, 6FH ;OCW1 OUT 21H, AL ;8254 MOV DX, CON8254 MOV AL, 10H ;计数器0,方式0 OUT DX, AL MOV DX, A8254 MOV AL, 04H OUT DX, AL STI AA1: JMP AA1 IRQ7: MOV DX, A8254 MOV AL, 04H OUT DX, AL MOV AX, 014DH INT 10H ;显示字符M MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL ;中断结束命令 IRET CODE ENDS END START

2.定时应用实验:将 8254 的计数器 0 和计数器 1 都设置为方式 3,用信号源 1MHz 作为 CLK0 时钟,OUT0 为波形输出 1ms 方波,再通过 CLK1 输入,OUT1 输出 1s 方波。

编写实验程序,经编译、链接无误后运行实验程序,8254 的 OUT1 会输出 1s 的方波,使用软件自带的示波器功能进行观察(取了我们小组录制的视频片段的截图,视频放不了)。

运行时拔出插线会连接器(如跳线、BNC头、杜邦线等)在脱离瞬间会经历“若即若离”的状态,接触电阻的剧烈变化导致信号电平在高低之间反复跳变,产生多个非预期的脉冲(毛刺),而这些毛刺会被示波器捕捉到,产生上述现象。
IOY0 EQU 0600H ;IOY0起始地址 A8254 EQU IOY0+00H*2 B8254 EQU IOY0+01H*2 C8254 EQU IOY0+02H*2 CON8254 EQU IOY0+03H*2 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, CON8254 ;8254 MOV AL, 36H ;计数器0,方式3 OUT DX, AL MOV DX, A8254 MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL MOV DX, CON8254 ;8254 MOV AL, 76H ;计数器1,方式3 OUT DX, AL MOV DX, B8254 MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL AA1: JMP AA1 CODE ENDS END START

3.电子发声实验

一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以 发出这个音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可 以演奏出这段乐曲。利用 8254 的 “方波发生器”,将相应一种频率的计 数初值写入计数器,就可产生对应频率的方波。

编写实验程序,经编译、链接无误后运行实验程序,会播放乐曲友谊地久天长。其运行原理如下所示:

IOY0 EQU 0600H MY8254_COUNT0 EQU IOY0+00H*2 ; 8254计数器0端口地址 MY8254_COUNT1 EQU IOY0+01H*2 ; 8254计数器1端口地址 MY8254_COUNT2 EQU IOY0+02H*2 ; 8254计数器2端口地址 MY8254_MODE EQU IOY0+03H*2 ; 8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT ; ---- 频率表 (单位: Hz) ---- FREQ_LIST DW 371,495,495,495,624,556,495,556,624 DW 495,495,624,742,833,833,833,742,624 DW 624,495,556,495,556,624,495,416,416,371 DW 495,833,742,624,624,495,556,495,556,833 DW 742,624,624,742,833,990,742,624,624,495 DW 556,495,556,624,495,416,416,371,495,0 ; ---- 时间表 (单位: 相对延时单位) ---- TIME_LIST DB 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 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX ; ---- 初始化8254: 计数器0,方式3(方波发生器),先低后高,二进制 ---- MOV DX, MY8254_MODE MOV AL, 36H OUT DX, AL BEGIN: MOV SI, OFFSET FREQ_LIST ; SI指向频率表 MOV DI, OFFSET TIME_LIST ; DI指向时间表 PLAY: ; 计算计数初值 = 1MHz / 频率 = 0F4240H / 频率值 MOV DX, 0FH MOV AX, 4240H ; DX:AX = 0F4240H (1,000,000) DIV WORD PTR [SI] ; AX = 计数初值,DX = 余数 ; 将计数初值写入8254计数器0 MOV DX, MY8254_COUNT0 OUT DX, AL ; 先写低字节 MOV AL, AH OUT DX, AL ; 再写高字节 ; 根据时间表调用延时,控制音符发音时长 MOV DL, [DI] CALL DALLY ; 指针递增,处理下一音符 ADD SI, 2 INC DI ; 判断频率表是否结束 (频率值为0表示曲末) CMP WORD PTR [SI], 0 JE BEGIN ; 到曲末则从头开始重复演奏 JMP PLAY ; ========================================== ; 延时子程序 (N个单位延时,N由DL传入) ; ========================================== DALLY PROC D0: MOV CX, 0010H D1: MOV AX, 0F00H D2: DEC AX JNZ D2 LOOP D1 DEC DL JNZ D0 RET DALLY ENDP CODE ENDS END START
http://www.zskr.cn/news/1397558.html

相关文章:

  • 2026年Q2河北玻璃钢通风管道定制厂家网址选择指南 - 2026年企业资讯
  • Python缺失值检测四大方法原理与陷阱详解
  • 复数流态矩阵计算器 · 使用说明
  • 前端开发者的职业发展规划
  • 天赐范式第54天:我本来都躺下了,但是我又爬起来了——因为我有种曹操被写讨伐檄文的陈琳给惊才绝艳到了~
  • 2026年广东工业酒精/无水乙醇/异丙醇/甲醇/深圳丙酮/丁酮/环己酮厂家推荐:高纯品质与稳定供应实力品牌精选 - 品牌企业推荐师(官方)
  • 2026年Q2高评价数控控制箱实测评测:聚酯防爆箱/铸铝防爆机箱/铸铝防爆箱/防爆接线机箱/防爆接线箱/防爆控制机箱/选择指南 - 优质品牌商家
  • 8个Shell命令提升数据科学效率的实战指南
  • 技术人的沟通技巧:提升职场沟通能力
  • 别再拍脑袋分预算了!用Python实战马尔科夫链,科学量化你的广告渠道贡献度
  • B91C2 高强镁合金 vs 高强钢:结构件减重对比测评
  • 从零到一:PSDK负载开发实战入门指南
  • [智能体-97]:大模型应用(Hybrid AI):基于大模型的推理、分析、生成能力,结合传统编程精确计算控制能力,开发出的各种应用。
  • 别再只用标准差SD了!用Python的NumPy和Pandas计算RSD,一眼看穿数据波动真相
  • SPSS 25 安装 PSM 插件完整流程(含R环境配置与避坑指南)
  • (毕业必看)实测好用的AI写作辅助网站,毕业生收藏备用
  • 基于GraphCodeBERT语义嵌入的软件协同变更预测实战指南
  • VSCode Live Server插件避坑指南:为什么你的HTML文件打开变成了‘listing directory‘?
  • 【K8s】Pod
  • 毫米波Class-C VCO设计:利用反馈路径嵌入变容管突破调谐范围限制
  • 2026成都诚信音响设备旧货回收服务商推荐榜:二手空调回收、二手空调旧货回收市场、办公家具旧货回收市场、变压器旧货回收市场选择指南 - 优质品牌商家
  • 动态目标跨镜无缝接力追踪技术——移民局出入境证件查验辅助场景中的空间智能应用白皮书
  • 动态目标跨镜无缝接力追踪技术——海关口岸登临检查场景中的空间智能应用白皮书
  • SkillsBot - 发现、分享、安装 AI Agent Skill技能库
  • 安卓开发者如何快速接入大模型API并管理Token消耗
  • 光帆首款带摄像头 AI 耳机首发价 1999 元;飞拓星驰发布硬件体感游戏平台 Fit-OS:端侧实时 3D 动捕达 120 FPS丨日报
  • C51中断服务程序中的浮点运算可重入性问题解析
  • 【WorkBuddy从入门到精通】第01篇:保姆级教程——从零开始搭建你的第一个AI数字员工(2026实测版)
  • 2011-2024年耐心资本、数字经济与创新效率
  • AI代理内存管理:TTL与智能遗忘策略的工程实践