#include <reg52.h>
#include<intrins.h> //位移头文件_crol_
#define uchar unsigned char
unsigned char flag,i;
sbit wei1=P2^4;//定义第一位LED显示器
sbit wei2=P2^5;//定义第二位LED显示器
sbit wei3=P2^6;//定义第一位LED显示器
sbit wei4=P2^7;//定义第二位LED显示器
char w='0';
char wu[15];
int k=0;
int q=0;
void receive() interrupt 4 //串口中断服务程序
{
if(RI==1){
RI=0; //重新清0等待接收
w=SBUF;//接收电脑传输过来的数据
wu[k]=w; //将W的值赋给wu数组
k++;
SBUF=w;//单片机把接收到的数据返回给电脑
TI=0; //清除发送中断标志位
}
}
//P0共阴极数码管编码表 //****(用P0=)表示;【在显示屏上显示数字(字母)1——F——不显示】
uchar code gy[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //***高电平“1”亮
void init(){
SCON=0x50;//串口控制寄存器,等价于SM0=0,SM1=1,SM2=0,串口方式一通信
TMOD=0X20; //设置定时器1为模式2,做为波特率发生器,8位初值自动重装的8位定时器,定时到TH1的值自动装到TL1
TH1=0xfd;//设置波特率为9600
TL1=0xfd;
REN=1;//允许串口接收中断?
EA=1;//开全局中断
ES=1;//串口中断允许
TR1=1; //启动波特率发生器
}
void delay(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
void main()
{
init();
wei1=1;
wei2=1;
wei3=0;
wei4=0;
while(1)
{
if(w=='\n') //当发送了新行时,
{
k=0; //数组里的元素清零
for(q=0;q<20;q++)
{
wu[q]=0;
}
q=0;
}
if(wu[0]=='6'&&wu[1]=='6')
{
k=0; //数组里的元素清零
while(1)
{
P0=0x7d;
}
}
}
}
51单片机基础——串口发送66,数码管显示66
最新推荐文章于 2024-05-18 16:54:39 发布