赞
踩
掌握8254定时/计数器方式的应用及编译原理
1根据实验内容画出实验程序流程图,用汇编语言编写实验程序, 2、连接实验线路,注意连线的颜色标记
(1)MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址;; 分析: 因为试验系统是32位,地址宽度为4字节(B),而AL等寄存器为8位 ,因此应该对IOYO的低字节乘4。所以计数器0的端口地址:E400~E403,计数器1的端口地址:E403~E406,计数器2的端口地址:E407~E40A,计数器3的端口地址E40B~E40E, (2)定时计数器8254的工作方式有控制字寄存器的内容来选择。所以在进行工作方式初始化之前应该先MOV DX,MY8254_MODE来选择控制字寄存器。AL=01110110H,说明选择1通道,技术通道的读写规则:先读CR或OR的低8位,再读写高八位。011表示选择方式三,最低位的零表示:读写数据为二进制 (3)由于该系统设置存储方式为小端存储,因此在设置初值时应该先将低字节的数据送入,再将高字节的数据送入寄存器 (4)由于实验要求实现1.8432MHZ分频输出1HZ的方波,因此由题目知:要求产生频率为F的信号的定时常数T=(CLK)/f=1.8432*10^6/1HZ =1843200;但方式三最大只能为1.19318MHZ因此需要两次分频才能实现,可改为通道零先实现100分频,通道1实现18432分频。
;T8254-1.asm ;查看端口资源分配情况,记录实验系统I/O端口始地址
INTR_IVADD EQU 003CH ;INTR对应的中断矢量地址IOY0 EQU E400H ;片选IOY0对应的端口始地址 MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器3端口地址
STACK1 SEGMENT STACK DW 256 DUP(?) ; STACK1 ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA
START: MOV DX,MY8254_MODE ;初始化8254的工作方式 MOV AL,01110110H OUT DX,AL
Mov DX ,MY8254_COUNT1 MOV AL,64H ;装入计数初值实现100分频 OUT DX,AL MOV AL,00H OUT DX,AL
MOV DX,MY8254_MODE ;初始化8254的工作方式 MOV AL,36H ;要送入AL中的内容代码表示用十进制和二进制都可以 OUT DX,AL
MOV DX, MY8254_COUNT0 MOV AL,00H ;装入计数初值实现18432分频 OUT DX,AL MOV AL,48H OUT DX,AL
QUIT:MOV AX,4C00H INT 21H CODE ENDS END START
(1)如何用BCD码实现将计数一的100分频改为200分频 通过计数器的结构(如下图)可知 控制字的最后一位(LSb)用于选择计数是二进制还是BCD。如果该值为0,它将充当二进制计数器,否则将充当BCD计数器 因此代码: START: MOV DX,MY8254_MODE ;初始化8254的工作方式 MOV AL,01110111H OUT DX,AL
Mov DX ,MY8254_COUNT1 MOV AL,0c8H ;装入计数初值实现200分频 OUT DX,AL MOV AL,00H OUT DX,AL |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。