我的移位写子函数程序如下:
void write(uchar date)
{
uchar temp=0,i;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
SDA=CY;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
这样调试过是没问题的。
但是我改为这样:
先定义个 sbit ACC7=ACC^7;
然后
void write(uchar date)
{
uchar i;
ACC=date;
for(i=0;i<8;i++)
{
SDA=ACC7;
ACC=ACC<<1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
这样就不行了。读取的数是255,无论事先存什么数到AT24C02,读回来的都是255。有高手能帮忙吗?
一、选择题(共30分)1、8051有( B )内部ROM。A.0K B.4K C.8K D.64K2、在使用8031时,EA信号引脚应( A )。A.接地 B.接电源 C.悬空 D.接地址线3、下列说法不正确的是( D )。A.复位后,CPU使用“0”组工作寄存器B.内部RAM00H—1FH单元为工作寄存器组使用的区间C.执行RETI指令时,CPU不响应中断D.8051不可连接两个以上的外部中断源4、8051单片机堆栈的容量不能超过( C )字节。A.32 B.64 C.128 D.2565、单片机复位后,SP、PC、I/O口的内容为( C )A.SP = 07H PC = 00H P0 = P1 = P2 = P3 = FFHB.SP = 00H PC = 0000H P0 = P1 = P2 = P3 = 00HC.SP = 07H PC = 0000H P0 = P1 = P2 = P3 = FFHD.SP = 00H PC = 00H P0 = P1 = P2 = P3 = 00H 6、在MCS-51单片机中,当有压入或弹出堆栈操作时,SP的内容将随之增大或减小;程序计数器PC的内容将始终指示下一条将要执行指令的地址,所以只要改变PC的内容将改变程序的运行路径。SP的内容与PC的内容( B )。A.都是8位地址 B.都是16位地址C.位数相同 D.位数不同7、若A=00H,下列指令中( D )执行后,CY=0。A.SUBB A,#01H B.DEC A C.CJNE A,#01H,REL D.ORL C,/ACC.08、下列指令中,不影响堆栈指针的指令是(B)。A.RET B.JB bit,relC.LCALL addr16 D.RETI9、在进行串行通信时,若两机的发送与接收可以同时进行,则称为( D )。A.半双工传送  
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息