当前位置:   article > 正文

8254 定时/计数器应用实验_8254定时计数器实验

8254定时计数器实验

一、实验目的

1.掌握 8254 的工作方式及应用编程。

2.掌握 8254 典型应用电路的接法。

二、实验内容与要求

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

2.定时应用实验。编写程序,应用8254的定时功能,产生一个ls的方法,并且本装置的示波器功能来观察。

三、实验步骤

1. 计数应用实验

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

4532e7d8a6874309b383eecdee96977e.png

图4.5.3  8254计数应用实验接线图

实验步骤:

(1)实验接线如图4.5.3所示(由于8254单元中GATE0信号已经上拉+5V,所以GATE0不用接线)。

(2)编写实验程序,经编译、链接无误后装入系统。

419ecfca07fe4c08b6ca723f6d3839af.png

(3)单击run按钮,运行实验程序,每连续按动5次KK1+,在界面的输出区会显示字符“M”(改成K),观察实验现象。

(4)改变计数值,验证8254的计数功能。

2. 定时应用实验

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

44e7c6528a734c9f8d89ab1c325ca4e4.png

图4.5.5  8254定时应用实验按线图

实验步骤:

(1)接线图如图4.5.5所示。

(2)根据实验内容,编写实验程序(例程文件名为:A82542.ASM),经编译、链接无误后装入系统。

467c95e756e64ea1b7e10c8965ca8aaf.png

(3)单击run按钮,运行实验程序,8254的OUT1会输出1s的方波,可用软件自带的示波器功能进行观察。

 (4)用示波器观察波形的方法:单击虚拟仪器菜单中的“示波器”按钮或直接单击工具栏的2f346cb71bc3450b9c0863f12bc86466.png 按钮,在新弹出的示波器界面上单击46d4afc6ef624aad9418e2a7b3c6543f.png 按钮运行示波器,就可以观测出OUT1输出的波形。

四、电路连接

1. 计数应用实验

6f268d9134f84e239082198ad4cef4fc.jpeg

2. 定时应用实验

536b3aee42c54edfa8dfc3870685996b.jpeg

五、代码设计

1.中断入口地址

  1. MOV AX, 0000H
  2.         MOV DS, AX
  3.         MOV AX, OFFSET IRQ7         ;取中断入口地址
  4.         MOV SI, 003CH               ;中断矢量地址
  5.         MOV [SI], AX                ;填IRQ7的偏移矢量
  6.         MOV AX, CS                  ;段地址
  7.         MOV SI, 003EH
  8.         MOV [SI], AX                ;填IRQ7的段地址矢量
  9.         CLI
  10.         POP DS

子程序入口是中断类型号*4,从下图可以看出,IR7的中断类型号是F(0F),0F×4=003C,003E=0F×4+2

3e23c4d7c19949858aa9cdc50267e6b7.png

2.8254的初始化

  1. MOV DX, CON8254         ;8254
  2.         MOV AL, 36H             ;计数器0,方式3
  3.         OUT DX, AL

36H=00 11 011 0:计数器0,先读写低8位,再读写高8位,方式3,二进制

8e4bbe22dd3f483399971df426073e22.png

3.8254计数器0的计数初值的计算

  1. MOV DX, A8254
  2.         MOV AL, 0E8H
  3.         OUT DX, AL
  4.         MOV AL, 03H
  5.         OUT DX, AL

设计数初值为n,CLK频率为fc,方波频率为f则n=fc/f

因为本实验中CLK0频率为1MHz,波形输出1ms方波,即1000Hz.所以计数初值n=1000000/1000=1000,转换为十六进制为03E8H.

4.关于显示字符

  1. MOV AX, 014BH
  2. INT 10H ;显示字符K

这里AH=01,AL=4BH=75=‘K’,会显示AL对应的字符。

六、实验现象

1. 计数应用实验

5646536b5c0c469c978c7519704f5e6b.png

修改代码,变成K。

22351118eb97494b879d4021407415d8.png

2. 定时应用实验

f5993d7a36df44fcbaef2acff1b376fb.png

3800b7f485e342078cd03b1b6eec30f7.png

附录 代码

1.计数应用实验

  1. ;=========================================================
  2. ; 文件名: A82541.ASM
  3. ; 功能描述: 通过对计数器0进行计数,计数初值为4
  4. ; 当计数满后,产生正跳变触发中断,中断
  5. ; 程序显示M(每按5次输出一个M)
  6. ;=========================================================
  7. IOY0 EQU 0600H ;IOY0起始地址
  8. A8254 EQU IOY0+00H*2
  9. B8254 EQU IOY0+01H*2
  10. C8254 EQU IOY0+02H*2
  11. CON8254 EQU IOY0+03H*2
  12. SSTACK SEGMENT STACK
  13. DW 32 DUP(?)
  14. SSTACK ENDS
  15. CODE SEGMENT
  16. ASSUME CS:CODE, SS:SSTACK
  17. START: PUSH DS
  18. MOV AX, 0000H
  19. MOV DS, AX
  20. MOV AX, OFFSET IRQ7 ;取中断入口地址
  21. MOV SI, 003CH ;中断矢量地址
  22. MOV [SI], AX ;填IRQ7的偏移矢量
  23. MOV AX, CS ;段地址
  24. MOV SI, 003EH
  25. MOV [SI], AX ;填IRQ7的段地址矢量
  26. CLI
  27. POP DS
  28. ;初始化主片8259
  29. MOV AL, 11H
  30. OUT 20H, AL ;ICW1
  31. MOV AL, 08H
  32. OUT 21H, AL ;ICW2
  33. MOV AL, 04H
  34. OUT 21H, AL ;ICW3
  35. MOV AL, 01H
  36. OUT 21H, AL ;ICW4
  37. MOV AL, 6FH ;OCW1
  38. OUT 21H, AL
  39. ;8254
  40. MOV DX, CON8254
  41. MOV AL, 10H ;计数器0,方式0
  42. OUT DX, AL
  43. MOV DX, A8254
  44. MOV AL, 04H
  45. OUT DX, AL
  46. STI
  47. AA1: JMP AA1
  48. IRQ7: MOV DX, A8254
  49. MOV AL, 04H
  50. OUT DX, AL
  51. MOV AX, 014DH
  52. INT 10H ;显示字符M
  53. MOV AX, 0120H
  54. INT 10H
  55. MOV AL, 20H
  56. OUT 20H, AL ;中断结束命令
  57. IRET
  58. CODE ENDS
  59. END START

2. 定时应用实验

  1. ;=========================================================
  2. ; 文件名: A82542.ASM
  3. ; 功能描述: 产生1s方波,输入时钟为1MHz,使用计数器01
  4. ; 计数初值均为03E8H
  5. ;=========================================================
  6. IOY0 EQU 0600H ;IOY0起始地址
  7. A8254 EQU IOY0+00H*2
  8. B8254 EQU IOY0+01H*2
  9. C8254 EQU IOY0+02H*2
  10. CON8254 EQU IOY0+03H*2
  11. SSTACK SEGMENT STACK
  12. DW 32 DUP(?)
  13. SSTACK ENDS
  14. CODE SEGMENT
  15. ASSUME CS:CODE
  16. START: MOV DX, CON8254 ;8254
  17. MOV AL, 36H ;计数器0,方式3
  18. OUT DX, AL
  19. MOV DX, A8254
  20. MOV AL, 0E8H
  21. OUT DX, AL
  22. MOV AL, 03H
  23. OUT DX, AL
  24. MOV DX, CON8254 ;8254
  25. MOV AL, 76H ;计数器1,方式3
  26. OUT DX, AL
  27. MOV DX, B8254
  28. MOV AL, 0E8H
  29. OUT DX, AL
  30. MOV AL, 03H
  31. OUT DX, AL
  32. AA1: JMP AA1
  33. CODE ENDS
  34. END START

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/725239
推荐阅读
相关标签
  

闽ICP备14008679号