用74hc373扩展32个输出端口,接法如图:<br />/OE接地,2个373的LE分别接P2.0-P2.1,373的D0-D7都接P0.0-P0.7,373的Q0-Q7<br /><br />接发光二极管。<br />实际做板子试验的时候,测试程序如下:<br />ORG 0000H<br /> AJMP MAIN<br /> ORG 0100H<br />MAIN: MOV DPTR,#0F2FFH;P2.1=1,P2.0=0,第一个373被选通接受P0口<br /> MOV A,#00h;第一组发光二极管全黑<br /> MOVX @DPTR,A;这个时候,用万用表测P0,P2口电压分别是多少呢?(<br /><br />对比下我的 测试结果)<br /> ACALL time1s 等待1秒<br /><br /> MOV DPTR,#0F2FFH;<br /> MOV A,#0FFH;第一组发光二极管全亮<br /> MOVX @DPTR,A;这个时候,用万用表测P0,P2口电压分别是多少呢?(对<br /><br />比下我的 测试结果)<br /> ACALL time1s<br /><br /> MOV DPTR,#0F1FFH;P2.1=0,P2.0=1,第二个373被选通接受P0口<br /> MOV A,#00h;第二组全黑<br /> MOVX @DPTR,A<br /> ACALL time1s<br /><br /> MOV DPTR,#0F1FFH<br /> MOV A,#0FFH;第二组全亮<br /> MOVX @DPTR,A这个时候,用万用表测P0,P2口电压分别是多少呢?(对比<br /><br />下我的 测试结果)<br /> ACALL time1s<br /><br /> AJMP MAIN;循环<br /><br /><br />time1s: mov r5,#08h ;延时子程序 <br />time1s_1: mov r6,#0f4h <br />time1s_2: mov r7,#0ffh <br />loop: djnz r7,loop <br /> djnz r6,time1s_2 <br /> djnz r5,time1s_1 <br /> ret<br />将以上程序写入AT89C52,用万用表测试P0P2口结果为:<br />PO全为1,P2全为1(插上373)<br />P0全为0,P2全为1(取下373)<br />完全和预期不合啊!!!!<br />我预期P0口在1和0之间来回切换,P2口除了P2.0,P2.1外全为1,P2.0和P2.1都在1和0之间切换。<br />是这程序有问题吗?? |
|