蓝桥杯之单片机设计与开发(3)——重新认识LED程序设计

在昨天,将I/O模式下的程序与MM模式下的程序都按照源代码修改完善后调试出
来,在晚上睡觉的时候看了一点教学视频有所感悟,这位老师讲解的挺详细的,我也学到了一些新的知识点。

蓝桥杯大赛-单片机设计与开发基础技能训练教程
蓝桥杯之单片机设计与开发(3)——重新认识LED程序设计_第1张图片下面我详细的讲解一下我今天所学所悟。

  1. main.c(49): error C267: ‘test’: requires ANSI-style prototype
    这个是我遇到的第一个问题。
    蓝桥杯之单片机设计与开发(3)——重新认识LED程序设计_第2张图片
    原代码:
/********************************************************
@功能模块:工程函数的.c文件
@作    者:朱明
@时    间:2020129*********************************************************/

#include "test.h"
void test(unsigned char i)  //单片机使用核心工程文件
{

	P0 = 0xff << i;	          //右移点亮(老师指导的移位操作)
	//这样写不仅占有资源少,而且方便简单
	
}
/*
	switch(led)      //最开始自己想到的流水的核心代码
	{
		case 1:  P0 = 0xF1;
							   break;
	    case 2:  P0 = 0xF2;
							   break;
	    case 3:  P0 = 0xF3;
							   break;
		case 4:  P0 = 0xF4;
							   break;
		case 5:  P0 = 0xF5;
							   break;
		case 6:  P0 = 0xF6;
							   break;
		case 7:  P0 = 0xF7;
							   break;
		case 8:  P0 = 0xF8;
							   break;
*/
		

下面是.c文件对应的.h文件,错误就是在.h文件的声明格式不一样

//--工程函数的.h文件
#ifndef _TEST_H_
#define _TEST_H_   //主要用于防止重复包含

#include<reg52.h>

/*********************************************************
#include<reg52.h>
//void Function();
宏,常量,以及一些枚举类型···
*********************************************************/
void test();     //--这里就是问题所在
#endif

修改过后的正确代码如下:

#ifndef _TEST_H_
#define _TEST_H_   //主要用于防止重复包含

#include<reg52.h>

/*******************************************************
#include<reg52.h>

//void Function();
宏,常量,以及一些枚举类型···
********************************************************/
void test(unsigned char i);    //--修改过后
#endif
 问题不算太大,但是对于初学者来说,解决了算是前进一大步
  1. main.c(65): warning C206: ‘testa’: missing function-prototype
    这个是我遇到的第二个问题
    这个问题就不详细解释了,原因是我在加上一个代码模块的时候,没有在最开始部分进行函数声明及缺失
#include <reg52.h>
#include "mode.h"
#include "delay.h"
#include "test.h"
#include "testa.h"   //缺失部分

今天算是对代码的编译加深了了解,详细的介绍在上面那位老师的视频中有代码的讲解,我对于移位操作还是不能熟练,不然就不需要再建立模块了,不知道为什么是我单片机移位的空间大小的问题还是向左移-1不等于向右移1,希望有朋友可以帮我解答一下。

//主函数部分代码,上面有test的代码,testa就是取反了一下
			while(1)
			{
				for(i=1; i<=8; i++)  //正向依次全部点亮
				{
					test(i);
					delay(j);
				}
				
				for(a=1; a<=8; a++)  //反向依次全部熄灭
				{
					testa(a);
					delay(j);
				}		
			}	
	}

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