stm8模拟ht12e向HT12D发码
时间:10-02
整理:3721RD
点击:
void delay_us(void)//8us
{
_asm("nop"); // per 0.5us
_asm("nop");
_asm("nop");
_asm("nop");
}
void HT12D_W(void)
{
unsigned int x, i,j,temp=0x77F;
for(i=0;i<3;i++)
{
for(j=0;j<12;j++)
{
Trans=(temp&0x001);
temp=temp>>1;
delay_us();
}
}
}不能控制ht12d呢 那位大神帮忙看下
{
_asm("nop"); // per 0.5us
_asm("nop");
_asm("nop");
_asm("nop");
}
void HT12D_W(void)
{
unsigned int x, i,j,temp=0x77F;
for(i=0;i<3;i++)
{
for(j=0;j<12;j++)
{
Trans=(temp&0x001);
temp=temp>>1;
delay_us();
}
}
}不能控制ht12d呢 那位大神帮忙看下
temp=0x77F,是八进制,然后向左一位,高位是致0吧。Trans应该是全局变量,其他的都是局部变量,返回的是空值。也就是通过不断延时,不断循环,最后是要改变Trans值,然后主函数再调用这个值。再仔细看看是不是 Trans=(temp&0x001);这个地方的值不咋地。
问题确实是出在Trans=(temp&0x001);上但是不是你说的这个问题,因为Trans是IO口的定义,所以逻辑不能直接判断,另外,0x000是十六进制,>>这样的方式是向右进移位,谢谢回帖