急啊,关于操作端口!!

unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0; /* CH375数据端口的I/O地址 */ 这是贵公司的提供的代码,我所用的是cygnal 的c8051f124,由于端口资源丰富,在自己的板子上没有使用38译码器,我想问一下:对ch375的端口是否可以直接按照ds上提供的时序进行操作!!以下是我的代码: void CH375_WR_CMD_PORT(unsigned char cmd) //写命令端口 { SFRPAGE=0x0f; P7MDOUT =0xff; P4MDOUT|=0xd2; ch375cs=0; ch375rd=1; ch375wr=0; ch375a0=1; P7=cmd; delay2us(); ch375cs=1; }

void CH375_WR_DAT_PORT(unsigned char dat) //写数据端口 { SFRPAGE=0x0f; P7MDOUT =0xff; P4MDOUT|=0xd2; ch375cs=0; ch375rd=1; ch375wr=0; ch375a0=0; P7=dat; delay2us(); ch375cs=1; } 这样操作是否可行?盼望您的回复!!!

你这样写是采用模拟口写数据,这样是可以的,但是会影响速度~~同时你要注意的软件和你的硬件要相对应


我靠,你的端口果然很多唉。。。 应该行的吧,你试下看看呢:)


一楼的老大,小弟是初学者,能不能问个问题?用模拟口和外部端口有什么区别?这个问题困扰我很久拉,从原理上应该是一样的吧!!!


原则上讲,使用模拟端口和外部端口都能实现同样目的. 使用模拟端口的缺点是速度慢并且需要切换端口的输入输出状态. 使用外部端口最简单,如果你不想用138译码,可以使用高位地址线的方法 来产生片选信号和A0信号,很方便.


实际上没什么区别,只是在速度上慢了点而以,因为你每次执行写命令或者写数据的时候都要执行你写的程序,这样就会影响速度


谢谢各位的热情回复,小弟非常非常的感谢!! 但是小弟努笨,还有几个疑问,希望xujunchen和 hcn两位大侠能够帮着看看!! 1.unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0; /* CH375数据端口的I/O地址 */ 外部端口地址是怎么进行计算的? 比如说0xBDF1,是否就是对应着的P0和P2口的地址线输出状态?就是说P2口的状态就是BD,即10111101,P27~P24分别对应着是1011,也就是138译码器的使能端和A,B,C三个输入端的状态,从而选通ch375。P23~P20分别对应着是1101,我只能理解到写命令的时候,ch375要求A0为高,即P20为1,那么P23~P21的110是怎么计算的?还有就是P0口的状态是否就是F1,这个我也无法理解!!! 还是说只要能保证选通ch375和A0为高,其他的各个输出端口可以任意选定? 2、还有就是高位地址线法具体怎么操作啊?只是从软件的角度操作还是要求硬件也得有什么具体的要求? 再次谢谢各位老大的鼎立帮助!!!


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