📄 system.c
字号:
#include<spce061a_chf.h>
#include"bit.h"
#include"qiao2.h"
extern counter;
unsigned int sec=0;
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=0x0000;
*P_IOA_Dir=0x00ff;
*P_IOA_Attrib=0x00ff;
*P_IOA_Data=0x0000;
*P_INT_Ctrl=0x0004;//开始先不开EXIT1中断
*P_TimerA_Data = 0xff00;
//*P_TimerA_Ctrl = 0x03f0;
*P_TimerB_Data = 0xff7f;
//*P_TimerB_Ctrl = 0x0280;//调速度
asm("irq on");
}
///////////////////////////////////////////
//函数: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时候就不显示
}
}
///////////////////////////////////////////
//函数: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_2=1;
P0_3=0;
temp1=a[temp1];
if(temp1!=0)
{
for(i=0;i<8;i++)
{
if(temp1&0x80)
{
P0_0=1;//数据口
}
else
{
P0_0=0;
}
P0_1=1; //产生时钟,下降沿送出数据
asm("nop");
P0_1=0;
temp1<<=1;
}
P0_3=1;
}
}
///////////////////////////////////////////
//函数: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_6=1;
P0_7=0;
temp2=a[temp2];
for(i=0;i<8;i++)
{
if(temp2&0x80)
{
P0_4=1;//数据口
}
else
{
P0_4=0;
}
P0_5=1; //产生时钟,下降沿送出数据
asm("nop");
P0_5=0;
temp2<<=1;
}
P0_7=1;
}
///////////////////////////////////////////
//函数:void led(void)
//描述:平衡指示灯
//参数:无
//返回:无
/////////////////////////////////////////////
void led(void)
{
P1_15=1;
}
///////////////////////////////////////////
//函数:control_up(void)
//描述:控制电机上坡函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_up()
{
//*P_TimerA_Ctrl = speed1;//12/16
//*P_TimerB_Ctrl = speed2;//调速度13/16
P1_8=1;
P1_9=1;//加速上坡
P1_10=1;
P1_11=0;//方向轮不动
P1_12=0;
P1_13=1;
}
///////////////////////////////////////////
//函数:control_down(void)
//描述:控制电机下坡函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_down()
{
//*P_TimerA_Ctrl =speed1;//12/16
//*P_TimerB_Ctrl =speed2;//调速度13/16
P1_8=1;
P1_9=1;//加速上坡
P1_10=1;
P1_11=0;//方向轮不动
P1_12=0;
P1_13=1;
}
///////////////////////////////////////////
//函数:control_goback(void)
//描述:控制电机返回函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_goback()
{
P1_8=1;
P1_9=1;//加速上坡
P1_10=0;
P1_11=1;//方向轮不动
P1_12=1;
P1_13=0;
}
///////////////////////////////////////////
//函数: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()
{
P1_8=1;
P1_9=1;//停机函数
P1_10=1;
P1_11=0;
P1_12=1;
P1_13=0;
}
///////////////////////////////////////////
//函数:control_left(void)
//描述:控制电机右转函数
//参数:无
//返回:无
/////////////////////////////////////////////
void control_left()
{
P1_8=1;
P1_9=1;//停机函数
P1_10=0;
P1_11=1;
P1_12=0;
P1_13=1;
}
///////////////////////////////////////////
//函数:unsigned int timer(void)
//描述:时钟处理函数
//参数:无
//返回:返回时间
/////////////////////////////////////////////
/*unsigned int timer(void)
{
if(counter==0xffff)
{
sec+=1;
return sec;
}
return sec;
}*/
///////////////////////////////////////////
//函数:void delay(void)
//描述:延时函数
//参数:无
//返回:无
/////////////////////////////////////////////
void delay(void)
{
unsigned int kk=0xfff;
while(kk--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -