从单片机基础到程序框架(全集 2019pdf版).pdf - 第587页

GoLeft() ; //“水平 气缸”往左 跑,上电初始 化时滑块处于 左边 GoUp(); / /“垂直气缸” 往上跑,上 电初始化时“ 机械臂”处于 上方 } void BeepO pen(void) { P3_4=0; } void BeepC lose(void ) { P3_4=1; } void GoLef t(void) / /“水平气缸”往 左跑 { P1_4=0; } void GoRig ht(void) // “…

100%1 / 836
if(Su16SensorUp_H_Cnt>=SENSOR_TIME)
{
Su16SensorUp_H_Cnt=0;
vGu8SensorUp=1; //此全局变量反馈经过滤波后“上感应器”当前电平的状态
}
}
}
void T0_time() interrupt 1
{
VoiceScan();
KeyScan();
SensorScan(); //用来识别和滤波开关感应器
if(1==vGu8RunTimerFlag&&vGu16RunTimerCnt>0) //用于控制运动延时的定时器
{
vGu16RunTimerCnt--;
}
TH0=0xfc;
TL0=0x66;
}
void SystemInitial(void)
{
TMOD=0x01;
TH0=0xfc;
TL0=0x66;
EA=1;
ET0=1;
TR0=1;
}
void Delay(unsigned long u32DelayTime)
{
for(;u32DelayTime>0;u32DelayTime--);
}
void PeripheralInitial(void)
{
//上电初始化气缸的开机位
GoLeft() ; //“水平气缸”往左跑,上电初始化时滑块处于左边
GoUp(); //“垂直气缸”往上跑,上电初始化时“机械臂”处于上方
}
void BeepOpen(void)
{
P3_4=0;
}
void BeepClose(void)
{
P3_4=1;
}
void GoLeft(void) //“水平气缸”往左跑
{
P1_4=0;
}
void GoRight(void) //“水平气缸”往右跑
{
P1_4=1;
}
void GoUp(void) //“垂直气缸”往上跑
{
P1_5=0;
}
void GoDown(void) //“垂直气缸”往下跑
{
P1_5=1;
}
void VoiceScan(void)
{
static unsigned char Su8Lock=0;
if(1==vGu8BeepTimerFlag&&vGu16BeepTimerCnt>0)
{
if(0==Su8Lock)
{
Su8Lock=1;
BeepOpen();
}
else
{
vGu16BeepTimerCnt--;
if(0==vGu16BeepTimerCnt)
{
Su8Lock=0;
BeepClose();
}
}
}
}
void KeyScan(void) //此函数放在定时中断里每 1ms 扫描一次
{
static unsigned char Su8KeyLock1;
static unsigned int Su16KeyCnt1;
//【启动】按 K1 的扫描识别
if(0!=KEY_INPUT1)
{
Su8KeyLock1=0;
Su16KeyCnt1=0;
}
else if(0==Su8KeyLock1)
{
Su16KeyCnt1++;
if(Su16KeyCnt1>=KEY_FILTER_TIME)
{
Su8KeyLock1=1;
vGu8KeySec=1; //触发 1 号键
}
}
}
/* 注释二:
* KeyTask 中只改变 Gu8RunStart 的值,用于总启动开关。而运动状态 Gu8RunStatus 是在运动函