27,373
社区成员
发帖
与我相关
我的任务
分享
/*************** writer:shopping.w ******************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint id=0;
uchar data table[100];
void Delay(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void send(uchar *dis)
{
while(*dis!='\0') {
SBUF=*dis;
dis++;
while(!TI);
TI=0; //软件请发送中断
}
}
/***********************************************
串行口初始化波特率9600定时器1工作方式2
*************************************************/
void serial_init(void)
{
TMOD=0x20;//计时器1作为比特率发生器方式2
TH1=0xfd;
TL1=0xfd; //装入初值
TR1=1;//计时中断允许
SM0=0;
SM1=1;//串行口工作于方式2
ES=1;//串行口中断允许
REN=1;//接收允许
EA=1;// 总中断允许
}
void main()
{
serial_init();
Delay(100);
send("Receiving From 8051...\r\n");
while(1) ;
}
void Serial_INT() interrupt 4
{
if(RI)
{
ES=0; //关串口中断
table[id++]=SBUF;//命令存到命令数组
RI=0; //软件清除接收中断
if(table[id-1]==0x0a)
{
table[id]='\0';
id=0;
send(table); //将单片机接收完成的字符串发送回计算机
}
ES=1;//开串口中断
}
// else
// TI=0;
}