📄 recievenew.c
字号:
#include <w78e54.h>
#include <intrins.h>
#include "absacc.h"
#define uchar unsigned char
#define uint unsigned int
void Int_program_check(void);
uchar recievebuf_MCU[4];
sbit LEDDISP=P3^6;
bit int_set_flag;
/*--------------------------------------------------*/
void Delay_ms(unsigned char j)
{
unsigned int k,l;
for(l=0;l<=j;l++)
{
for(k=0;k<=500;k++)
{ ;
// WDTC=WDTC|0x40; //Clear Watchdog
}
}
}
//===================================================
//===================================================
// 串口程序
//===================================================
uchar i,pf;
uint up_number;
void serial_int() interrupt 4
{
ES =0;
RI =0;
LEDDISP=0;
up_number=0;
pf=0;
i=0;
recievebuf_MCU[0]=SBUF;
pf+=recievebuf_MCU[0];
while(1)
{
if(RI==0)
{
up_number++;
if(up_number>5000)
break;
}
else
{
RI=0;
recievebuf_MCU[1+i]=SBUF;
pf+=recievebuf_MCU[1+i];
i++;
up_number=0;
}
}
if((pf-recievebuf_MCU[i])==recievebuf_MCU[i])
int_set_flag=1;
else
int_set_flag=0;
RI=0;
ES=1; //OPEN 串口中断
LEDDISP=1;
}
//****************************************************
//主程序开始
//****************************************************
void main(void)
{
Delay_ms(50);
TMOD=0x21; //T1设置为定时方式2 ,T0 under mode 1
TH1=0xfd; //设置波特率为9600,11.059MHZ
TL1=0xfd;
TR1=1;
PCON=0x00; //SMOD=1
SCON=0x50; //串口方式1
ES=1; //enable serial interrupt
EA=1; //open whole interrup
// WDTC=0xc7; //2.5s
//========================================================
while(1)
{
// WDTC=WDTC|0x40; //Clear Watchdog
if(int_set_flag)
{
int_set_flag=0;
Int_program_check();
}
}
}
/**********************************************************
主程序结束
//=======================================================*/
uchar keyvalue1,keyvalue2,keyvalue3;
void Int_program_check(void)
{
keyvalue1=recievebuf_MCU[2];
keyvalue2=recievebuf_MCU[3];
keyvalue3=recievebuf_MCU[4];
P0=keyvalue1;
P1=keyvalue2;
P2=keyvalue3;
Delay_ms(20);
P0=0xff;
P1=0xff;
P2=0xff;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -