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