📄 machine_control.c
字号:
#include "reg52.h"
#include "absacc.h"
#define uchar unsigned char
#define SLAVE 0x01
// sbit light_1=P1^O;
//sbit light_2=P1^2;
sbit key_1=P1^0;
sbit key_2=P1^2;
uchar code step1_abcd[4]={0x1f,0x2f,0x4f,0x8f};
uchar code step2_abcd[4]={0x8f,0x4f,0x2f,0x1f};
bit flag=1;
int ptemp=500;
uchar p=0;
uchar q=1,ready;
void step_control()
{
if(q==0)
{
P0=step1_abcd[p];
if(p>=3)
p=0;
else
p++;
}
else if(q==1)
{
P0=step2_abcd[p];
if(p>=3)
p=0;
else
p++;
}
else if(q==3);
}
void time_delay(int t)
{
int i;
while(t--)
for(i=0;i<200;i++)
{;;;;;
}
}
void reachmassege()interrupt 4 using 1
{
uchar a;
while(RI!=1);RI=0;
ES=0;
if(flag)
{
a=SBUF;
if(a!=0x01){key_1=~key_1;goto reti;} //判断地址
flag=0;
SM2=0;
SBUF=SLAVE; //回送地址
while(TI!=1);TI=0; //等待发完
while(RI!=1);RI=0; //等待接受命令
}
if(SBUF==0xff){key_2=~key_2;SM2=1;ES=1;flag=1;goto reti;}
a=SBUF; //若不是复位则接受命令
if(a==0x00)
{
if(ready==1)SBUF=0x01;
else SBUF=0x00;
while(TI!=1);TI=0;
while(RI!=1);RI=0; //命令控制
if(SBUF==0xff){SM2=1;ES=1;flag=1;goto reti;}
else if(SBUF==0x01)
q=0;
else if(SBUF==0x02)
q=1;
else if(SBUF==0x03)
q=3;
}
flag=0;
reti:
ES=1;
}
void main()
{ flag=1;
TMOD=0x20;
TL1=0xfa;
TH1=0xfa;
PCON=0x00;
TR1=1;
SCON=0xf0;
ES=1;
EA=1;
key_1=1;
key_2=0;
ready=0x01;
while(1)
{time_delay(30);
step_control();
//key_1=~key_1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -