从一段程序开端 完成电脑向单片机发送一些数据,单片机回来Iget +数据
#include #define uchar unsigned char
#define uint unsigned int unsigned char flag,a,i;//声明标志位 flag
uchar code table[]=”I get”
void init()
{
TMOD=0x20;//设置T1定时器作业方法为2 8位初值主动重装的8位定时器 这儿设置了两个计数器的作业方法
TH1=0xfd; / /T1定时器装初值(高八位) 操控串口通讯的波特率(由定时器1的溢出率操控)
TL1=0xfd; //T1定时器装入初值(低八位)
TR1=1; //定时器1运转操控位 置一发动定时器1
REN=1; //答应串口接纳
SM0=0; //设置串口作业方法为一
SM1=1; EA=1; //大局中止答应位 置一开大局中止
ES=1; //串口中止答应位
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=table[i];
while(!TI);
TI=0;//发送中止标志 发送数据完成后触发中止 硬件置一 有必要软件清零
}
SBUF=a; // 串口发送数据
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void ser() interrupt 4 //串口中止服务程序
{
RI=0; // 收到数据硬件置一,由软件清零
a=SBUF; //将寄存器的值 赋给a flag=1; //标志位
}
此程序中共用的串口中止,
定时器1中止 特别功用寄存器SBUF
中止呼应的条件
中止源有中止请求 此中止源答应位为1 cpu开中止(即EA=1)以上三个条件一起分量
串口通讯设置
确认串口通讯波特率(编程TMOD寄存器定时器作业方法寄存器)
核算定时器初值转载THX TLX
确认串行口作业方法(编程SCON寄存器串行口操控方法寄存器)
串行口作业在中止方法时,要进行中止设置如TI,RI软件清零