📄 system.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 + -