📄 rt1.c
字号:
#include<reg51.h>
//#include<regx51.h>
#include<String.h>
#define INBUF_LEN 5
unsigned char inbuf[INBUF_LEN];
unsigned char count4 = 0;
bit flag_read = 0;
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit P2_4 = P2^4;
/*
#define m0 0xC0
#define m1 0xC
#define m2
#define m3
#define m4
#define m5
#define m6
#define m7
#define m8
#define m9
*/
/********************************************************************
函数名:init_serialcomn(void)
功 能:初始化中断
说 明:
入口参数:无
返回值:无
***********************************************************************/
void init_serialcomn(void)
{
SCON = 0x50;
TMOD |= 0x20;
PCON |= 0x80;
TH1 = 0xFA; //晶振11。0592 波特率9600
IE |=0x90;
TR1 = 1;
}
/**********************************************************************
函数名:void serial () interrupt 4 using 2
功 能:串口接收中断函数
说 明:
入口参数:无
返回值:无
***********************************************************************/
serial () interrupt 4 using 2
{
if (RI)
{
unsigned char ch;
RI = 0;
ch = SBUF;
//count4 = 0;
inbuf[count4] = ch;
count4++;
if (count4 ==4)
{
count4 = 0;
flag_read =1;
}
/*for(i = 0;i++;i<=4)
{
return inbuf[i];
}*/
}
}
/**********************************************************************
函数名:delay()
功 能: 延时函数
说 明:
入口参数:无
返回值:无
***********************************************************************/
delay()
{
int i,j;
for(i=0;i++;i<100)
for(j=0;j++;j<100);
}
/**********************************************************************
函数名:display()
功 能: 显示函数
说 明:
入口参数:无
返回值:无
***********************************************************************/
display()
{
//int i;
//for(i = 0;i++;i <= 4)
unsigned char a = inbuf[0];
unsigned char check(unsigned char );
P0 = check(a);
P2_0 = 0;
delay();
P2_0 = 1;
a = inbuf[1];
P0 = check(a);
// P0 = inbuf[1];
P2_1 = 0;
delay();
P2_1 = 1;
a = inbuf[2];
//unsigned char check(unsigned char );
P0 = check(a);
// P0 = inbuf[2];
P2_2 = 0;
delay();
P2_2 = 1;
a = inbuf[3];
// unsigned char check(unsigned char );
P0 = check(a);
P0 = inbuf[3];
P2_3 = 0;
delay();
P2_3 = 1;
a = inbuf[4];
//unsigned char check(unsigned char );
P0 = check(a);
P0 = inbuf[4];
P2_4 = 0;
delay();
P2_4 = 1;
/*P2_1 = 0;
P2_2 = 0;
P2_3 = 0;
P2_4 = 0;*/
delay();
//P2_i = 1;
}
/**********************************************************************
函数名:check(unsigned char s)
功 能:查表 根据传来的数查找相对应的驱动数码管的十六进制数
说 明:
入口参数:a 由GPRS传来的数字
返回值: 与十进制数相对应的驱动数码管的十六进制数
***********************************************************************/
unsigned char check(unsigned char s) {
//unsigned char b;
unsigned char serial[10] = {0xC0/*'11000000'*/,0xCF/*'11001111'*/,0xA4/*10100100*/,0xB0,0x99,0x92,0x82,0xD8,0x80,0x90};
unsigned char b=serial[s];
return b;
}
/*
unsigned char check(unsigned char m)
{
# asm
EXTRN DATA(m)
MOV DPTR,#TAB
MOV A,m
MOV A,@A+DPTR
TAB:
DB C0H,CFH,A4H,B0H //0,1,2,3
DB 99H,92H,82H,D8H //4,5,6,7
DB 80H,90H //8,9
#endasm
extern unsigned char A
}
*/
/**********************************************************************
函数名:void main()
功 能: 主函数
说 明:
入口参数:无
返回值:无
***********************************************************************/
void main()
{
init_serialcomn();
// RI = 1;测试
while(1)
{
if (flag_read)
{
display(/*unsigned char inbuf[5]*/);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -