《汇编与接口技术》实验四 proteus的8086仿真过程+8086+8253+虚拟示波器电路的工作原理

  • 一、实验目的

    1、熟悉基于proteus的8086仿真过程。
    2、熟练掌握附件中8086+8253+虚拟示波器电路的工作原理,硬件连接及程序流程。
  • 二、实验任务

        读懂示例程序,在此基础上实现给定频率的方波输出功能。设方波的输出频率为X赫兹,则X的计算方式为:X= A3+ A2+ A1 +A0,其中,A3 A2 A1A0为你本人学号的后四位。

任务A:利用8253的计数器0生成频率为X的方波

本任务仅使用8253A的计数器0,GATE0始终打开, CLK0接10KHz的时钟脉冲(修改电路图中的晶体振荡器实现),OUT0接虚拟示波器观测输出波形(示例程序中,OUT0连接至虚拟示波器的B通道),并截图。

任务B:利用8253的计数器0和计数器1级联生成频率为X的方波

本任务使用8253A的计数器0和计数器1,GATE0和GATE1始终打开,CLK0接2MHz的时钟脉冲(修改电路图中的晶体振荡器实现),OUT1输出X赫兹的方波,把OUT0和OUT1接虚拟示波器观测输出波形(示例程序中,OUT0连接至虚拟示波器的B通道,OUT1连接A通道),并截图。

  • 三、思考题

  1. 示例程序中,8253的各输出口的工作模式和连接关系?给出例程中8253的0号计数器和1号计数器的工作方式,分频原理。

        任务A:输出口为OUT0,对应0计数器的工作方式为3方式,方波输出;偶计数初值,如果GATE高电平,OUT在前半个时钟周期输出高电平,后半个时钟周期输出低电平;奇计数初值,如果GATE高电平,前(N+1)/2时钟周期输出高电平,后(N-1)/2时钟周期输出低电平

        任务B:OUT0作为计数器1的时钟信号输入,存在计数器0到1的分频转换,计数器1收到的频率为f1=f0/TC0,fout1=f1/TC1,得到目标频率,通过TC0*TC1实现分频。

        2、原理图中,U11的功能是什么?代码中如何实现该功能?

当U11被选中时,通过输出Q0的值来完成对计数器0和计数器1的GATE信号的控制

计数器1门控信号打开:

	mov dx,io3
	mov al,01h
	out dx,al

门口信号关闭:
	mov dx,io3
	mov al,00h
	out dx,al
  • 四、实验过程及结果

任务A:

X=1+1+6+7=15HZ

TC=10k/15=668

668=29CH

即送入计数初值29CH

连线图:

 示波器结果:

 

B分度值20ms,一个方波周期约等于3.2个方格,20ms*3.3=660ms

1/15=0.0666s=66.7ms

实验设定正确

任务B: 

设定频率2Mhz

 连线图:

 

OUT1频率周期验证:

分度值为10ms,是黄色波形的周期大约为6.8格,即68ms,这与上述的1/15Hz = 66.667相近

实验正确。

  • 五、代码附录

任务A: 

io2 = 400h
io3=600h
code	segment 'code' ;定义代码段
	assume cs:code
start:	
	mov al,00110100b
	mov dx,io2+6
	out dx,al
	mov ax,29ch
	mov dx,io2
	out dx,al
	mov al,ah
	out dx,al  ;送入计数初值
	mov dx,io3
	mov al,01h
	out dx,al
	mov bx,500H
wait1:	mov cx,882
	loop $
	dec bx
	jnz wait1
	mov dx,io3
	mov al,01h
	out dx,al
J1:	jmp J1
exit:	ret	;利用功能调用返回DOS
code	ends	;代码段结束
	end start

任务B: 

io2 = 400h
io3=600h
code	segment 'code' ;定义代码段
	assume cs:code
start:
	mov al,00110100b
	mov dx,io2+6
	out dx,al
	mov ax,16eh
	mov dx,io2
	out dx,al
	mov al,ah
	out dx,al  ;送入计数初值16eh
	mov al,00110100b
	mov dx,io2+6
	out dx,al
	mov ax,16eh
	mov dx,io2+2
	out dx,al
	mov al,ah
	out dx,al  ;送入计数初值16eh
	mov dx,io3
	mov al,01h
	out dx,al
	mov bx,500H
wait1:	mov cx,882
	loop $
	dec bx
	jnz wait1
	mov dx,io3
	mov al,01h
	out dx,al
J1:	jmp J1
exit:	ret	;利用功能调用返回DOS
code	ends	;代码段结束
	end start

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值