迷宫鼠出厂主程序Word文件下载.docx
- 文档编号:21606006
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:40
- 大小:23.50KB
迷宫鼠出厂主程序Word文件下载.docx
《迷宫鼠出厂主程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《迷宫鼠出厂主程序Word文件下载.docx(40页珍藏版)》请在冰豆网上搜索。
**Modifiedby:
FanLinyun
**Modifieddate:
移植到MicroMouse1752上
**Recheckedby:
*********************************************************************************************************/
#include"
..\config.h"
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&
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
软件延时
**inputparameters:
延时时间,单位为us
**outputparameters:
无
**Returnedvalue:
voiddelayMs(INT32UulTime)
{
INT32Ui;
while(ulTime--){
for(i=0;
i<
(FCCLK/1000/3);
i++);
}
}
lftMtCtrl
左步进电机驱动时序
GmLeft.cDir:
电机运行方向
voidlftMtCtrl(void)
staticI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迷宫 出厂 主程序