蓝桥杯单片机易错点(深夜学习——单片机)

蓝桥杯单片机易错点(深夜学习——单片机)一 使用标志位时记得在判断成功后清除标志位 if count 500 sprintf SEG COT 4u 02u year u16 month SEG TSL SEG COT SEG Code if month 12 month 0 month

大家好,我是讯享网,很高兴认识大家。

一、使用标志位时记得在判断成功后清除标志位

 if(count == 500) { sprintf(SEG_COT, "%4u--%02u", year,(u16)month); SEG_TSL(SEG_COT,SEG_Code); if(month == 12) month = 0; month++; count = 0; }

讯享网

二、使用定时器前记得初始化定时器,用STC-ISP生成定时器初始化时记得开中断

三、除了主函数外的函数,局部变量必须显式初始化

当你定义一个局部变量时,编译器会从堆栈中分配一定的内存给这个局部变量,而这个局部变量的初值是否为”0“我们是不能保证的,因为分配内存的地址是随机的,这个地址可能是其他函数用过的或者是第一次进入本函数用过的(这时候局部变量就相当于静态局部变量了)

例:


讯享网

讯享网/* 输入变量:num,一个小于65535的数;D_num,存放分割好数据的数组 输出变量: 功能:将一个小于65535数的每一位分割出来 */ void SEG_TSL(u8 *input,u8 *output) { u8 i=0,temp=0,j; for(i=0;i<8;i++,j++) { switch(input[j]) { case '0': temp = 0xc0; break; case '1': temp = 0xf9; break; case '2': temp = 0xa4; break; case '3': temp = 0xb0; break; case '4': temp = 0x99; break; case '5': temp = 0x92; break; case '6': temp = 0x82; break; case '7': temp = 0xf8; break; case '8': temp = 0x80; break; case '9': temp = 0x90; break; case 'A': temp = 0x88; break; case 'B': temp = 0x83; break; case 'C': temp = 0xc6; break; case 'D': temp = 0xA1; break; case 'E': temp = 0x86; break; case 'F': temp = 0x8E; break; case 'H': temp = 0x89; break; case 'L': temp = 0xC7; break; case 'N': temp = 0xC8; break; case 'P': temp = 0x8c; break; case 'U': temp = 0xC1; break; case '-': temp = 0xbf; break; case ' ': temp = 0xff; break; default: temp = 0xff; } if(input[j+1] == ".") { temp &= 0x7f; j++; } output[i] = temp; } }

我们可以看到定义的j变量,由于我一开始没有对它置数导致j就在一直累加,而在我当时的想法它只是一个局部变量,初值一定为"0",然后我就大错特错了。

四、除了自己事先编写好的函数要引用,我们现场写的具体功能的函数也要记得引用,例如:按键检测的函数

五、并不是所有寄存器上电后都默认为0x00,AUXR辅助寄存器上电后默认为0x01

六、“\0”不等于‘\0'

void Uart_1_TX_String(u8 *S_dat) { while(*S_dat != "\0") { SBUF = *S_dat; while(TI == 0); TI = 0; S_dat++; } }

本来while中我是想判断当传入数据为空字符时跳出的,但是用了双引号表示字符串而不是字符,判断就出错了,然后我就想看看“\0”是什么,结果好像是乱码

小讯
上一篇 2025-02-26 12:26
下一篇 2025-02-05 15:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17114.html