ri_ti.c

来自「基于51系列单片机的串口通信测试程序」· C语言 代码 · 共 62 行

C
62
字号
/* 功能:PC键盘0-9显示,行列式按键键值显示
   运行:在BANK3完成,启动串口助手软件后,在串口助手软件发送区输入的任意数字
         对应数字号码会显示在数码管上。按任意行列按键,键值会显示在助手接收区
*/
#include<at89x52.h>
#define BaudRate 9600L
#define uchar unsigned char  
code uchar SegCode[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

void UartInit()
{
	SCON = 0x50;
	TMOD = 0x20;
	PCON = 0x80;
	TH1 = TL1 = 0xfa;
	TR1 = 1;
}

uchar key()
{
	uchar kbuf,row,line;
	P2   = 0x0f;
	row  = P2;
	P2   = 0xf0;
	line = P2;
	kbuf = row+line;	
	return(kbuf);
}

void UartRec()
{	uchar rbuf;
	if(RI)
	{
		RI = 0;
		rbuf = SBUF;
		P0 = SegCode[rbuf];
		P1_3 = 1;
		P1_3 = 0;
		P0 = 0xff;
		P1_2 = 1;
		P1_2 = 0;		
	}
}

void main()
{	uchar ch;
	UartInit();
	while(1)
	{	
		ch = key();
		if(ch != 0xff)
		{
			while(key() != 0xff);      //返回值不会修改ch吧?
			SBUF = ch;
			while(TI==0);
			TI = 0;	
		}
		UartRec();
	}	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?