跪求帮助!ch375测试程序,那为大哥帮我看一下,不胜感激!

电路土如下

未命名.bmp 这是我的测试程序,请帮忙看一下, 我测试过好象不是以反码输回来的,好想都上一0xFF返回来的! LJMP MAIN ORG 0200H MAIN: MOV DPTR , #0001H //命令输入的端口 MOV A , #05H // 复位 MOVX @DPTR, A

LCALL DELAY MOV DPTR,#0001H CLR A MOV A , #06H //测试命令输入 MOVX @DPTR ,A NOP CLR A MOV A , #055H MOV DPTR,#0000H //数据输出端口 MOVX @DPTR ,A NOP NOP CLR A LOOP:MOV A ,P0 //请帮我看一下上面的汇编有错误吗?下面的显示就不用了

MOV P1 ,A //我的P1是接七段数码管的,显示返回来的值,好象显示全部是1 。 MOV P3 ,#0 //我的P3是接七段数码管的位码的 NOP MOV P3 , #1 NOP MOV P3 , #2 NOP LJMP LOOP

DELAY: MOV R5,#255 D1: MOV R6,#255 DJNZ R6,$ DJNZ R5,D1 RET

END

首先,对你的命令和数据端口很是怀疑,0001H和0000H这样的端口你在硬件上是怎么实现的(请教)? 另外,对于“MOV A , #055H”命令中,55H前面有必要加个0么??? 最后说一下主题,前半部分没看出其他问题来,但是在后面读数据的时候,不是像你用“MOV A ,P0 ”这么简单的一条指令就可以读出来的,你要先输入读命令,然后才可以读数据端口的数据,这样才是它返回的数据。


谢谢回答!我的0001H命令端口和0000H数据端口是通过74ls373数据锁存器把A0分别置1和置0,CS就直接置0来实现的,不知道这样对吗?您能跟我写一个测试程序吗?谢谢


我把MOV A , P0 改为MOV A, @DPTR,但是输入的数据和输出的是一样的!不知道为什么? 能解释一下吗?谢谢


ch375上电之后要先延时50ms,测试一下25,26脚电平,正常的话25脚为低,26脚为高


我的25脚是低啊,26脚是高啊!但是返回值没有反向啊!跟输入数据是一样的!不知道为什么?那位大哥能帮忙一下呢?


CH375_CMD_PORT EQU 0001H ;CH375命令口的地址,地址译码后自动片选 CH375_DAT_PORT EQU 0000H ;CH375命令口的地址,地址译码后自动片选

ORG 0000H ;复位后单片机入口 LJMP START

START: LCALL DELAY MOV DPTR,#CH375_CMD_PORT //写测试命令 MOV A,#06H MOVX @DPTR,A NOP NOP MOV DPTR,#CH375_DAT_PORT //写55数据 MOV A,#55H MOVX @DPTR,A NOP NOP

MOVX A,@DPTR //读取返回数据 SJMP $

DELAY: MOV R5,#255 D1: MOV R6,#255 DJNZ R6,$ DJNZ R5,D1 RET

END

如果还不通过,检查你的硬件


谢谢你们的回答! 弄了很久!测试成功了!原来是我用的52单片机MOVX 命令访问的地址要在某一个地址以上才行,我把地址改为0FFF1和0FFF0就行了!


只有登录才能回复,可以选择微信账号登录