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

📄 system.c

📁 这里有很多我自己做的凌阳单片机源程序
💻 C
字号:
#include<spce061a_chf.h>
#include"bit.h"
#include"qiao3.h"
extern counter;
unsigned int sec=0;
extern rr;
unsigned int a[10]={0x14,0xdd,0x38,0x98,0xd1,0x92,0x12,0xdc,0x10,0x90};
///////////////////////////////////////////
//函数:void init_IO(void)
//描述:IO口初始化
//参数:无
//返回:无
/////////////////////////////////////////////
void init_IO(void)
{
	*P_IOB_Dir=0xff00;
	*P_IOB_Attrib=0xff00;
	*P_IOB_Data=0x8000;
	*P_IOA_Dir=0xff00;
	*P_IOA_Attrib=0xff00;
	*P_IOA_Data=0x0000;
	*P_INT_Ctrl=0x0004;//开始先不开EXIT1中断	
	asm("irq off");
}
///////////////////////////////////////////
//函数:void display(unsigned int data)
//描述:显示函数
//参数:要显示的数据
//返回:无
/////////////////////////////////////////////
void display(unsigned int data)
{
	if(data>9)//大于10
	{
		SPI_1(data/10);
		SPI_2(data%10);
	}
	else
	{
		SPI_2(data);//十位数是0时候就不显示		
		SPI_1(0);//?????????????????????????????
	}
}
///////////////////////////////////////////
//函数:void SPI_1(unsigned int temp1)
//描述:显示十位数的模拟SPI程序,IOA0--AB,IOA1--CLK,IOA2--Clr,IOA3--VCC
//参数:要显示的数
//返回:无
/////////////////////////////////////////////
void SPI_1(unsigned int temp1)
{
	unsigned int i=0;
	P0_10=1;
	P0_11=0;
	temp1=a[temp1];
	if(temp1!=0)
	{
		for(i=0;i<8;i++)
		{			
			if(temp1&0x80)
			{
				P0_8=1;//数据口
			}
			else
			{
				P0_8=0;
			}		
			P0_9=1;	//产生时钟,下降沿送出数据
			asm("nop");	
			P0_9=0;								
			temp1<<=1;
		}
		P0_11=1;	
		*P_Watchdog_Clear=0x01;
	}
	*P_Watchdog_Clear=0x01;
	
}	
///////////////////////////////////////////
//函数:void SPI_2(unsigned int temp2)
//描述:显示个位数的模拟SPI程序IOA4--AB,IOA5--CLK,IOA6--Clr,IOA7--VCC
//参数:要显示的数
//返回:无
/////////////////////////////////////////////
void SPI_2(unsigned int temp2)
{
	unsigned int i=0;
	P0_11=1;
	P0_14=1;
	P0_15=0;
	temp2=a[temp2];	
	for(i=0;i<8;i++)
	{			
		if(temp2&0x80)
		{
			P0_12=1;//数据口
		}
		else
		{
			P0_12=0;
		}		
		P0_13=1;	//产生时钟,下降沿送出数据
		asm("nop");	
		P0_13=0;								
		temp2<<=1;
		*P_Watchdog_Clear=0x01;
	}	
	P0_15=1;
	*P_Watchdog_Clear=0x01;
}
//函数:control_up(void)
//描述:控制电机上坡函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_up(void)
{	
	P1_8=1;
	P1_9=1;
	P1_10=0;
	P1_11=1;
	P1_12=1;
	P1_13=0;

}
///////////////////////////////////////////
//函数:control_goback(void)
//描述:控制电机返回函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_goback(void)
{	
	P1_8=1;
	P1_9=1;
	P1_10=1;
	P1_11=0;
	P1_12=0;
	P1_13=1;
}
///////////////////////////////////////////
//函数:control_stop(void)
//描述:控制电机停机函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_stop(void)
{
	P1_8=0;
	P1_9=0;
	P1_10=0;
	P1_11=0;
	P1_12=0;
	P1_13=0;
}
///////////////////////////////////////////
//函数:control_right(void)
//描述:控制电机左转函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_right(void)
{	
	P1_8=1;
	P1_9=1;
	P1_10=0;
	P1_11=1;
	P1_12=0;
	P1_13=1;
	
}
///////////////////////////////////////////
//函数:control_left(void)
//描述:控制电机右转函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_left(void)
{	
	P1_8=1;
	P1_9=1;
	P1_10=1;
	P1_11=0;
	P1_12=1;
	P1_13=0;
}
///////////////////////////////////////////
//函数:void delay(void)
//描述:延时函数
//参数:无
//返回:无
/////////////////////////////////////////////
void delay(void)
{
	unsigned int kk=0xfff;
	while(kk--)
	{
		*P_Watchdog_Clear=0x01;
	}
}
///////////////////////////////////////////
//函数:unsigned int key_scan(void)
//描述:按键扫描函数
//参数:无
//返回:返回键值
/////////////////////////////////////////////
unsigned int key_scanf(void)
{
	
		if(P0_0==1)
		{
			delay();
			*P_Watchdog_Clear=0x01;
			if(P0_0==1)
			{
				while(P0_0==1)
				{
					*P_Watchdog_Clear=0x01;
				}
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(P0_1==1)
		{
			delay();
			*P_Watchdog_Clear=0x01;
			if(P0_1==1)
			{
				while(P0_1==1)
				{
					*P_Watchdog_Clear=0x01;
				}
				return 2;
			}
			else
			{
				return 0;
			}
		}
		else
		{
			return 0;
		}
	
	return 0;
}
///////////////////////////////////////////
//函数:void zonghe(void)
//描述:若连发挥一起测试的时候,先执行下面的程序段
//参数:无
//返回:无
/////////////////////////////////////////////
void zonghe(void)
{	
		while((P1_4==1)&(P1_5==1))
		{
			control_up();
			*P_Watchdog_Clear=0x01;
		}	
		control_stop();
		if(P1_4==0)
		{
ll:			while((P1_4!=0)|(P1_5!=0))
			{
				control_up();
				*P_Watchdog_Clear=0x01;
			}
			while((P1_4==0)|(P1_5==0))
			{
				control_up();
				*P_Watchdog_Clear=0x01;
			}			
			control_stop();
			while((P1_4==1)|(P1_5==0))
			{
				control_right();
				*P_Watchdog_Clear=0x01;
			}
			if(rr<18)
			{
				control_stop();
				goto ll;
			}
		}
		else //if(P1_5==0)
l2:		{
			while((P1_4!=0)|(P1_5!=0))
			{
				control_up();
			 	*P_Watchdog_Clear=0x01;  
			}
			while((P1_4==0)|(P1_5==0))
			{
				control_up();
				*P_Watchdog_Clear=0x01;  
			}		
			control_stop();
			while((P1_5==1)|(P1_4==0))
			{
				control_left();
				*P_Watchdog_Clear=0x01;
			}
			if(rr<18)
			{
				control_stop();
				goto l2;
			}	
	}   
}                                                                     

⌨️ 快捷键说明

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