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

📄 hand4.c

📁 自己利用AVR单片机做的机械臂源程序能自动抓取东西和一点关于嵌入式有用的东西
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#include <diy0206.c>
#pragma interrupt_handler timer1:7
#pragma interrupt_handler zhongduan:2
unsigned int time;
unsigned int time_1;
unsigned int time_2;
unsigned int time_3;
unsigned int time_4;

void zhongduan(void)

   {
     CLI(); //disable all interrupts
	 
     waist(1300);
	 delay_ms(1000);
	 waist(800);
	 //plier(2000);
	 OCR1AH = 0X00;
     OCR1AL = 0X6a;  
	 //慢速下降
	 wrist_2(1300);
	 delay_ms(50);
	 wrist_2(1250);
	 delay_ms(50);
	 wrist_2(1220); 
	 delay_ms(50);
	 wrist_2(1190);
	 delay_ms(50);
	 wrist_2(1160); 
	 delay_ms(50);
	 wrist_2(1130);
	 delay_ms(50);
	 wrist_2(1100);
	 delay_ms(50);
	 //plier(1000);//夹物体
	 OCR1AH = 0X00;
     OCR1AL = 0X45;
	 delay_ms(1000);
	 wrist_2(1400);
	 delay_ms(1000);
	 pedestal(1000);
	 delay_ms(1000);
	 wrist_2(1300);
	 delay_ms(100);
	 wrist_2(1250);
	 delay_ms(100);
	 wrist_2(1220); 
	 delay_ms(100);
	 wrist_2(1190);
	 delay_ms(100);
	 wrist_2(1160); 
	 delay_ms(100);
	 wrist_2(1130);
	 delay_ms(100);
	 wrist_2(1100);
	 delay_ms(100);
	 //plier(2000);
	 OCR1AH = 0X00;
     OCR1AL = 0X6a;
	 WDTCR=0X1F;
	 delay_ms(1000);
	 wrist_2(1400);
	 delay_ms(1000);
	 pedestal(1500);
	 delay_ms(100);
	
	 /*WDTCR=0X10;
	 DDRA=0XFF;
	 PORTA=0X00;
	 PORTA=0X00;*/
	 
	 SEI(); //re-enable interrupts
	 }


void timer1()
   {
  
   }	
   
   
void pedestal(int time_1)
 {
	time = 35;
	start_1:
	 PORTA = 0x10;
	 delay_us(time_1);
	 PORTA = 0x00;
	 delay_ms(18);
	 time--;
	 if(time > 0)
	   goto start_1;
 }	
    
void waist(int time_2)
 {
	time = 35;
	start_2:
	 PORTA = 0x03;
	 delay_us(time_2);
	 PORTA = 0x00;
	 delay_ms(18);
	 time--;
	 if(time > 0)
	   goto start_2;
 }
 
void wrist(int time_3)
 {
	time = 35;
	start_3:
	 PORTA = 0x04;
	 delay_us(time_3);
	 PORTA = 0x00;
	 delay_ms(18);
	 time--;
	 if(time > 0)
	   goto start_3;
 }
 
 void wrist_1(int time_3)
 {
	time = 20;
	start_3:
	 PORTA = 0x04;
	 delay_us(time_3);
	 PORTA = 0x00;
	 delay_ms(18);
	 time--;
	 if(time > 0)
	   goto start_3;
 }
 
 void wrist_2(int time_3)
 {
	time = 15;
	start_3:
	 PORTA = 0x04;
	 delay_us(time_3);
	 PORTA = 0x00;
	 delay_ms(18);
	 time--;
	 if(time > 0)
	   goto start_3;
 }
 
void plier(int time_4)
 {
	time = 35;
	start_4:
	 PORTA = 0x08;
	 delay_us(time_4);
	 PORTA = 0x00;
	 delay_ms(18);
	 time--;
	 if(time > 0)
	   goto start_4;
 }
 void WDT_off(void)
 {
  /* WDT 复位*/
  _WDR();
  /* 置位 WDTOE 和 WDE*/
  WDTCR |= (1<<WDTOE) | (1<<WDE);
  /* 关闭WDT */
  WDTCR = 0x00;
 }

void main()
{ 
    DDRA  = 0xFF;PORTA = 0x00;  
     //PA口输出,接8路LED指示灯
   DDRB  = 0xFF;PORTB = 0xff;
     //PB2声控开关信号输入口,pb0后去轻触开关,PB7~PB4输入(遥控器)
   DDRC  = 0x07;PORTC = 0xff;  
     //PC0蜂鸣器输出,PC7~PC5 CNY70探测信号输入端

⌨️ 快捷键说明

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