📄 2.c
字号:
#include <reg52.h>
#define T1MS_1200bps 0xD8; /* (e8,-24,SMOD=0) @4800bps pcon&=0x7f @11.0592MHz*/
#define T1MS_2400bps 0xEC; /* (f4,-12,SMOD=0) @4800bps pcon&=0x7f */
#define T1MS_4800bps 0xfa; /* (fa, -6,SMOD=0) @4800bps pcon&=0x7f */
#define T1MS_9600bps 0xfd; /* (fd, -3,SMOD=0) @9600bps pcon&=0x7f */
#define T1MS_19k2bps 0xfd; /* (fd, -3,SMOD=1) @19.2kbps pcon|=0x80 */
unsigned char z,i,flag,a;
unsigned int receivesbuf[]={0};
sbit left1=P0^4;
sbit left2=P0^5;
sbit right1=P0^6;
sbit right2=P0^7;
//延时
void delay5ms(void)
{
unsigned int TempCyc = 1000;
while(TempCyc--);
}
/*********************************
函数名:sel_bps(select bps)
功能:设置串口波特率
sel为选择通讯速率:
0=1200,1=2400,2=4800,3=9600,4=19.2k
作者:于振南
日期:06.02.25
*********************************/
void sel_bps(unsigned char sel)
{
switch(sel)
{
case 0:PCON&=0x7f;
TH1=T1MS_1200bps; /* T1 use sio */
TL1=T1MS_1200bps;
break;
case 1:PCON&=0x7f;
TH1=T1MS_2400bps; /* T1 use sio */
TL1=T1MS_2400bps;
break;
case 2:PCON&=0x7f;
TH1=T1MS_4800bps; /* T1 use sio */
TL1=T1MS_4800bps;
break;
case 3:PCON&=0x7f;
TH1=T1MS_9600bps; /* T1 use sio */
TL1=T1MS_9600bps;
break;
case 4:PCON|=0x80;
TH1=0xfd; /* T1 use sio */
TL1=0xfd;
break;
}
}
/*********************************
函数名:tran_init()(tranmit initialize)
功能:串口初始化
通讯有关参数初始化
作者:于振南
日期:06.02.25
包含子函数:sel_bps
*********************************/
void tran_init() /* 通讯有关参数初始化 */
{
sel_bps(3); /* 选择通讯速率:0=1200,1=2400,2=4800,3=9600,4=19.2k */
/* T1 use sio */
TMOD=0x21; /* T1=MODE2,sio; T0=MODE1,16bit,use time */
PS=1; /* SIO int high 优先级 */
EA=1;
ET1=0;
SM0=0;
SM1=1; /* SM0=0 SM1=1,mode1,10bit */
SM2=0; /* data int,无校验(TB8=bit_duble偶) */
TR1=1;
REN=1;
RI=0;
TI=0;
ES=1;
SBUF=0x00;
}
/*********************************
函数名:sio_int(sio interrupt)
功能:中断方式接收串口数据 把收到的一个字节放在z中
通讯有关参数初始化
作者:于振南
日期:06.02.25
*********************************/
void sio_int() interrupt 4 using 2
{
i++;
ES=0;
if(RI)
{
a=SBUF;
RI=0;
flag=1;
}
/* if(RI) // RI==1
{
receivesbuf[i]=SBUF;
RI=0;
} */
// ES=1;
/*if(i==4)
{
i=0;
ES=0;
flag=1;
} */
}
/*void trans(unsigned char dat)
{
SBUF=dat;
while(!TI);
TI=0;
}*/
void main()
{
tran_init();
while(1)
{
if(flag==1)
{
//if(receivesbuf[1]==0xf0&&receivesbuf[2]==0x0f)
// {
if(a/*receivesbuf[3]*/==0x01) //前进
{
left1=1; //左轮
left2=0;
right1=1; //右轮
right2=0;
}
else if(a/*receivesbuf[3]*/==0x02) //后退
{
left1=0; //左轮
left2=1;
right1=0; //右轮
right2=1;
}
else if(a/*receivesbuf[3]*/==0x04) //左转
{
left1=1; //左轮
left2=0;
right1=0; //右轮
right2=0;
}
else if(a/*receivesbuf[3]*/==0x08) //右转
{
left1=0; //左轮
left2=0;
right1=1; //右轮
right2=0;
}
else
{
P0=0x00;
}
}
flag=0;
ES=1;
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -