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
用8255扩展之后就是PA,PB,PC了,怎么还会只有8个端口呢?用8255扩展51单片机 I/O口的程序,需要结合电路图才能确定,不同的连线,PA,PB,PC的地址是不同的,不过我也忘记怎么写程序了= =!
8255中的A0.A1,CS非,与单片机的连线决定了,8255中,PA,PB,PC的各端口地址。单片机中P0,是低8位地址线,P2,是高8位地址线。
例如 CS非连接P2.7A0,A1通过锁存器连接到单片机中的P0.0,P0.1的话。那么PA口地址就是 7FFCH。
因为 CS非要低电平,8255才工作,因为 要选择PA口,则A0=0,A1=0。
这样碧迹,CS,A0,A1对应单片机中的 P2.7,P0.0,P0.1就是低电平。
所以单片机中低8位地址加上高8位地址用2进制表示就是 0111111111111100,
对应的16进制就是 7FFCH
同理,PB口对应悔滚并的就是 7FFDH
PC口对应的就是7FFEH
还有个控制端。对应的就是 7FFFH
如果你要用8255的扩展口的话,就要先打通控制端,看你要用什么工作方式了。
有个工作方式控制字的,可以让你选择使用啥工作方式。但是不管怎样,都要先打通控制端 ,用汇编来写就是 MOV DPTR,#7FFFH
然后就是选择工作方式了,比方说用 A口——方式0输入,B口——方式0输出,C口高半字节——输入,C口低半字节——输出,则她的工作方式控制字就为 10011000B,就是 98H。
程序就是 MOV DPTR,#7FFFH 这个就是 打通控制端
MOV A,#98H 选择方式控制字
MOVX @DPTR,A 把控制字备握弄到8255的控制口去
这些在单片机的书中都有,多看看吧。写的这么详细了,给我最佳吧。呵呵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)