C51串口通讯程序

  • 格式:txt
  • 大小:2.21 KB
  • 文档页数:1
void init_serialcomm( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
{
unsigned int k= 0 ;
do
{
send_char_com(*(str + k));
k++;
} while (k < strlen);
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
if (RI)
{
read_flag= 1 ;
}
}
}
}
main()
{
init_serialcomm(); //初始化串口
whil8;i++)
{
else
{
count3++;
inbuf1[count3]=ch;
if(count3< INBUF_LEN- 1)
{
checksum += ch;
}
if ( (count3==(INBUF_LEN- 1 )) && (ch==checksum) )
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}
//向串口发送字符串函数
void send_string_com( unsigned char *str, unsigned int strlen)
{
unsigned char ch;
RI = 0 ;
ch=SBUF;
//SBUF=ch;
if (ch== 0xFE )
{
count3= 0 ;
inbuf1[count3]=ch;
checksum= ch ; //校验和
}
send_string_com(inbuf1,INBUF_LEN);
}
}
}
第三字节: 00-07 数码管的显示位置
第四字节: 00-09 数码管显示数值
第五字节: 00-FF 前四字节的校验和
发送 FE 01 01 03 03 为第一个数码管显示3
**********************************************************************************************/
unsigned char code seg[]={0,1,2,3,4,5,6,7};
unsigned char inbuf1[INBUF_LEN]; //存储信息
unsigned char dat[8];
unsigned char checksum,count3,i;
bit read_flag= 0 ;
/**********************************************************************************************
命令格式: FE 01 01 03 03 共5字节
第一字节:FE 为帧头
第二字节: 00-FF 地址码
PCON |= 0x00 ; //SMOD=0;
TH1 = 0xFD ; //Baud:9600 fosc=11.0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
}
//向串口发送一个字符 函数
#include <reg51.h>
#include <string.h>
#define INBUF_LEN 5 //数据长度
unsigned char const EL[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9十个数字码
P0=0x00;
P2=seg[i];
P0=EL[dat[i]];
}
if (read_flag) //如果取数标志已置位,就将读到的数从串口发出
{
dat[inbuf1[2]] = inbuf1[3]; //把收到的数据写入存储区
read_flag= 0 ; //取数标志清0

下载文档原格式

  / 1