keil调试如下程序时,提示错误: warning C280:'even':unreferenced local variable 等,跪求解答啊!

#include<reg52.h>
void delay_even_us(unsigned char even)//任意偶数的us级延时
{
#pragma asm
mov a,r7
subb a,#10H
mov b,#02H
div ab
mov r0,a
nop
loop:
djnz r0,loop
#pragma endasm
}

void delay_odd_us(unsigned char odd)//任意奇数的us级延时
{
#pragma asm
mov a,r7
subb a,#0fH
mov b,#02H
div ab
mov r0,a
loop1:
djnz r0,loop1
#pragma endasm
}

void main()
{
delay_even_us(20);
delay_even_us(100);
delay_even_us(450);
delay_odd_us(33);
delay_odd_us(101);
delay_odd_us(45);
}

情况是正常的 因为你函数括号中定义的形参在函数内部没有得好使用,所以会弹出这个warning。

不过程序是没有错的 因为你在c中嵌入汇编。而编译器是keil。keil会自动将函数中的参数传递给R7,这也就是 MOV A,R7这句话中为什么要使用R7的原因。

综上所述,这是一个欺骗了编译器的程序。表面上是没有使用函数参数,实际上确使用了^_^
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-11

    void display(uchar a,uchar b,uchar c,uchar d)-----------提示这句出错。

    意思就是虽然你使用a传进来一个参数,但是你在这个函数里却没有使用。

    如果display使用不到a这个参数,就直接去掉就可以了。

    这是一个警告,在这里没有什么影响,可以正常运行。

unreferenced local variable的作用:

    unreferenced:未引用的。

    local:局部的。

    variable:变量。

    这是一个warning,对程序没什么影响,可以不理会。

本回答被网友采纳
第2个回答  2012-12-04
这不是错误只是一个警告 你的even和odd这两个变量没有使用到 提示你一下
第3个回答  2012-12-04
这不是错误,只是警告。意思你申请的这2个参数没有使用。
相似回答