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

📄 text2.c

📁 motor_control.zip
💻 C
字号:

//////////COPYRIGHT RESERVED BY DU///////////////////////////

#include "c8051F020.h"
#include "intrins.h"
#include "CH452CMD.H"	// 定义常用命令码及外部子程序
#include "pin.h"
#include "math.h"
#include "key_display.h"
// Peripheral specific initialization functions,
// Called from the Init_Device() function

sbit LEDC	=	P3^4;
sbit BACK	=	P0^4;
sbit START	=	P0^5;
sbit SPOKER =   P0^6;
sbit IN0	=	P1^1;  //左
sbit IN1	=	P1^3;  //中
sbit IN2	=	P1^0;  //右
sbit IN3	=	P1^5;  //斜右
//sbit IN4	=	P1^2;  //斜左
sbit IN5	=	P1^2;  //正面左
sbit IN6	=	P1^6;  //正面右

uchar a,bb,c,d,e,f,g,right,left;
void Port_IO_Init()
{
    // P0.0  -  CEX0 (PCA),  Open-Drain, Digital
   // P0.1  -  CEX1 (PCA),  Open-Drain, Digital
       XBR0      = 0x10;	/*CEX0-->P0.0,CEX1-->P0.1*/
       XBR2      = 0x40;	
}

void Interrupts_Init()
{
    EIE1      = 0x08;  //使能PCA0中断 
	EIE2      = 0x20;
    EIP2      = 0x20;  
}
 

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    Reset_Sources_Init();
    PCA_Init();
	 //ADC_Init();
	//Voltage_Reference_Init();
    Port_IO_Init();
	Oscillator_Init();
    Interrupts_Init();
}
void speedchange(uchar duty,uchar i)
{
     if(i==0) PCA0CPH0 =(uchar)((100-duty)*2.56);		//把duty值转换,赋值给控制占空比的寄存器
	 if(i==1) PCA0CPH1=(uchar)((100-duty)*2.56); 

}
void main (void) 
{
   uchar modi=90,modi1=20,dem=10,t;
   Init_Device();/*初始化IO口,PCA初始化成频率输出方式*/
   CH452_Init();	  /* CH452初始化 */ 
   SPOKER=0;
   START=1;
	LEDC=1;
	IN0=1;
	IN1=1;
	IN2=1;
	IN3=1;
//	IN4=1;
	IN5=1;
	IN6=1;
	for(t=0;t<4;t++)
  		CH452_Write((CH452_DIG0+ (t<<8))|16);
   while (1)
   {
    
   
	f=IN5;
	g=IN6;
	//delayms(1);
	BACK=0;
	if(f==1&&g==0)
	{
	 CH452_Write(CH452_DIG0|1);
	 CH452_Write(CH452_DIG2|0);
	 speedchange(modi1,1);
	 speedchange(modi,0);
	 
	}
	else if(f==0&&g==1)
	{CH452_Write(CH452_DIG0|0);
	 CH452_Write(CH452_DIG2|1);
	 speedchange(modi1,0);
	 speedchange(modi,1);
	 
	}						
	else
	{  CH452_Write(CH452_DIG0|0);
	   CH452_Write(CH452_DIG2|0);
		speedchange(modi,1);
	 	speedchange(modi,0);
	}					
	//delayms(dem);
  
    }
	
}

/*PCA中断子程序*/
void PCA_ISR (void) interrupt 9
{
	//EIE2      = 0x00;
//	CF   = 0;           /*清溢出中断标志*/
	CCF0 = 0;			/*清匹配中断标志*/
//	EA =0;
	//PCA0CPH0 += 0x10;	/*改变波形的频率*/
} 
 /*键盘中断子程序
void led(void)  interrupt 19
{
  
	uchar key;
	EA = 0;
	key=CH452_Read();
 if(0x60==key)
	{  
	   delayms(10);
	   LEDC=~LEDC;	  
	   EA = 1;	
	} 

 
 

}  */

⌨️ 快捷键说明

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