📄 main.c.bak
字号:
/*-------------------------
32(MICKEY) -->S1,S3 -->P0.5
33(KEY++) -->S2 -->P0.4
18(MICLED) -->D4 -->P2.0
31 -->SDA -->P0.6
30 -->SCL -->P0.7
5 -->RXD -->P3.0
7 -->TXD -->P3.1
-------------------------*/
#include <reg52.h>
#include "key.h"
#include "iic.h"
#include "delay.h"
#define ADDR 0x20 //定义读写地址
unsigned char OPEN[4] ={0X01,0X02,0X03,0XFC};
unsigned char CLOSE[4]={0X02,0X02,0X03,0XFC};
unsigned char BLINK[4]={0X03,0X02,0X05,0XFC};
unsigned char getflag[4];
unsigned char writedata[16];
unsigned char readdata[16];
unsigned char i=0;
unsigned char j=0;
unsigned char k=0;//循环计数变量
void InitBaudRate(void);//初始化波特率38400bps
void main()
{
MICLED=OFF; //LED默认熄灭
InitTimer2();
InitBaudRate();
while(1) //循环检测按键
{
KeyStatus();
KeyDeal();
}
}
void InitBaudRate(void) //38400bps
{
SCON =0X50;
TMOD =0X20;
TH1 =253;
TL1 =253;
PCON =0X80;
TR1 =1;
TI =0;
RI =0;
EA =1;
ES =1;
}
void ES_INTERRUPT(void) interrupt 4
{
if(RI==1)
{
//关闭中断
EA =0;
//数据暂存
getflag[i++] =SBUF;
if(i>3||SBUF==0XFC) i=0;
writedata[j]=SBUF;
if(j>15) j=0;
j++;
//判断读写
if(SBUF==0X2A)//读写开始字符*
{
j=0;
i=0;
}
if(SBUF==0X23)//读写结束字符#
{
WritePages(ADDR,writedata,j);
//WriteNByte(ADDR,writedata,j);
ReadNByte(ADDR,readdata,j);
for(k=0;k<j;k++)
{
SBUF=readdata[k];
while(!TI);
TI=0;
}
j=0;
i=0;
}
//判断命令
if(getflag[0]==OPEN[0]&&getflag[1]==OPEN[1]&&getflag[2]==OPEN[2]&&getflag[3]==OPEN[3])//LED亮
{
Setkeyvalue(2);
KeyDeal();
}
else if(getflag[0]==CLOSE[0]&&getflag[1]==CLOSE[1]&&getflag[2]==CLOSE[2]&&getflag[3]==CLOSE[3])//LED灭
{
Setkeyvalue(3);
KeyDeal();
}
else if(getflag[0]==BLINK[0]&&getflag[1]==BLINK[1]&&getflag[2]==BLINK[2]&&getflag[3]==BLINK[3])//LED闪
{
Setkeyvalue(1);
KeyDeal();
}
//开启中断
RI =0;
EA =1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -