⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 C
📖 第 1 页 / 共 2 页
字号:
//实现功能:彩条下移
//参数:	无
//返回值:	无
//============================================================================================
void ColorLineOff()
{
	unsigned char SelRow = 0x0100,j;
	for(j=0;j<8;j++)
	{	                             	     
		F_ClearWatchdog();                           //清看门狗
		SP_Export(P_IOA_Data,0xffff);             //显示
		SP_Export(P_IOB_Data,SelRow);
		delay(40);
		SelRow = SelRow<<1;                          //下移 
	}
}

//============================================================================================
//语法格式:void ColorLineUpOff(void)
//实现功能:彩条上下对移
//参数:	无
//返回值:	无
//============================================================================================
void ColorLineUpOff()
{
	unsigned char SelRow = 0x0100,j;
	unsigned char SelRow1 = 0x8000;
	for(j=0;j<4;j++)
	{
		F_ClearWatchdog();	                              //清看门狗	     
		SP_Export(P_IOA_Data,0xffff);                  //显示
		SP_Export(P_IOB_Data,SelRow);
		delay(40);
		SP_Export(P_IOA_Data,0xffff);                  //显示
		SP_Export(P_IOB_Data,SelRow1);
		delay(40);
		SelRow = SelRow<<1;                               //下移
		SelRow1 = SelRow1>>1;                             //上移
	}
}

//============================================================================================
//语法格式:void ColorLineLeft(void)
//实现功能:彩条左移
//参数:	无
//返回值:	无
//============================================================================================
void ColorLineLeft()
{
	unsigned char SelRow = 0x8000,j;
	for(j=0;j<8;j++)
	{
		F_ClearWatchdog();	                          //清看门狗	     
		SP_Export(P_IOA_Data,SelRow);              //显示
		SP_Export(P_IOB_Data,0xffff);
		delay(40);
		SelRow = SelRow>>1;                           //左移
	}
}

//============================================================================================
//语法格式:void ColorLineRight(void)
//实现功能:彩条右移
//参数:	无
//返回值:	无
//============================================================================================
void ColorLineRight()
{
	unsigned char SelRow = 0x0100,j;
	
	for(j=0;j<8;j++)
	{
		F_ClearWatchdog();	                          //清看门狗
		SP_Export(P_IOA_Data,SelRow);              //显示                    
		SP_Export(P_IOB_Data,0xffff);
		delay(40);
		SelRow = SelRow<<1;                           //右移
	}
}

//============================================================================================
//语法格式:void ColorLineRightLeft(void)
//实现功能:彩条左右移
//参数:	无
//返回值:	无
//============================================================================================
void ColorLineRightLeft ()
{
	unsigned char SelRow = 0x0100,j;
	unsigned char SelRow1 = 0x8000;
	for(j=0;j<4;j++)
	{
	 	F_ClearWatchdog();	                          //清看门狗
		SP_Export(P_IOA_Data,SelRow);              //显示
		SP_Export(P_IOB_Data,0xffff);
		delay(40);
		SP_Export(P_IOA_Data,SelRow1);             //显示
		SP_Export(P_IOB_Data,0xffff);
		delay(40);
		SelRow = SelRow<<1;                           //右移
		SelRow1 = SelRow1>>1;                         //左移
	}
}

//============================================================================================
//语法格式:void ColorLineRightLeftUpOff (void)
//实现功能:彩条上下左右对移
//参数:	无
//返回值:	无
//============================================================================================
void ColorLineRightLeftUpOff ()
{
	unsigned char SelRow =  0x0100,j;
	unsigned char SelRow1 = 0x8000;
	for(j=0;j<4;j++)
	{
		F_ClearWatchdog();	                    //清看门狗	     
		SP_Export(P_IOA_Data,SelRow);        //显示
		SP_Export(P_IOB_Data,0xffff);
		delay(40);
		SP_Export(P_IOA_Data,0xffff);        //显示
		SP_Export(P_IOB_Data,SelRow);
		delay(40);		
		SP_Export(P_IOA_Data,SelRow1);       //显示
		SP_Export(P_IOB_Data,0xffff);
		delay(40);
		SP_Export(P_IOA_Data,0xffff);        //显示
		SP_Export(P_IOB_Data,SelRow1);
		SelRow = SelRow<<1;                     //下移或者右移
		SelRow1 = SelRow1>>1;                   //上移或者左移
	}
}
//============================================================================================
//语法格式:unsigned int KeyDataChange(unsigned int Key_Data)
//实现功能:键值译码程序,
//参数:	unsigned int Key_Data-键值  
//返回值:	0~9-数字值;
//			10~12-功能键;
//			0xff-非法键值;
//============================================================================================
unsigned int KeyDataChange(unsigned int Key_Data)
{
	switch(Key_Data)
	{
		case KEY_0: Key_Data = 7;break;
		case KEY_1: Key_Data = 8;break;
		case KEY_2: Key_Data = 9;break;
		case KEY_3: Key_Data = 0;break;
		case KEY_4: Key_Data = 4;break;
		case KEY_5: Key_Data = 5;break;
		case KEY_6: Key_Data = 6;break;
		case KEY_7: Key_Data = 0;break;
		case KEY_8: Key_Data = 1;break;
		case KEY_9: Key_Data = 2;break;
		case KEY_A: Key_Data = 3;break;
		case KEY_B: Key_Data = 0;break;
		case KEY_C: Key_Data = 0;break;
		case KEY_D: Key_Data = 0;break;
		case KEY_E: Key_Data = 0;break;
		case KEY_F: Key_Data = 0;break;
		default: Key_Data = 0xff;break;
	}
	return Key_Data;
}
//=============================================================================================== 
// 语法格式: int  main(void)
// 实现功能: 主函数
// 参数:	无
// 返回值:	无
//============================================================================================
int  main(void)
{
	
	unsigned char KeyVal;       //保存键码    
    unsigned char i = 0;
	InitialPort();
	
	Key_Init();					//初始化键盘扫描,在Key.asm当中定义
	
	KeyFlag = 0;
	Keycode = 10;	
	SP_INT_128Hz();	
	while(1)
	{	   
		Keycode = Key_Get();										//获取键值
		if(Keycode!=0)
		{
		    Off_IRQ(); 
		    Keycode = KeyDataChange(Keycode);						 //转换键值,使之变为适合设计需要的键值
		    DisplayVal(Keycode);                                     //显示键值		    	
	    	switch(Keycode)
		    {
			   case 1:ColorLineUp(); break;                          //红条上移
		       case 2:ColorLineOff();break;                          //红条下移 
		       case 3:ColorLineUpOff();break;                        //红条上、下对移
		       case 4:ColorLineLeft();break;                         //红条左移
		       case 5:ColorLineRight();break;                        //红条右移
		       case 6:ColorLineRightLeft();break;                    //红条左右对移
		       case 7:ColorLineRightLeftUpOff();break;               //红条左右、上下移动
		       case 8:TestLed();break;		                         //点亮红灯后点亮绿灯,之后点亮红绿灯  
		       case 9:colorCol();break;		                         //彩条移动
		       case 0:WalkMan();break;	                             //移动的小人
		       default:break;				    		         
		   	}
			Int_IRQ();
		}
		F_ClearWatchdog();	                    //清看门狗
    }
	return 0;

}

//*******************************************************************************************/
// void SP_Init_IOA(int A,int B,int C); 来自于Hardware.asm,API接口函数。IOA初始化。A,方向向
//     量单元,B数据单元,C属性向量单元
// void SP_Init_IOB(int A,int B,int C); 来自于Hardware.asm,API接口函数。IOB初始化。A,方向向
//     量单元,B数据单元,C属性向量单元
// void SP_INT_128Hz(); 来自于SYSTEM.asm,.TMB2选择128Hz
// void F_Get_Key();来自于key.asm,取键值函数
// void F_Show(int A,int B);点亮LED;A,LED的位数(C_Dig),B,LED的显示值
// main.c 结束
//*******************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -