unsigned char bdata dd;
sbit LED1 = dd^0; //数据的位,达到控制164的位
sbit LED2 = dd^1;
sbit LED3 = dd^2;
sbit LED4 = dd^3;
sbit LED5 = dd^4;
sbit LED6 = dd^5;
sbit LED7 = dd^6;
sbit LED8 = dd^7;
void CtrlHandle(void)//送8位串行数据,只送i/o口
{
for(tempj=0;tempj <8;tempj++)
{
if((dd&0x80)==0x80) SDA=1;
else SDA=0;
SCL=0;
dd < <=1;
SCL=1;
}
}
main()
{
LED1=1;
LED2=0;
LED3=1;
LED4=1;
LED5 =1;
LED6 =0;
LED7 =1;
LED8 =0;
while(1)
{
CtrlHandle();
}
}
以上我是用最简单的方式来检查cpu能实现对164的控制
请问:
稳定后,164(QH~QA为多少,是否1011101)???
我用快速接触法,发现SDA一直都为0,当接其他口,下来LED也不亮??
请问DX,是不是我的程序有问题啊???
while(1)
{
CtrlHandle(); // 这个子程序执行一次后dd就变成0了,之后当然每次都输出0
}
}
这样改如何?
void CtrlHandle(void)//送8位串行数据,只送i/o口
{
code char mask[]={128,64,32,16,8,4,2,1};
unsigned char i;
for(i=0; i <8; i++)
{
SDA = dd & mask[i] ? 1 : 0;
SCL = 1;
SCL = 0;
}
}