当前位置: 首页 > 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.jsqmd.com/news/893623/

相关文章:

  • ABAP:对外发布Web Service
  • 前端开发者的职业发展规划
  • 2026年Q2河北玻璃钢通风管道定制厂家网址选择指南 - 2026年企业资讯
  • 三菱FX5U PLC与上位机通信新选择:SLMP协议 vs MX Component插件,到底该怎么选?
  • 2026年当前乌鲁木齐行业知名的隔层实力厂商如何选择:专业指南与实力厂商推荐 - 2026年企业资讯
  • OPC 中国是做什么的?一文读懂 OPC 与 OPD 体系
  • 从‘发热怪’到‘静音王’:手把手教你用磁珠曲线,搞定开关电源的EMI超标难题
  • Servlet Session 跟踪
  • 复数流态矩阵计算器 · 使用说明
  • 2026年5月行业内上海AI产业智能体公司如何选厂家推荐榜,政企智能体、营销智能体、客服智能体厂家选择指南 - 海棠依旧大
  • Kubernetes多集群管理:管理大规模K8s环境的最佳实践
  • 全球十大男装排名公布,水甬后第一名耐穿性能拉满
  • 从Wi-Fi到汽车:聊聊FMCW雷达技术怎么悄悄改变了我们的生活
  • 5. 【穷举-作业-编程题-3】求阿姆斯特朗数
  • 【Agent 学习日记】我们来说说 Agent 的基础框架是什么?
  • 动态目标跨镜无缝接力追踪技术——移民局出入境证件查验辅助场景中的空间智能应用白皮书
  • 【从零搭建本地电商智能客服 Agent:Dify+Ollama+Qwen3.5 部署全流程】
  • 从零到一:PSDK负载开发实战入门指南
  • 2026年广东工业酒精/无水乙醇/异丙醇/甲醇/深圳丙酮/丁酮/环己酮厂家推荐:高纯品质与稳定供应实力品牌精选 - 品牌企业推荐师(官方)
  • Git闯关手记-从登录到烧录与IDE延迟
  • 2026年 圆弧设备厂家推荐排行榜:木质圆弧辊压机/圆弧成型机/圆弧弯曲机,弧形板加工与家具圆弧代工专业实力之选 - 品牌企业推荐师(官方)
  • 云原生存储方案:选择适合你的存储策略
  • 2026年Q2高评价数控控制箱实测评测:聚酯防爆箱/铸铝防爆机箱/铸铝防爆箱/防爆接线机箱/防爆接线箱/防爆控制机箱/选择指南 - 优质品牌商家
  • 【Doris从零到一】(一)Apache Doris 概述
  • 避开第一个坑:为什么神经网络权重不能初始化为0(附Python代码示例)
  • pandas sort_values 排序原理与生产级实战指南
  • 学术写作新纪元!2026全能型AI写作辅助软件深度解析
  • 2026全域电力变压器厂家推荐榜:变压器厂家直销/变压器回收价格/变压器回收公司/变压器回收厂家/变压器回收多少钱一台/选择指南 - 优质品牌商家
  • [LitCTF 2025]星愿信箱easy_signin题解
  • 告别龟速!实测FastCopy 3.92汉化版,百万小文件拷贝速度提升10倍