PC-51单片机实现串口通信(通过静态数码管表达)

成功了!!!
当if(m==‘1’)
则pc端就需要用文本模式输入数字

//静态数码管显示+PC串口通信
#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[]={0x3f,0x30,0x4f};

void UsartInit()
{
       SCON=0X50;               //设置为工作方式1
       TMOD=0X20;                    //设置计数器工作方式2
       PCON=0X80;               //波特率加倍
       TH1=0Xfa;                         //计数器初始值设置,注意波特率是300的
       TL1=0Xfa;
       ES=1;                                        //打开接收中断
       EA=1;                                        //打开总中断
       TR1=1;                               //打开计数器
}

void main()
{
	UsartInit();
	while(1);
}

void Usart() interrupt 4
{
       u8 m;
       m=SBUF;
       LSA=0;
	   LSB=0;
	   LSC=0;			
	   if(m==0x00) 		//pc端hex模式输入0,则显示0,smgduan[0]=0
	   P0=smgduan[0];
	   else if(m==0x01)	//pc端hex模式输入1,则显示1,smgduan[1]=1
	   P0=smgduan[1];
	   else				//pc端hex模式输入任意,则显示3, s[2]=3
	   P0=smgduan[2];	//但输入文本的数据,都显示3
       RI= 0;//清除接收中断标志位
       SBUF=m;//将接收到的数据放入到发送寄存器
       while(!TI);                    //等待发送数据完成
       TI=0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值