不知栽在超出数据类型错误这个地方多少次了,而这次我决定把它写出来,下面是错误的代码

 
  
  1. #include<reg51.h> 
  2. #include<intrins.h> 
  3. #define LED P1 
  4. void delay(int x) 
  5. unsigned char i,j; 
  6.     for(i=0;i<x;i++) 
  7.         for(j=0;j<120;j++); 
  8. void main() 
  9.     LED=0x7f; 
  10.     while(1) 
  11.     { 
  12.     LED=_crol_(LED,1); 
  13.     delay(300); 
  14.     } 

当定义void delay()值超过某一个值时比如300,流水灯就无法工作了。考虑过是数据溢出,但万万没想到的是x的值要赋给i,i的值溢出!故只需做如下改动。

 
  
  1. void delay(int x) 
  2. unsigned int i,j; 
  3.     for(i=0;i<x;i++) 
  4.         for(j=0;j<120;j++); 

希望以后不要再犯数据溢出的错误了。