📄 kongzhiduan.c
字号:
#include <reg51.h>
#include <intrins.h>
short dis[8];
short n;
short k;
sbit P3_3=P3^3;
sbit alarm=P3^4;
sbit OE=P2^5;
sbit START=P2^4;
/*初始化*/
void init()
{
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
PCON=0x00; //波特率9600bps
TCON=0x41;
SCON=0X50; //工作方式为1
EA=1;
ES=1;
ET0=1;
EX0=1;
n=8;
k=0;
alarm=0;
}
/*发送子程序*/
void send(short n)
{
TL0=0x00;
TH0=0x00;
TR0=1;
do{
P3_3=1;
SBUF=dis[n];while(!TI);TI=0;
P3_3=0;
while(!RI);RI=0;
}
while(SBUF==dis[n]);
P3_3=1;
SBUF=0xaa;while(!TI);TI=0;
P3_3=0;
TR0=0;
}
/*T0中断*/
void t0() interrupt 1
{
alarm=1;
}
/*接收中断子程序*/
void receive() interrupt 4
{
short nn;
if(RI==1)
{
EA=0;
RI=0;
nn=SBUF;
P3_3=1;
SBUF=nn;while(!TI);TI=0;
P3_3=0;
while(!RI);RI=0;
if(SBUF==0xaa) n=nn;
else EA=1;
}
}
/*采集中断*/
void ad()interrupt 0
{
EA=0;
if(n==8)
{
OE=1;dis[k]=P0;
k++;
if(k>7) k=0;
P1=k;_nop_();_nop_();
START=1;_nop_();_nop_();START=0;
send(k);
}
else
{
OE=1;dis[n]=P0;
P1=n;_nop_();_nop_();
START=1;_nop_();_nop_();START=0;
send(n);
}
EA=1;
}
/*主程序*/
void main()
{
init();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -