at89c51扩8255不好用???

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:28:17
我用的是at89c51 74ls373 8255
12MHZ
8255是MEC D8255AC-5
连接是
51的p0接74ls373 D0--D7 在接8255的D0--D7
74ls373 Q0,Q1接8255的a0,a1
51的RESET WR DR 接8255的程序是 RESET WR DR
51的ALE 接74ls373 的G
74ls373和8255的片选都接地
和书上的基本一样
8255的A口B口C口 接三个八段数码LED 8255可以驱动八段数码LED 我试验了 用手动接线给的信号 都亮拉
ORG 0000H
LJMP 0100H
ORG 0100H
;A,B,C 全输出HH
MOV DPTR,#0003H
MOV A,#80H
MOVX @DPTR,A
;AAAAAAAAAAAAA
MOV DPTR,#0000H
MOV A,#0FFH
MOVX @DPTR,A
: ;BBBBBBBBBBBBBBBBBBBBBBBBBB
MOV DPTR,#0001H
MOV A,#0FFH
MOVX @DPTR,A
;CCCCCCCCCCCCCCCCCCCCCCCC
MOV DPTR,#0002H
MOV A,#0FFH
MOVX @DPTR,A
LOOP: MOV P1,#66H ;这条指令有输出对
LJMP LOOP
END

程序的运行拉 八段数码LED不亮
p1口上的led 亮的是66h
这是怎么办呀 我要做的比这个要复杂的多拉
这段程序不好用 我就没法继续拉
希望大家帮我分析一下原因

这个问题我解决拉
把8255的at89c5 和at89c51的at89c5分开
8255的复位采用软件复位
比如把它和 P1.1连接
在对8255初始化 之前执行
setb p1.1
lcall ys
; 是延时程序 我认为在30个周期以上比较好 我用的是50个DJMZ
CLR P1.1
LCALL YS
这样就好拉
我分析原因可能是at89c51的时钟快 使 8255 的复位不好用