蓝桥杯单片机类的一些总结

写代码的一些注意点

1.每个基本模块写完要做基本的检测,不能等所有都写完再一起调试。

2.确定每个读取数据模块的使用次数和触发条件,如果多个模式使用,应注意读取方式。

不要再一个需要取用的模块里用一个需要实时更新的模块(如DS1302)。

一个数据需要再多个模式下使用就要单独独立出来或者在每次使用前都读取一次(典型的器件如DS1302)。

比如超声波再模式下0x121,秒读数是2的整数倍才可以读取数据。

如果把DS1302放在另一个如0x122的模式下。则秒读书无法变化,则可能无法读数。

解决方法:再每一个需要检测秒读数的地方都读一遍。或者再可以一直执行的地方读取数据。

3.延时和中断的应用,有延时的程序放主函数,没有延时的的程序放中断。

不要把有延时的代码放到中断函数中。

一些我遇见的报错总结

ERROR: PREPROCESSOR: MACROS TOO NESTED宏嵌套过多

ACTION: PARSING SOURCE-FILE

检查头文件是否嵌套

..\Driver\iic.c(10): error C202: 'P21': undefined identifier

检查C文件是否加头文件。

出现类似 0xA3这类报错的看样子没错的可能是多一个空格。

User\mian.c(161): warning C206: 'Pcf8591_Adc': missing function-prototype

User\mian.c(161): error C267: 'Pcf8591_Adc': requires ANSI-style prototype

编译问题:.c文件里的函数头文件未声明;

*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: _DATA_GROUP_
    LENGTH:  001CH
Program Size: data=112.3 xdata=0 code=5537

片内内存不足,可以将变量存储到片外ram中,例如:

xdata unsigned long ms = 0;

xdata unsigned long key_time;

如果代码未报错,烧录进单片机的程序有问题

仅单个模块出现问题

首先检查硬件部分,跳线帽有没有接好,例如独立按键和矩阵按键的条线帽,555测频时需要接跳线帽,超声波模块也需要接跳线帽。

如果没有问题,检查该模块代码内容上是否出现错误。

多个模块集体不响应

首先检查硬件部分,此时需要换一块开发板,再次尝试。

如果不行可能的原因再代码上。

把每个模块代码单独隔开。注释其他代码,单独烧录某个模块的代码。

如果只有某一模块不响应,可能这个模块存在大延时。这种问题极有可能出现与超声波模块中。、

定时器TR0没关或没开导致长时间等待。长时间读不到数值,没有返回值。

如果还是各个模块都不响应,极有可能在于中断未开,两个中断一定要开,总中断和用到的定时器中断。

关于蓝桥杯单片机类的一些经验之谈

首先单片机不是那么简单的,目前简单的原因是,有许多搞蓝桥杯单片机培训的,比如蚂蚁工厂科技,电子社,是他们把底层驱动,main函数的基本架构的方法写好了,大多数人都是再他们的构建的基础上去修改。如果大家都靠自己去写底层驱动,靠大家的经验去构建主函数。有一说一,大部分大一,大二的学生哪有这些做项目的经验。所以说如果,你想要比较轻松取得比较高的奖项的话,就需要你去学习他们得代码。个人而言,蚂蚁工厂科技的代码,模块化更好一点,便于学习和移植。就我个人而言,通过学习他们家的代码,对我一些其他实操的项目有很大的帮助。

其次在省赛之前一定会有几套模拟题,你可以不去买,但一定要搞到手。应为它们就是接下来省赛的考试范围,比如模拟题考了超声波,那你就一定要会,因为真的会考。

国赛的时候,建议带两块板子。因为跳线帽可能不够用。比如超声波和555测频一起考。

你可能感兴趣的:(c语言,51单片机,蓝桥杯)