汇编程序设计 要求用8255芯片 设计程序,输出方波 有延时 怎么写呀??求指导的帮助

汇编程序设计 要求用8255芯片 设计程序,输出方波 有延时 怎么写呀??求指导的帮助,第1张

我记得有个8255A芯片,是端口拓展用的,时间太长了,具体记不清。

1、查数据手册,找8255A的指令用镇伍旦法,学会必须的指令。

2、查数据手册,找8255A的数据线、地址线的连接方法,看管脚图,确定原理图。

3、查数据手册,找8255A的封装,绘制电路板,Protel里有这个芯片的封装,可以直接用。

4、制板、焊件、调试,如果是面包板,就确定该连接的都连接好。

5、程序思路:

1、给8255A初始化指令,让A\B\C口都输出高或低电平,连接LED查看是否工作正常。

2、程序要求出方波,就是一会儿出高电平,一会儿出低电平就是方波。

3、主程序中:

1、初始化51的各个寄存器。

2、初始化8255A

3、发御扰指令给8255A,让A口0线出低电平

4、第一个延时程序,控制低电平持续时间,可以用加法比较延时橘州,也可用定时器。

5、发指令给8255A,让A口0线出高电平

6、第二个延时程序,控制高电平持续时间,同4

7、LOOP循环到程序3位置。死循环即可。

用示波器看输出的波形,调整4、6的参数,使得方波满足你要的高低电平时间,不要特意计算程序一条指令是多少时间,延时多少时间,那样即麻烦,又不准,8255A是有执行延迟的,所以用示波器看输出最准。

这些是02年我大二时学的,好久不用。

估计你是用来完成老师的作业,实际干活,没人用8255的。不知我猜对了没有。

延时子程序简单点考虑:让CPU空转几千次,估计差不多一秒左右的时间,再循环调用这个程序,调册胡用多少次就是多少州毕拦秒

我给一个大致的样子

/*以下延时时间程序,一次调用延时时间大约在1/4秒*/开始

YanShi2:

mov dx,65535D CPU空转次数

YanShi1:

dec DX 减1继续执行

jnz YanShi1 反复执行,直到DX小于0才开始向下执行

dec cx 确定执行的总时间,从上面需要执行的时间赋值得到

jnz YanShi2 同上

ret

/*以下延数毁时时间程序,一次调用延时时间大约在1/4秒*/结束

ah是高位字节,al是低位字节,ax是包含了ah和al两个字节的字;团亩

ah和al都是8位长度,最大值是FFH,因此不可能将200H赋给ah,编译时会报错;如果将200当做十穗或团进制才可以;(将汇编默认的16进制改成10进制。)

在delay延时程序里面,首先push ax 是在堆栈中保存ax;

ax的值赋给了cx。它们的高位是200D, 即C8H,低位是0,一起是C800H

CX北赋值之前被压栈,送入堆栈;

cx在循环loop里面是用来倒计数的,每循环一次,cx自动减去1,当cx达到0时,loop结束。

al是0不要紧猜橘,循环次数是用cx来计算的;

最后cx, ax依次出栈,还原先前的值。注意出栈顺序,因为堆栈是先进后出的;

ret是退出循环;


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12463550.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存