您的位置:首页技术文栏单片机C51
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

通过RS232总线与PC进行通信的测试程序(c语言)

[日期:2008-02-16 ] [来源:net 作者:佚名] [字体: (投递新闻)

/*这是一个使用单片机串行通信口通过RS232总线与PC进行通信的测试程序,无需扩展.可将DB9的第2和第3脚短路,进行自收自发测试.采用串行中断接收,速率:9600,通信方式2,晶振使用:osc=11.0592MHz。使用SW1-SW6键盘发送文本数字1-6,数码管显示接收的ASCII数据*/
void main(void)
{
 SCON=0x50;
    TMOD=0x21;
    TH1=0xfd;
    TL1=0xfd;
 TH0=0xf4;
 TL0=0x48;
 ES=1;ET0=1;EA=1;
    TR1=1;
 TR0=1;
    while(1)
      {
        if(!key){ Delay(30000);
            a=Key_down();
            SBUF=table[a];
      while(TI==0);
      TI=0;
     }
       } 

 
uchar Key_down(void)
{ uchar x;
  if(!sw1)x=1;
  else if(!sw2)x=2;
       else if(!sw3)x=3;
           else if(!sw4)x=4;
                else if(!sw5)x=5;
                     else if(!sw6)x=6;
  return(x);
 }  
void Int_T0(void) interrupt 1
{
  TH0=0xf4;
  TL0=0x48;
  if(count==5)count=0;
  else count++;
  switch(count)
     {
    case 0:DIG_NUM=0x7f;
     LED_DISPLAY=buff_led1;
     break;
    case 1:DIG_NUM=0xbf;
     LED_DISPLAY=buff_led2;
     break;
    case 2:DIG_NUM=0xdf;
     LED_DISPLAY=buff_led3;
     break;
    case 3:DIG_NUM=0xef;
     LED_DISPLAY=buff_led4;
     break;
    case 4:DIG_NUM=0xf7;
     LED_DISPLAY=buff_led5;
     break;
    case 5:DIG_NUM=0xfb;
     LED_DISPLAY=buff_led6;
     break;
    default:break;
    }
  } 
void Int_Serial(void)  interrupt 4
{   
 while(RI==0);
 
    a=SBUF;RI=0;
    buff_led1=buff_led2;
 buff_led2=buff_led3;
 buff_led3=buff_led4;
 buff_led4=buff_led5;
 buff_led5=buff_led6;
 buff_led6=a;
}

void Delay(int t)
{while(--t);}

阅读:
录入:petta

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告