我用atmega16做一个简单的例子
void uartrecieve(unsigned char * data1)
{
data1="on";
}
int main(void)
{
unsigned char *z;
DDRC=0xFF;
uartinit();
while(1)
{
uartrecieve(z);
if(strcmp(z,"on")==0)
{
PORTC =0xff;
_delay_ms(6000);
}
else
{
PORTC=0x03;
_delay_ms(6000);
}
}
}
我的问题是。。。为什么总是打印0x03。。。这两个值不应该相等吗?因此应该在PORTC上打印0xFF!???
最佳答案
您没有更新实际的字符串指针。
以下代码将按您的要求执行:
void uartrecieve(unsigned char ** data1)
{
*data1 = "on";
}
int main(void)
{
unsigned char *z;
DDRC=0xFF;
uartinit();
while(1)
{
uartrecieve(&z);
if(strcmp(z,"on")==0)
{
PORTC =0xff;
_delay_ms(6000);
}
else
{
PORTC=0x03;
_delay_ms(6000);
}
}
}