不知栽在超出数据类型错误这个地方多少次了,而这次我决定把它写出来,下面是错误的代码
- #include<reg51.h>
- #include<intrins.h>
- #define LED P1
- void delay(int x)
- {
- unsigned char i,j;
- for(i=0;i<x;i++)
- for(j=0;j<120;j++);
- }
- void main()
- {
- LED=0x7f;
- while(1)
- {
- LED=_crol_(LED,1);
- delay(300);
- }
- }
当定义void delay()值超过某一个值时比如300,流水灯就无法工作了。考虑过是数据溢出,但万万没想到的是x的值要赋给i,i的值溢出!故只需做如下改动。
- void delay(int x)
- {
- unsigned int i,j;
- for(i=0;i<x;i++)
- for(j=0;j<120;j++);
- }
希望以后不要再犯数据溢出的错误了。