实验6、8254定时/计数器实验

实验内容
基础部分:
1、编写程序,是8254的计数器1分别工作在方式0、1、2、3下,在示波器上观察各工作方式下OUT1的输出波形。
拓展部分:
2、使用单脉冲开关手动生成8254的输入时钟,观察方式0的输出波形。
3、编写程序,在示波器上显示周期为1s的方波。
4、利用8254方式2或方式3精确定时,控制LED等D7~D0的点亮:

  • 初始时,D7~D0全部熄灭;
  • 1秒钟之后点亮D0,再经过1秒D1D0点亮,…,8秒钟之后D7~D0全部点亮。

代码
1

CONUTER0 EQU 0600H
CONUTER1 EQU 0602H 
CONUTER2 EQU 0604H 
CON8254 EQU 0606H    

CODE SEGMENT 
    ASSUME CS:CODE
START: 
    MOV DX, CON8254  
    ;MOV AL,70H  ;计数器1工作在方式0
    ;MOV AL,72H  ;方式1
    MOV AL,74H  ;方式2
    ;MOV AL, 76H  ;方式3 
    OUT DX, AL 
    MOV DX, CONUTER1 
    MOV AL, 00H
    OUT DX, AL 
    MOV AL, 48H      
    OUT DX, AL 
AA1: 
    JMP AA1 
;将GATE1置为高电平,运行程序,在示波器中可以看到OUT1输出一段高电平后会输出一个宽度为一个周期的负脉冲。
CODE ENDS 
    END START

2

A8254 EQU 0600H
B8254 EQU 0602H 
C8254 EQU 0604H 
CON8254 EQU 0606H                     

CODE SEGMENT 
    ASSUME CS:CODE
START: 
 
    MOV DX, CON8254
    MOV AL, 70H             ;8254计数器1工作在方式0,计数时输出低电平,到0时输出高电平 
    OUT DX, AL 
    MOV DX, B8254 
    MOV AL, 00H 
    OUT DX, AL 
    MOV AL, 48H             ;写入计数初值4800H,接18.432KHZ时钟源,这样可到达计时1s后输出正跃变信号
    OUT DX, AL 
AA1: 
    JMP AA1 
;将GATE1置为低电平,运行程序。
;将GATE1置为高电平,在示波器中可以观察到OUT1输出低电平,待过一段时间后(计数器减至0)输出高电平。
CODE ENDS 
    END START

3

A8254 EQU 0600H
B8254 EQU 0602H 
C8254 EQU 0604H 
CON8254 EQU 0606H                     

CODE SEGMENT 
    ASSUME CS:CODE
START: 
 
    MOV DX, CON8254
    MOV AL, 76H             ;8254计数器1工作在方式3,产生方波信号
    OUT DX, AL 
    MOV DX, B8254 
    MOV AL, 00H 
    OUT DX, AL 
    MOV AL, 48H             ;写入计数初值4800H,接18.432KHZ时钟源,这样方波周期则为1s
    OUT DX, AL 
AA1: 
    JMP AA1 
CODE ENDS 
    END START

4

COUNTER0 EQU 0600H
COUNTER1 EQU 0602H 
COUNTER2 EQU 0604H 
CON8254 EQU 0606H      

A8255 EQU 0640H
B8255 EQU 0642H
C8255 EQU 0644H
CON8255 EQU 0646H
DATA SEGMENT
     LASTNUMBER DB  0
DATA ENDS

CODE SEGMENT 
    ASSUME CS:CODE
START: 
    MOV DX,CON8255 
    MOV AL,80H      ;A--OUT,B--OUT 
    OUT DX,AL      
    
    ;设置中断向量  MIR6
    MOV AX,OFFSET MIR6    ;存偏移量
    MOV SI,38H
    MOV [SI],AX
    MOV AX,CS             ;存段地址
    MOV SI,3AH
    MOV [SI],AX
    CLI       ;关闭中断   
    ;设置ICW1~ICW4和OCW1
    MOV AL,11H
    OUT 20H,AL
    MOV AL,08H  ;中断源选择IR0
    OUT 21H,AL
    MOV AL,04H  ;S2为1表示有内部从片被级联到主片的IR2上
    OUT 21H,AL
    MOV AL,07H  ;D2为1表示其为主片,D1为1表示为自动中断,D0为1表示为8086~Pentinum的CPU
    OUT 21H,AL
    MOV AL,2FH  ;M7和M6为0表示IR7和IR6,IR4(用于复位)三个个中断未被屏蔽,其它中断均被屏蔽
    OUT 21H,AL
    STI       ;打开中断 
    
    MOV DX,CON8254
    MOV AL,76H   ;计数器1工作在方式3
    OUT DX,AL
    MOV DX,COUNTER1
    MOV AL,00H
    OUT DX,AL
    MOV AL,48H
    OUT DX,AL    ;计数初值4800H,选用时钟18.432KHZ
    
    
    MOV AL,00H   
    MOV DX,B8255
MAIN:        
    OUT DX,AL
    JMP MAIN  
    
MIR6:
    CMP AL,0FFH
    JZ I1   
    ROL AL,1
    INC AL 
    JMP I2
I1:
    MOV AL,00H 
I2:       
    IRET
  

CODE ENDS 
    END START
  • 19
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值