|
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml7456/wps1.jpg 第五期 使用delay函数来实现闪烁灯的效果 WTST可以增加程序运行的时钟,也就是加长了延长的时间
第六期 volatile 的本质volatile 是C语言的一个类型修饰符,它告诉编译器: "这个变量的值随时可能被意外改变,不要对它做任何优化,每次使用都必须从内存中重新读取。" void delay1(u16 ms)//简单延时函数,自适应主频,1毫秒*ms { volatile u16 i; volatile u32 j;//volatile关键字防止变量i,j被编译器优化 for(i = 0; i < ms;i++) for(j = 0;j < MAIN_Fosc / 9000;j++); } 特别注意: 在STC单片机中,sfr 和 sfr16 关键字定义的寄存器已经隐含了volatile属性,但用 #define 定义的XFR地址需要手动加 volatile: // 访问XFR(扩展特殊功能寄存器)的正确方式 #define CLKSEL (*(volatile unsigned char xdata *)0xfe00) #define CLKDIV (*(volatile unsigned char xdata *)0xfe01) #define HIRCCR (*(volatile unsigned char xdata *)0xfe02) volatile 的三大作用
第七期 移位法,实现流水灯的效果while(1) { for(i = 0;i < 8;i++) { P2 = ~(0x01 << i); //P2口正向流水灯,移位法 delayms(500); //延时500毫秒 } }.file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml7456/wps2.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml7456/wps3.jpgfile:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml7456/wps4.jpg
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml7456/wps5.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml7456/wps6.jpg
|