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. void display(uchar a,uchar b,uchar c,uchar d)-----------提示这句出错。

  2. 意樱答思就是虽然你使用唯颂歼a传进来一个参数,但是你在这个函数里却没有使用。

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

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


这不是错误只是一个警告 你的even和odd这两个变量没有使用到 提示你一下
这不是错误,只是警告。意思你申请的这2个参数没有使用。