
8086古董阿
还是根据晶振算,一个指令周期是几个时钟周期我就不知道了,试验下看看
51的话,如果是12MHz的晶振,一个时钟周期就是1/12微秒,一个指令周期是121/12=1微秒
这个程序延迟102410次,也就是延迟10241ms
看来你的晶振是100/1024112=1172MHz
DELAY PROC
MOV BL, 10
AGAIN: MOV CX, 2801H
WAIT: LOOP WAIT 循环2801H次,就是10241次
DEC BL BL-1
JNZ AGAIN 如果BL=0,跳到AGAIN
RET
DELAY ENDP
总共循环次数为BLCX=102801H=102410次
可编程定时/计数器 8253 实验
一、实验要求
利用 8086 外接 8253 可编程定时/计数器,可以实现方波的产生。
二、实验目的
1、学习 8086 与 8253 的连接方法。
2、学习 8253 的控制方法。
3、掌握 8253 定时器/计数器的工作方式和编程原理
三、实验说明
8253 芯片介绍
8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V 单电源供电。
8253 的功能用途:
⑴延时中断;⑵可编程频率发生器;⑶事件计数器;⑷二进制倍频器⑸实时时钟;⑹数字单稳⑺复杂的电机控制器。
8253 的六种工作方式:
⑴方式0:计数结束中断;⑵方式l:可编程频率发生;⑶方式2:频率发生器;⑷方式3:方波频率发生器;⑸方式4:软件触发的选通信号;⑹方式5:硬件触发的选通信号。
四、实验步骤
1、Proteus 仿真
a在 Proteus 中打开设计文档“8253_STMDSN”;
b建立实验程序并编译,仿真;
c如不能正常工作,打开调试窗口进行调试。
参考程序:
CODE SEGMENT
ASSUME CS: CODE
START:
JMP TCONT
TCONTRO EQU 0A06H
TCON0 EQU 0A00H
TCON1 EQU 0A02H
TCON2 EQU 0A04H
TCONT:
MOV DX, TCONTRO
MOV AL,16H ;计数器 0,只写计算值低 8 位,方式 3,二进制计数
OUT DX, AL
MOV DX, TCON0
MOV AX, 20 ;时钟为 1MHZ,计数时间=1us20=20us,输出频率 50KHZ OUT DX,AL
JMP $
CODE ENDS
END START
五、实验电路及连线
1、Proteus 实验电路
这是8086微机原理的实验吧,我没有相同的硬件环境,只能给你说一下思路。
首先,步进电机的控制就是在两组不同的线圈上加脉冲信号,对于你提供的实验资料来说,就是向8255的B口发送相应的数据。你可以定义两个内存变量,一个正转,一个反转。当要正转时把正转变量传送给控制过程,反转时把反转变量传送给控制过程。这样就可以控制正反转了。
其次延时30秒,这可以通过做循环程序实现。自己编写一个过程就可以。
第三,写个控制程序过程,设置一个内存变量,当该变量为零时把控制电机正转,非0时,反转,调用延时程序,改变这个变量值,通过取反 *** 作,使其值在0和1之间不断变化,电机就会按要求转动。
1、首先在电脑中打开Masm for Windows 集成实验环境。
2、接着输入DATAS SEGMENT;定义数据段,BUF0 DB 1;定义一个字节型变量,名称是BUF0,初始值是01H。
3、DATAS SEGMENT;定义数据段,BUF2 DW 1;定义一个字型变量,名称是BUF2,初始值是0001H。
4、DATAS SEGMENT;定义数据段,BUF4 DB 1 DUP(50);定义连续50个字节型变量,名称是BUF4,初始值是01H,DATAS ENDS;数据段定义结束。
5、最后完整段的Hello World程序,设置字符串变量DATAS SEGMENT,就可以了。
以上就是关于解释下这个延迟程序全部的内容,包括:解释下这个延迟程序、(微机原理)用8086,8253,8251,8255,8259和8237其中的几种设计一个简单的实验,请给点思路、汇编语言控制步进电机正反转180°如何编写代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)