迷宫鼠出厂主程序.docx

上传人:b****5 文档编号:8469766 上传时间:2023-01-31 格式:DOCX 页数:40 大小:23.50KB
下载 相关 举报
迷宫鼠出厂主程序.docx_第1页
第1页 / 共40页
迷宫鼠出厂主程序.docx_第2页
第2页 / 共40页
迷宫鼠出厂主程序.docx_第3页
第3页 / 共40页
迷宫鼠出厂主程序.docx_第4页
第4页 / 共40页
迷宫鼠出厂主程序.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

迷宫鼠出厂主程序.docx

《迷宫鼠出厂主程序.docx》由会员分享,可在线阅读,更多相关《迷宫鼠出厂主程序.docx(40页珍藏版)》请在冰豆网上搜索。

迷宫鼠出厂主程序.docx

迷宫鼠出厂主程序

/****************************************Copyright(c)****************************************************

**GuangzhouZHIYUANelectronicsCo.,LTD.

**

**

**

**--------------FileInfo---------------------------------------------------------------------------------

**Filename:

main.c

**LastmodifiedDate:

2011-03-11

**LastVersion:

V1.01

**Descriptions:

Themain()functionexampletemplate

**

**--------------------------------------------------------------------------------------------------------

**Createdby:

廖茂刚

**Createddate:

2008-02-14

**Version:

V1.00

**Descriptions:

MicroMouse615上的无记忆功能的走迷宫实验

**

**--------------------------------------------------------------------------------------------------------

**Modifiedby:

FanLinyun

**Modifieddate:

2011-03-11

**Version:

V1.01

**Descriptions:

移植到MicroMouse1752上

**

**Recheckedby:

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

#include"..\config.h"

#include"zlg7289.h"

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

按键宏定义

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

#defineKEY(1<<6)/*按键连接的端口*/

#defineKEY_PRESS()(!

(FIO2PIN&KEY))/*按键是否按下判断*/

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

IR相关宏定义

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

#defineIR_SIDE_LFT(1ul<<0)/*左方传感器输出的信号*/

#defineIR_DIG_LFT(1ul<<1)/*左前方传感器输出的信号*/

#defineIR_FRONT(1ul<<4)/*前方传感器输出的信号*/

#defineIR_DIG_RGT(1ul<<8)/*右前方传感器输出的信号*/

#defineIR_SIDE_RGT(1ul<<9)/*右方传感器输出的信号*/

#defineFRONT_SIDE_PWM_INDEX1/*左前右驱动传感器PWM索引号*/

#defineDIG_PWM_INDEX2/*左前右前驱动传感器PWM索引号*/

#definePWM_RESET()PWM1TCR=0x02/*PWM复位*/

#definePWM_START()PWM1TCR=0x05/*PWM使能*/

#definePWM_FRQ_SET(x)PWM1MR0=(FPCLK/(x))/*PWM频率设置*/

#defineFRONTSIDE_PWM_PULSE_SET(x)PWM1MR2=(x)/*左前右PWM占空比设置*/

#defineDIG_PWM_PULSE_SET(x)PWM1MR1=(x)/*左前右前PWM占空比设置*/

#defineFRONTSIDE_PWM_EN()PWM1PCR|=(1<<10)/*左前右PWM输出使能*/

#defineDIG_PWM_EN()PWM1PCR|=(1<<9)/*左前右前PWM输出使能*/

#defineFRONTSIDE_PWM_DIS()PWM1PCR&=~(1<<10)/*左前右PWM输出禁能*/

#defineDIG_PWM_DIS()PWM1PCR&=~(1<<9)/*左前右前PWM输出禁能*/

#defineIR_PIN_MODE_IN()FIO1DIR&=/*配置传感器检测引脚为输入*/\

~(IR_SIDE_LFT|IR_DIG_LFT|IR_FRONT|IR_DIG_RGT|IR_SIDE_RGT)

#defineIR_READ()FIO1PIN/*红外信号读取*/

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

电机相关宏定义

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

/*

*左电机接口

*/

#defineMT_LFT_A1(1<<2)

#defineMT_LFT_A2(1<<3)

#defineMT_LFT_B1(1<<4)

#defineMT_LFT_B2(1<<5)

/*

*右电机接口

*/

#defineMT_RGT_A1(1<<25)

#defineMT_RGT_A2(1<<26)

#defineMT_RGT_B1(1<<28)

#defineMT_RGT_B2(1<<29)

/*

*左电机拍数宏定义

*/

#defineMT_LFT_OFF()FIO2CLR=(MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2)

#defineMT_LFT_STEP1_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_A1

#defineMT_LFT_STEP2_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_A1|MT_LFT_B1

#defineMT_LFT_STEP3_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_B1

#defineMT_LFT_STEP4_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_A2|MT_LFT_B1

#defineMT_LFT_STEP5_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_A2

#defineMT_LFT_STEP6_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_A2|MT_LFT_B2

#defineMT_LFT_STEP7_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_B2

#defineMT_LFT_STEP8_SET()FIO2CLR=MT_LFT_A1|MT_LFT_A2|MT_LFT_B1|MT_LFT_B2;\

FIO2SET=MT_LFT_A1|MT_LFT_B2

/*

*右电机拍数宏定义

*/

#defineMT_RGT_OFF()FIO1CLR=(MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2)

#defineMT_RGT_STEP1_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_A1

#defineMT_RGT_STEP2_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_A1|MT_RGT_B1

#defineMT_RGT_STEP3_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_B1

#defineMT_RGT_STEP4_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_A2|MT_RGT_B1

#defineMT_RGT_STEP5_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_A2

#defineMT_RGT_STEP6_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_A2|MT_RGT_B2

#defineMT_RGT_STEP7_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_B2

#defineMT_RGT_STEP8_SET()FIO1CLR=MT_RGT_A1|MT_RGT_A2|MT_RGT_B1|MT_RGT_B2;\

FIO1SET=MT_RGT_A1|MT_RGT_B2

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

ADC宏定义

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

#defineADC_SMP_ON()AD0CR|=(1<<24)/*ADC采样开始*/

#defineADC_DATA_READY_FLG()(ADSTAT&(1<<5))/*ADC采样结束判断*/

#defineADC_DATA_GET()((ADDR5>>4)&0xFFF)/*ADC数据获取*/

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

定时器宏定义

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

#defineTIMER0_INT_CLR()T0IR=0x01/*定时器0清中断标志*/

#defineTIMER1_INT_CLR()T1IR=0x01/*定时器1清中断标志*/

#defineTIMER0_LOAD_SET(x)T0TCR=0x02;/*定时器0装载值设定*/\

T0MR0=x;\

T0TCR=0x01

#defineTIMER1_LOAD_SET(x)T1TCR=0x02;/*定时器1装载值设定*/\

T1MR0=x;\

T1TCR=0x01

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

迷宫类型宏定义

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

#defineMAZETYPE8/*8:

四分之一迷宫;16:

全迷宫*/

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

前进一个迷宫格步进电机需要走的步数宏定义

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

#defineONEBLOCK125

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

电脑鼠状态宏定义

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

#defineSTOP0/*电脑鼠停止*/

#defineGO_AHEAD1/*电脑鼠前进*/

#defineTURN_LEFT3/*电脑鼠向左转*/

#defineTURN_RIGHT4/*电脑鼠向右转*/

#defineTURN_BACK5/*电脑鼠向后转*/

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

传感器宏定义

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

#defineLEFT0/*左方传感器*/

#defineFRONTL1/*左前方传感器*/

#defineFRONT2/*前方传感器*/

#defineFRONTR3/*右前方传感器*/

#defineRIGHT4/*右方传感器*/

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

电机状态宏定义

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

#defineMOTOR_STOP0/*电机停止*/

#defineWAITONE_STEP1/*电机暂停一步*/

#defineMOTOR_RUN2/*电机运行*/

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

常量宏定义--电机运行方向

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

#defineMOTOR_GO_AHEAD0/*电机前进*/

#defineMOTOR_GO_BACK1/*电机后退*/

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

结构体定义

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

structmotor{

volatileINT8ScState;/*电机运行状态*/

volatileINT8ScDir;/*电机运行方向*/

volatileINT32UulPulse;/*电机需要转动的步数*/

volatileINT32UulPulseCtr;/*电机已转动的步数*/

volatileINT32SlSpeed;/*电机转动速度*/

};

typedefstructmotorMOTOR;

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

定义全局变量

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

staticMOTORGmRight={MOTOR_STOP,MOTOR_GO_AHEAD,0,0,0};/*定义并初始化右电机状态*/

staticMOTORGmLeft={MOTOR_STOP,MOTOR_GO_AHEAD,0,0,0};/*定义并初始化左电机状态*/

staticvolatileINT8UGucMouseState=STOP;/*保存电脑鼠当前运行状态*/

staticINT32UGulAccelTable[300]={0};/*电机加减速各阶段定时器值*/

staticINT32SGlMaxSpeed=60;/*保存允许运行的最大速度*/

staticvolatileINT8UGucDistance[5]={0};/*记录传感器状态*/

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

**Functionname:

myDelay

**Descriptions:

软件延时

**inputparameters:

延时时间,单位为us

**outputparameters:

**Returnedvalue:

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

voiddelayMs(INT32UulTime)

{

INT32Ui;

while(ulTime--){

for(i=0;i<(FCCLK/1000/3);i++);

}

}

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

**Functionname:

lftMtCtrl

**Descriptions:

左步进电机驱动时序

**inputparameters:

GmLeft.cDir:

电机运行方向

**outputparameters:

**Returnedvalue:

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

voidlftMtCtrl(void)

{

staticI

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1