添加几个相关的习题代码,并有一个疑惑(见下红色部分),望解答特定延时为1s #include #include unsigned int a; unsigned char i; unsigned temp; void delay(unsigned int z); void main() { temp= 0xfe; P1= temp; while(1) { for(i= 0; i < 8; i++) { temp= _crol_(temp,1); P1= temp; delay(1000); } } } void delay(unsigned int z) { unsignedint x,y; for(x= z;x > 0;x--) for(y= 120; y > 0; y--); } 这里有一点疑问:晶振的频率是11.0592MHz,为什么把Y值设定为120刚好是1ms呢??我是看视频学习的,讲解人只是用debug测试了一下,确实大致等于1ms,但是我没算懂~有知道的小伙伴可以回复一下解答我的疑惑。
使发光二极管2-4-6-8闪烁 间隔1000毫秒#include #include #define uchar unsigned char #define uint unsigned int uint a; uchar i; unsigned temp; void delay(uint z) { uintx,y; for(x= z;x > 0;x--) for(y= 120; y > 0; y--); } void main() { temp= 0xfd; P1= temp; while(1) { for(i= 0; i < 4; i++) { temp= _crol_(temp,2); P1= temp; delay(250); } } } 使发光二极管从右往左循环点亮间隔500毫秒,然后熄灭#include #include #define uchar unsigned char #define uint unsigned int uint a; uchar i; unsigned temp; void delay(uint z) { uintx,y; for(x= z;x > 0;x--) for(y= 120; y > 0; y--); } void main() { temp= 0xfe; P1= temp; delay(500); while(1) { for(i= 0; i < 7; i++) { temp= _crol_(temp,1); P1= temp; delay(500); } if(i== 7) temp= 0xff; } } 依次点亮LED1到LED8发光二极管间隔500毫秒#include #include #define uchar unsigned char #define uint unsigned int uint a; uchar i; unsigned temp; void delay(uint z) { uintx,y; for(x= z;x > 0;x--) for(y= 120; y > 0; y--); } void main() { temp= 0xfe; P1= temp; delay(500); while(1) { for(i= 0; i < 7; i++) { temp= temp << 1; P1= temp; delay(500); } } }
|