单片机控制机械手

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "head.h"

#include

#include

/****************************************************************************** ******

Filename : Robot system

Processor : MC9S08DZ60CLH

FileFormat: V1.0

DataSheet : MC9S08DZ60.pdf

Compiler : CodeWarrior compiler

Date/Time : 20.8.2009

Author : XiongXinpeng

Pcbversion: qyss900-02-00pcb-v02

(c) Copyright 2009-2012

File-Format-Revisions:

- 09.09.2009,V1.0

******************************************************************************* ******/

/***************************************************

X_axis

****************************************************/

/***************************************************

Input: none

Output: none

parameter: none

Function: initMCU

***************************************************/

void initMCU(void) //单片机mcu设置

{

MCGC1=0x88; //多功能时钟发生器设置

MCGC2=0x76;

MCGC3=0x00;

while(!(MCGSC&0x02)) //当多功能时钟发生器处于fll或pll 模式且bdc调试器时钟不活动完成多功能时钟发生器设置

;

SOPT1=0x00; //通信接口设置TxD在PTF0,RxD在PTF1,SCL

在PTF2,SDA在PTF3;COP时钟源是1khz

SOPT2=0x00;

IRQSC=0x13; // irq中段设置

PTDDD=0xBF; //I/O口D口方向设置PTD6输入,其余输出

PTDD=0xBF;

PTDSC=0x03; //禁止d 口中段

PTDPE=0x40;

PTDPS=0x40;

PTDES=0x00;

//RTCSC=0x1D;

}

/***************************************************

Input: none

Output: none

parameter:none

Function: main function

***************************************************/

void main(void)

{

byte i=1;

register word j=0,k=0;

DisableInterrupts; //关中断

initMCU(); //单片机mcu初始化

//Initsci1();

Initsci2(); //sci初始化

InitCanBus(); //Can初始化

EnableInterrupts; //开中断

delay(1);

Motor0CpDir=1; //**改动修改//置PTG2,PTG3输入

Motor0PowDir=1;

Motor0Cp=1;

Motor0Pow=1;

Rest_Flag=1; //置复位标志Rest_Flag为1

delay(5);

for(;;)

{

if(Rest_Flag==1) //复位

{

delay(20);

Motor0Cp=1;

PWM_Immutably_CH0();

Rest_Flag=0; //清零接收主机发送的复位信号标志

Can_ReFlage[1]=0;

i=1;

Point_count=1;

Relay_RunFlag=0; //标志位清0

Can_ReFlage[5]=0;

Can_ReFlage[7]=0;

Can_buffer_Flag[0]=0;

Can_buffer_Flag[1]=0;

}

asm nop;

if(Irq_Intrput_Flag==1) ////irq中段程序x

{

Irq_Intrput_Flag=0; //清零中段标志位

Motor0Cp=1;

PWM_2kHz_CH0(224); //回原点

Motor0Cp=0;

PWM_2kHz_CH0(224);

Can_ReFlage[1]=0;

i=1;

Point_count=1;

Relay_RunFlag=0; //标志位清0

Can_ReFlage[5]=0;

Can_ReFlage[7]=0;

Can_buffer_Flag[0]=0;

Can_buffer_Flag[1]=0;

IRQSC=0x13; //irq重新打开

}

//如果传感器动作

if(Can_ReFlage[4]==1)

{

i=1;

Can_ReFlage[4]=0; // 传感器动作标志清零

CAN_Send_data_0(); // 从机发送完成复位/动作信号

delay(10);

相关文档
最新文档