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

📄 common.h

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 H
字号:


#ifndef __COMMON_H
#define __COMMON_H
	
 typedef unsigned char uchar;
 typedef unsigned int  uint;
 
 #include <iom16v.h> 
 #include "motor.h"  
 #include "main.h"
 #include "schedule.h"	  	
 #include "alarm.h"
 #include "check.h"
	
	
 #ifndef TRUE
 #define FALSE 0
 #define TRUE (!FALSE)
 #endif

	
 #define SEI()	asm("sei")
 #define CLI()	asm("cli")
 #define NOP()	asm("nop")
 #define WDR() 	asm("wdr")		    //内部看门狗复位
	
	
  #define   MOTOR_1 PC1				//电机控制引脚定义
  #define   MOTOR_2 PC0	

  #define ClrMotor1()  PORTC &= ~(1<<MOTOR_1)	
  #define SetMotor1()  PORTC |= (1<<MOTOR_1)
  #define ClrMotor2()  PORTC &= ~(1<<MOTOR_2)	
  #define SetMotor2()  PORTC |= (1<<MOTOR_2)


  #define DIRECTION PA1	 //默认为1(正序),否则反序
  #define GetDirection() (PINA & (1<<DIRECTION))

  //电机状态
  #define LIMIT_CLOSE PA4		//机械关限位
  #define GetLimit1() (!(PINA & (1<<LIMIT_CLOSE)))
  //#define GetLimitClose() (!(PINA & (1<<LIMIT_CLOSE)))

  #define LIMIT_OPEN  PA3		//机械开限位
  #define GetLimit2() (!(PINA & (1<<LIMIT_OPEN)))
  //#define GetLimitOpen() (!(PINA & (1<<LIMIT_OPEN)))
  
  		  				 		//获得限位状态
   #define GetLimit() (GetLimit1()||GetLimit2())								
  //#define GetLimit() (GetLimitClose()||GetLimitOpen())
 
  
  
  #define MOTOR_OVERHEAT PA2		//电机过热为高,温度正常为低
  #define GetOverheat() (PINA & (1<<MOTOR_OVERHEAT))


  //本地旋扭控制,旋扭的处理需要延时处理!
  #define LOCAL_CLOSE PC6		 //本地关
  #define GetLocalClose() (!(PINC & (1<<LOCAL_CLOSE)))

  #define LOCAL_OPEN  PC7		 //本地开
  #define GetLocalOpen() (!(PINC & (1<<LOCAL_OPEN)))


  #define LOCAL  PA6	   		 //本地
  #define GetLocal() (!(PINA & (1<<LOCAL)))

  #define REMOTE  PA5			 //远程	
  #define GetRemote() (!(PINA & (1<<REMOTE)))
 
  //远程触点控制   
  #define REMOTE_MODE PA0	 //1为三线控制(点动),0为四线控制(开关停)
  #define GetRemoteMode() (PINA & (1<<REMOTE_MODE))

  #define REMOTE_STOP PD3                             //远程停
  #define GetRemoteStop() (!(PIND & (1<<REMOTE_STOP)))

  #define REMOTE_CLOSE PD4                            //远程关
  #define GetRemoteClose() (!(PIND & (1<<REMOTE_CLOSE)))

  #define REMOTE_OPEN PD5                             //远程开
  #define GetRemoteOpen() (!(PIND & (1<<REMOTE_OPEN)))


  //LED状态指示,到达限位是相应led需闪烁报警
  #define   REMOTE_LED PB6
  #define   LOCAL_LED PB5	
  #define	MIDDLE_LED PB7	//未使用,可以用闪烁指示点击正在动作

  #define   SetLocalLed()  (PORTB &= ~(1<<LOCAL_LED))	   //本地指示
  #define   ClrLocalLed()  (PORTB |= (1<<LOCAL_LED))

  #define   SetRemoteLed()  (PORTB &= ~(1<<REMOTE_LED))   //远程指示
  #define   ClrRemoteLed()  (PORTB |= (1<<REMOTE_LED))

  #define   SetMiddleLed()  (PORTB &= ~(1<<MIDDLE_LED))   //中间位置指示
  #define   ClrMiddleLed()  (PORTB |= (1<<MIDDLE_LED))


  //远程触点反馈
  #define S1 PD6		//未使用  
  #define S2 PD7		//未使用

		
#endif

⌨️ 快捷键说明

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