📄 main.c
字号:
#include <stdlib.h>
#include <string.h>
#include "..\inc\option.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\def.h"
void Isr_Init(void);
void HaltUndef(void);
void HaltSwi(void);
void HaltPabort(void);
void HaltDabort(void);
void Quit(void);
void ClearScreen(void);
void SMG_SHOW(U16 value);
void DCrun0(void);
void DCrun1(void);
void DCrun2(void);
void DCrun3(void);
void DCrun4(void);
void DCrun5(void);
void DCrun6(void);
void DCrun7(void);
void STEP_motor1(void);
void STEP_motor2(void);
void STEP_motor3(void);
void STEP_motor4(void);
void STEP_motor5(void);
void STEP_motor6(void);
void STEP_motor7(void);
U16 key_read();
void Read_value(int data);
volatile U8 value,valu=16;
int data;
U16 FunctionKey=0xffff;//功能键扫描吗,0有效
U16 val[4][4]={
{12,13,14,15},
{8,9,10,11},
{4,5,6,7},
{0,1,2,3},
};
unsigned char Scandata[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
/****************************************************************
My first S344B0 Application
***************************************************************/
void Main(void)
{
rSYSCFG=CACHECFG;
Port_Init();
Uart_Init(0,115200);
Uart_Select(0);
// Isr_Init();
Delay(0); //calibrate Delay()
Uart_Printf("\n\n\n\n ----StepMotor & DCMotor Experiment----\n");
Uart_Printf("\n\nS3C44B0X Test Program Ver 0.00 rSYSCFG=0x%x MCLK=%d\n",rSYSCFG,MCLK);
Uart_Printf("\n 请按实验系统键盘操作:\n");
Uart_Printf("\n 1:步进电机低速正转 2:步进电机中速正转 3:步进电机高速正转");
Uart_Printf("\n 5:步进电机低速反转 6:步进电机中速反转 7:步进电机高速反转");
Uart_Printf("\n 9:直流电机低速正转 a:直流电机中速正转 b:直流电机高速正转");
Uart_Printf("\n d:直流电机低速反转 e:直流电机中速反转 f:直流电机高速反转");
Uart_Printf("\n 0、4、8、c:停止直流、步进电机\n\n\n");
while(1)
{
key_read();
if(valu<8)
{
rPDATD &=0xf0;
if(valu==0)
STEP_motor7();
if(valu==1)
STEP_motor1();
if(valu==2)
STEP_motor2();
if(valu==3)
STEP_motor3();
if(valu==4)
STEP_motor7();
if(valu==5)
STEP_motor4();
if(valu==6)
STEP_motor5();
if(valu==7)
STEP_motor6();
}
else
{
rPDATA &= 0x0;
if(valu==8)
DCrun0();
if(valu==9)
DCrun1();
if(valu==10)
DCrun2();
if(valu==11)
DCrun3();
if(valu==12)
DCrun4();
if(valu==13)
DCrun5();
if(valu==14)
DCrun6();
if(valu==15)
DCrun7();
}
}
}
void DCrun0(void)
{
Uart_Printf("直流电机停止运行\r");
rPDATD &=0xf0; //gpD0,1,2,3:00 00,stop
}
void DCrun1(void)
{
Uart_Printf("直流电机低速正转\r");
rPDATD &=0xf6;
rPDATD |=0x06; //gpd0,1,2,3:01 10,run
Delay(70);
rPDATD &=0xf2;
rPDATD |=0x02; //gpd0,1,2,3:00 10,stop
Delay(100); //正传
}
void DCrun2(void)
{
Uart_Printf("直流电机中速正转\r");
rPDATD &=0xf6;
rPDATD |=0x06; //gpd0,1,2,3:01 10,run
Delay(140);
rPDATD &=0xf2;
rPDATD |=0x02; //gpd0,1,2,3:00 10,stop
Delay(100); //正传
}
void DCrun3(void)
{
Uart_Printf("直流电机高速正转\r");
rPDATD &=0xf6;
rPDATD |=0x06; //gpd0,1,2,3:01 10,run
Delay(100);
// rPDATD &=0xf2;
// rPDATD |=0x02; //gpd0,1,2,3:00 10,stop
// Delay(10); //正传
}
void DCrun4(void)
{
Uart_Printf("直流电机停止运行\r");
rPDATD &=0xf0; //gpd0,1,2,3:00 00,stop
}
void DCrun5(void)
{
Uart_Printf("直流电机低速反转\r");
rPDATD &=0xf9;
rPDATD |=0x09; //gpd0,1,2,3:1001,run
Delay(70);
rPDATD &=0xf8;
rPDATD |=0x08; //gpd0,1,2,3:1000,stop
Delay(100); //反转
}
void DCrun6(void)
{
Uart_Printf("直流电机中速反转\r");
rPDATD &=0xf9;
rPDATD |=0x09; //gpd0,1,2,3:1001,run
Delay(140);
rPDATD &=0xf8;
rPDATD |=0x08; //gpd0,1,2,3:1000,stop
Delay(100); //反转
}
void DCrun7(void)
{
Uart_Printf("直流电机高速反转\r");
rPDATD &=0xf9;
rPDATD |=0x09; //gpd0,1,2,3:1001,run
Delay(100);
// rPDATD &=0xf8;
// rPDATD |=0x08; //gpd0,1,2,3:1000,stop
// Delay(10); //反转
}
void STEP_motor1(void)
{
Uart_Printf("步进电机低速正转\r");
rPDATA=0x7;
Delay(1000);
rPDATA=0xb;
Delay(1000);
rPDATA=0xd;
Delay(1000);
rPDATA=0xe;
Delay(1000);
}
void STEP_motor2(void)
{
Uart_Printf("步进电机中速正转\r");
rPDATA=0x7;
Delay(500);
rPDATA=0xb;
Delay(500);
rPDATA=0xd;
Delay(500);
rPDATA=0xe;
Delay(500);
}
void STEP_motor3(void)
{
Uart_Printf("步进电机高速正转\r");
rPDATA=0x7;
Delay(200);
rPDATA=0xb;
Delay(200);
rPDATA=0xd;
Delay(200);
rPDATA=0xe;
Delay(200);
}
void STEP_motor4(void)
{
Uart_Printf("步进电机低速反转\r");
rPDATA=0xe;
Delay(1000);
rPDATA=0xd;
Delay(1000);
rPDATA=0xb;
Delay(1000);
rPDATA=0x7;
Delay(1000);
}
void STEP_motor5(void)
{
Uart_Printf("步进电机中速反转\r");
rPDATA=0xe;
Delay(500);
rPDATA=0xd;
Delay(500);
rPDATA=0xb;
Delay(500);
rPDATA=0x7;
Delay(500);
}
void STEP_motor6(void)
{
Uart_Printf("步进电机高速反转\r");
rPDATA=0xe;
Delay(200);
rPDATA=0xd;
Delay(200);
rPDATA=0xb;
Delay(200);
rPDATA=0x7;
Delay(200);
}
void STEP_motor7(void)
{
Uart_Printf("步进电机停止运行\r");
rPDATA=0x0;
}
U16 key_read()
{
int i;
char gets;
// do{
rPDATC = rPDATC & 0xfffe;//置GPC0为低,扫描键盘第四行
rPDATC = rPDATC | 0xe; //GPC1、2、3为高
i=3;
Read_value(i);
rPDATC = rPDATC & 0xfffd;//置GPC1为低,扫描键盘第三行
rPDATC = rPDATC | 0xd; //GPC0、2、3为高
i=0;
Read_value(i);
rPDATC = rPDATC & 0xfffb;//置GPC2为低,扫描第二行键盘
rPDATC = rPDATC | 0xb; //GPC0、1、3为高
i=1;
Read_value(i);
rPDATC = rPDATC & 0xfff7;//置GPC3为低,扫描第一行键盘
rPDATC = rPDATC | 0x7; //GPC0、1、2为高
i=2;
Read_value(i);
// gets=Uart_GetKey();
// }while(!gets); //按任意键退出
//while(value!='0');
// Uart_Printf("\nSMG And Key Test finished!\n");
}
void Read_value(int data)
{
if((rPDATE & 0x8) == 0)
{
valu=val[data][3];
}
if((rPDATE & 0x10) == 0)
{
valu=val[data][2];
}
if((rPDATE & 0x40) == 0)
{
valu=val[data][1];
}
if((rPDATE & 0x80) == 0)
{
valu=val[data][0];
}
// value=Scandata[valu];
// Uart_Printf("\r keyvalue is %c \r",value); //显示键值
}
void Isr_Init(void)
{
pISR_UNDEF=(unsigned)HaltUndef;
pISR_SWI =(unsigned)HaltSwi;
pISR_PABORT=(unsigned)HaltPabort;
pISR_DABORT=(unsigned)HaltDabort;
//rINTCON=0x1; // Vectored Int. IRQ enable,FIQ disable
rINTCON=0x5; // Non-vectored,IRQ enable,FIQ disable
rINTMOD=0x0; // All=IRQ mode
rINTMSK=BIT_GLOBAL; // All interrupt is masked.
}
void HaltUndef(void)
{
Uart_Printf("Undefined instruction exception!!!\n");
while(1);
}
void HaltSwi(void)
{
Uart_Printf("SWI exception!!!\n");
while(1);
}
void HaltPabort(void)
{
Uart_Printf("Pabort exception!!!\n");
while(1);
}
void HaltDabort(void)
{
Uart_Printf("Dabort exception!!!\n");
while(1);
}
void Quit(void)
{
Uart_Printf("Programe end successfully.\n");
while(1);
}
void ClearScreen(void)
{
int i;
for (i=0; i<24; i++)
Uart_Printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -