原创 简单的串口实验

2008-9-17 20:45 1912 10 10 分类: MCU/ 嵌入式

     一个简单的串口实验,通过串口往单片机发送一个字节的十六进制数,单片机以十进数通过数码管显示出来,本来想以十进制数形式发送,以十进制显示,但是不知道是串口调试程序的数值转换的原因还是程序的原因,总是不能显示正确的数,没有办法,暂且这么用了。


#include <at89x52.h>
#define uchar unsigned char


uchar displaycode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar displaybit[3]={0xfe,0xfd,0xfb};
uchar displaybuf[3];
uchar dat;


void Com_Init()
{
 TMOD=0x20;
 TH1=0xFD;
 TL1=0xFD;
 TR1=1;
 SCON=0x50;
 ES=1;
 EA=1;
 PCON=0x00;


}


void Com_Int() interrupt 4
{
 ES=0;
 RI=0;
 dat=SBUF;
 ES=1;
}


void delay(uchar CNT)
{
 uchar i;
 while(CNT--)
 {
  for(i=124;i>0;i--);
 }
}


void display(uchar dat)
{
 uchar i;
 displaybuf[0]=dat/100;
 displaybuf[1]=dat%100/10;
 displaybuf[2]=dat%10;
 for(i=0;i<3;i++)
 {
  P1=displaybit;
  P0=displaycode[displaybuf];
  delay(2);
  P1=0xff;
 }
}


void main ()
{
 Com_Init();
 while(1)
 {
  display(dat);
 }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条