ORG 0000H
JMP MAIN
ORG 1000H
MAIN:
MOV SP,#60H
CALL SETLEDS
mainloop:
jmp mainloop
对16组LED置数
SETLEDS:
mov dptr,#0fffeh 第一个8255A控制字地址
mov a,#80h 设置A、B、C口为方式0输出
movx @dptr,a
mov dptr,#0fffdh 第二个8255A控制字地址
mov a,#80h 设神悔桥置A、B、C口为方式0输出
movx @dptr,a
mov dptr,#0fffbh 第三个8255A控制字地址
mov a,#80h 设置A、B、C口为方式0输游猛出
movx @dptr,a
mov dptr,#0fff7h 第四个8255A控制字地址
mov a,#80h 设置A、B、C口为方式0输出
movx @dptr,a
mov dptr,#0ffefh 第五个8255A控制字地址
mov a,#80h 设置A、B、C口为方式0输出
movx @dptr,a
mov dptr,#0ffdfh 第六个8255A控制字地址
mov a,#80h 设置A、B、C口为方式0输出
movx @dptr,a
mov dptr,#0ff3eh 第1组数码管地址
mov a,#0f1h 第1组数码管显示1
movx @dptr,a
mov dptr,#0ff7eh 第2组数码管地址
mov a,#02h 第2组数码管显示2
movx @dptr,a
mov dptr,#0ffbeh 第3组数码管地址
mov a,#03h 第3组数码管显示3
movx @dptr,a
mov dptr,#0ff3dh 第4组数码管地址
mov a,#04h 第4组数码管显示4
movx @dptr,a
mov dptr,#0ff7dh 第5组数码管地址
mov a,#05h 第5组数码管显示5
movx @dptr,a
mov dptr,#0ffbdh 第6组数码管地址
mov a,#06h 第6组数码管显示6
movx @dptr,a
mov dptr,#0ff3bh 第7组数码管地址
mov a,#07h 第7组数码管显示7
movx @dptr,a
mov dptr,#0ff7bh 第8组数码管地址
mov a,#08h 第8组数码管显示8
movx @dptr,a
mov dptr,#0ffbbh 第9组数码管地址
mov a,#09h 第9组数码管显示9
movx @dptr,a
mov dptr,#0ff37h 第10组数码管地址
mov a,#00h 第10组数码管显示0
movx @dptr,a
mov dptr,#0ff77h 第11组数码管地址
mov a,#01h 第11组数码管显示1
movx @dptr,a
mov dptr,#0ffb7h 第12组数码管地址
mov a,#02h 第12组数码管显示2
movx @dptr,a
mov dptr,#0ff2fh 第13组数码管地址
mov a,#03h 第13组数码管显示3
movx @dptr,a
mov dptr,#0ff6fh 第14组数码管地址
mov a,#04h 第14组数前李码管显示4
movx @dptr,a
mov dptr,#0ffafh 答题计时数码管地址
mov a,#05h 答题计时数码管显示5
movx @dptr,a
mov dptr,#0ff1fh 第15组数码管地址
mov a,#06h 第15组数码管显示6
movx @dptr,a
mov dptr,#0ff5fh 第16组数码管地址
mov a,#07h 第16组数码管显示7
movx @dptr,a
mov dptr,#0ff9fh 抢到组数码管地址
mov a,#08h 抢到组数码管显示8
movx @dptr,a
RET
end
我记得有个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的。不知我猜对了没有。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)