导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:各位高人,帮帮忙![liping]

 *第3704篇: 初学者:各位高人,帮帮忙!

  
楼 主:liping 2002年6月13日13:59
 初学者:各位高人,帮帮忙!
     我用的at89c2051,其中p1.0~p1.3接mt8880的四根数据线,p1.4接mt8880的时钟,p1.5
接rs0
p1.6接r/w,p1.7接了一个二极管的负端,用作指示。p3.7接mt8880的cs.
程序如下,其功能主要为发送。现在不能发送。状态位没有变化。 
                  
                        ORG 0000H
                       AJMP ST
                       ORG 0003H
                       AJMP TT
                       ORG 0050H
                    ST:ACALL DL1
                       ACALL DL1
                       CLR P3.7     ;片选
                       MOV A,#30H
                       MOV P1,A
                       MOV P1,A      ;写CRA
                       MOV A,#38H
                       MOV P1,A
                       MOV A,#30H     ;写CRB
                       MOV P1,A
                       SETB EA
                       SETB EX0
                       SETB P1.7
                  LOOP:NOP
                       SJMP LOOP
                    TT:NOP
                       MOV A,#3DH    ;设为中断允许,允许信号输出
                        MOV P1,A
                       MOV A,#30H
                       MOV P1,A
                       MOV A,#18H     ;写发送寄存器,写#8
                       MOV P1,A
                       ACALL DL1
                       ACALL DL1
                       ACALL DL1
                       MOV A,#0FFH
                       MOV P1,A
                       CLR P1.7
                       SETB P1.5
                       SETB P1.6
                       SETB P1.4      ;读状态寄存器
                   LOO:MOV A,P1
                       JNB ACC.1,LOO   ;如果ACC.1为1,则发送成功,这里有问题,程
序在这里跳。
                       ACALL DL1
                       SETB P1.7


                       NOP
                       MOV A,#11H
                       MOV P1,A
                       ACALL DL1
                       SETB P1.5
                       SETB P1.6
                       SETB P1.4
                  LOO1:MOV A,P1
                       JNB ACC.1,LOO1
                       ACALL DL1
                       SETB P1.7  ;这一段发#1


                       NOP
                       CLR P1.7
                       MOV A,#13H
                       MOV P1,A
                       ACALL DL1
                       SETB P1.6
                       SETB P1.5
                       SETB P1.4
                  LOO2:MOV A,P1
                       JNB ACC.1,LOO2
                       ACALL DL1       ;这一段发#3,

                       SETB P1.7
                       RETI
                   DL1:MOV R2,#4H
                  DL11:MOV R3,#0FFH
                  DL12:MOV R4,#0FFH
                    DL:DJNZ R4,DL
                       DJNZ R3,DL12
                       DJNZ R2,DL11
                       RET
                       END

  
2楼:liping 2002年6月20日10:57
 怎么没有一个人愿意帮我,斑主救命!
  
3楼:city379 2002年6月20日11:09
 同病相怜
我是用的MT8888,没搞好呢。欢迎一起讨论!
  
4楼:hzuser 2002年6月24日16:37
 MOV P1,A 改为......
                       MOV P1,A
                    ;;xor p1,a
                       MOV P1,A      ;写CRA
                    ;;xor p1,a
                       MOV A,#38H
                    ;;..............
                       MOV P1,A
                       MOV A,#30H     ;写CRB
                       MOV P1,A
什么意思呢,也就是说,你在发送数据到8880时,采用了MOV指令,它会破坏P1口原来的状
态,也就是说破坏了8880的时序。
  
5楼:ggyyguoyi 2002年6月25日17:51
 我得看法
89c2051的p1口,与89c51的是不同的。差别在于p1。0和p1。1。这两个管脚是用来做比较器
的输入的。所以在硬件电路的设计上,这两个管脚需要上拉电阻。也就是说,如果你没有在
电路上加上上拉电阻的话,你的p1。1是不会变高的。也就是说下面这句话是不会执行的。
JNB ACC.1,LOO   ;如果ACC.1为1,则发送成功,
你可以量一下看看p1。1是否高过。如果没有的话,加个上拉电阻。会解决问题的。

>>>>>>对该主题发表你的看法

本主题贴数5,分页: [第1页]


[上一篇主题]:硬件:tlc5620芯片

[下一篇主题]:初学者:哪位大哥帮我编个6264与89C51接口的程序,谢谢