本帖最后由 laomaomao0 于 2014-1-11 21:16 编辑
我采用的是stc89c52和arcnet协议控制芯片com20020,自己按手册谢了读寄存器,写寄存器两个函数,读寄存器的默认值没有问题,但先写再读就会发生错误,只有个别的数值是对的,其余都是错的。求教各位大神帮助,已经困扰1个多月了。原理图里的com20020供电电压是5v,误标成3.3v,com20020的复位电路有问题,实际中已修改。
代码如下:
#include <reg52.h>
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit nRD = P3^7;
sbit nWR = P3^6;
sbit nINTR = P3^2;
static uchar i,j;
void write_reg(uchar reg_addr, uchar reg_data)
{
P2 = reg_addr;
P0 = reg_data;
nWR = 0;
nWR = 1;
}
uchar read_reg(uchar reg_addr)
{
uchar reg_data;
P2 = reg_addr;
nRD = 0;
reg_data = P0;
nRD = 1;
return (reg_data);
}
void main()
{
uchar r_data;
write_reg(0x87, 0x09);
r_data = read_reg(0x87);
P1 = r_data;
while(1);
}
|