P0的任意位访问
在for循环中,没法用 P0_i 实现每次循环都访问不同的位
解决方案为:
将想要的位,通过移位指令移到最低位,再对其他位逻辑与0,清0。
for(i=0;i<8;i++)
{
State[i]=(0x01)&(P2>>i);//实现每一位都送人了state数组
}
模块化编程的extern
如:delay.c 中有一变量A。main.c中想用A
则需delay.c先定义全局变量A:int A=0;
再在main.c中定义:extern int A;
则在main.c中即可使用int A
或者extern int A;放在delay.h中,main.c再include delay.h文件就行了
switch用法易错点
用法
switch (表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
┇
case 常量表达式n: 语句n:break;
default: 语句n+1
}
易错点
case的语句的最后一定要加break;
如果不加的话后面的语句会被继续执行。
例如:如下图程序所示,student=10,应循环case10,输出“学生人数为10人”,但因为没有break,继续switch循环还会执行case20,输出“学生人数为20人”,case20这句语句含有break,结束循环。
这样就会出现问题,程序要求应当只需要输出“学生人数为10人”即可,但实际程序输出了两个printf。若在case10后加上break,则正确。

本文总结了Keil C编程中的算法优化技巧,包括如何进行P0的任意位访问,理解模块化编程中extern的作用,以及避免在switch用法中的常见错误。在位操作中,通过移位指令实现P0口的位访问;extern关键字用于在不同源文件间共享变量,确保模块化编程的协同;同时强调了switch语句中case分支末尾添加break的重要性,以防止意外的连续执行。
&spm=1001.2101.3001.5002&articleId=129495231&d=1&t=3&u=6dd360f0e0d64b90abb1cc2ec1023134)
3948

被折叠的 条评论
为什么被折叠?



