現象如下
無標題.png (242.78 KB, 下載次數: 72)
下載附件
2019-6-16 20:10 上傳
不斷復位
順序執行到一半就總是莫名其妙復位
單片機源代碼如下
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define GPIO_KEY P1
sfr WDT_CONTR=0xe1;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit IN1=P1^5;
sbit IN2=P1^6;
sbit IN3=P1^7;
sbit IN4=P1^0;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u8 KeyValue;
u8 kkj[4];
u16 k=0;
u16 pn=0;
u8 qw1,qw2,qw3,qw4;
u8 redata;
u8 rst[]="AT+RST\r\n";
u8 mod[]="AT+CWMODE=3\r\n";
u8 wico[]="AT+CWJAP=\"Nick\",\"qweasdzxc\"\r\n";
u8 sev[]="AT+CIPSTART=\"TCP\",\"192.168.43.31\",8080\r\n";
u8 mods[]="AT+CIPMODE=1\r\n";
u8 sen[]="AT+CIPSEND\r\n";
u8 idre[]="This is vehicle\r\n";
void UsartInit()
{
SCON=0X50;
T2CON=0X34;
PCON=0X80;
RCAP2H=(65536-39)/256;
RCAP2L=(65536-39)%256;
ES=1;
EA=1;
WDT_CONTR=0x01;
}
void delay(u16 i)
{
while(i--);
}
void Delay_xms(u16 x)
{
u16 i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
void KeyDown(void)
{
char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)
{
delay(1000);
if(GPIO_KEY!=0x0f)
{
//2aêÔáD
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//2aêÔDD
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
if(KeyValue==10)
{
k=k;
}
else
{
kkj[k]=KeyValue;
k=k+1;
if(k==4)
{
k=0;
}
}
while((a<50)&&(GPIO_KEY!=0xf0))
{
delay(1000);
a++;
}
}
}
}
void send_byte(u8 by)
{
SBUF = by;
while(!TI);
TI = 0;
}
void send_string(u8 *p)
{
while(*p!= '\0')
{
send_byte(*p);
p++;
}
}
void MotorCW(void)
{
u8 i;
for(i=0;i<4;i++)
{
if(i==0)
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
}
if(i==1)
{
IN1=0;
IN2=1;
IN3=0;
IN4=0;
}
if(i==2)
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
if(i==3)
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
}
Delay_xms(4);
}
pn=pn+1;
}
void del(u16 n)
{
unsigned int i=0;
for(i=0;i<n;i++)
{
#pragma asm
DEL3:MOV R0,#100
DEL2:MOV R1,#100
DEL1:MOV R2,#25
DEL0:NOP
NOP
DJNZ R2,DEL0
DJNZ R1,DEL1
DJNZ R0,DEL2
#pragma endasm
}
}
/**************************************************************************************************************************************************************/
void main()
{
UsartInit();
del(1);
send_string(rst);
del(1);
send_string(mod);
del(1);
send_string(wico);
del(10);
send_string(sev);
del(10);
send_string(mods);
del(5);
send_string(sen);
del(3);
send_string(idre);
del(1);
while(1)
{
KeyDown();
if(KeyValue==11)
{
kkj[0]=0;
kkj[1]=0;
kkj[2]=0;
kkj[3]=0;
k=0;
}
if(KeyValue==10)
{
kkj[0]=kkj[0]+48;
kkj[1]=kkj[1]+48;
kkj[2]=kkj[2]+48;
kkj[3]=kkj[3]+48;
send_string(kkj);
kkj[0]=0;
kkj[1]=0;
kkj[2]=0;
kkj[3]=0;
k=0;
KeyValue=0;
}
qw1=kkj[0];
qw2=kkj[1];
qw3=kkj[2];
qw4=kkj[3];
LSA=1;LSB=1;LSC=0;
P0=smgduan[qw1];
delay(100);
P0=0x00;
LSA=0;LSB=1;LSC=0;
P0=smgduan[qw2];
delay(100);
P0=0x00;
LSA=1;LSB=0;LSC=0;
P0=smgduan[qw3];
delay(100);
P0=0x00;
LSA=0;LSB=0;LSC=0;
P0=smgduan[qw4];
delay(100);
P0=0x00;
if(redata=='B')
{
MotorCW();
if(pn==256)
{
Delay_xms(1000);
pn=0;
redata='A';
}
}
}
}
void Usart() interrupt 4
{
if(RI!=0)
{
redata=SBUF;
RI=0;
}
}
|