/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU RC Demo -----------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the */
/* article, please specify in which data and procedures from STC */
/*------------------------------------------------------------------*/
/************* 以下宏定义用户请勿修改 **************/
#include "reg51.H"
#include "INTRINS.H"
#include "MATH.h"
#define uchar unsigned char
#define uint unsigned int
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xB1;
sfr P3M0 = 0xB2;
sfr AUXR = 0x8e;
sbit POUT=P3^4;
sbit LED=P3^3;
sbit KEYQZ=P3^0;
sbit KEYQY=P3^5;
sbit KEYHZ=P3^1;
sbit KEYHY=P3^2;
/************* 本地常量声明 **************/
/************* 本地变量声明 **************/
uchar Fsmun;
uint DataH,DataL;
uchar KeyData;
uint TimeM;
bit TEND;
/************* 本地函数声明 **************/
void InitTimer(void);
//void DelayMs(uint a);
void ReadKey(void);
/************* 外部函数和变量声明 *****************/
/********************* 主函数 *************************/
void main(void)
{
P3M1=0x00;
P3M0=0x18;
InitTimer();
TEND=0;
while(1)
{
ReadKey();
}
}
void ReadKey(void)
{
KeyData=P3&0x27;
if(KeyData==0x07)//前右
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
else if(KeyData==0x23)//后右
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
else if(KeyData==0x25)//后左
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
else if(KeyData==0x26)//前左
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
else if(KeyData==0x06)//前右前左
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
else if(KeyData==0x21)//后左后右
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
else if(KeyData==0x05)//前右后左
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
else if(KeyData==0x22)//前左后右
{
Fsmun=200;
TEND=1;
while(Fsmun);
TEND=0;
//1
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//2
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//3
Fsmun=100;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
//4
Fsmun=50;
while(Fsmun);
Fsmun=50;
TEND=1;
while(Fsmun);
TEND=0;
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
Fsmun=250;
while(Fsmun);
}
}
// 1T i<600 12T i<125
/*
void DelayMs(uint a)
{
uint i;
while(--a != 0 )
{
for(i=0;i<600;i++);
}
} */
/**************** Timer初始化函数 ******************************/
void InitTimer(void)
{
AUXR = 0xC0;
TL1 = 0xFB;
TH1 = 0xFE;
ET1 = 1;
TR1 = 1;
EA = 1;
}
/********************** Timer0中断函数************************/
void timer1 (void) interrupt 3 //13us
{
if(Fsmun>0)Fsmun--;
if(TEND)
{
POUT=~POUT;
LED=1;
}
else
{
POUT=0;
TimeM++;
if(TimeM>40000)
{
TimeM=0;
LED=~LED;
}
}
}
- 1
- 2
- 3
前往页