因仑“3+1”工程特种兵精英论坛

标题: 019、RS232串口通信实验 [打印本页]

作者: 张衍波    时间: 2015-4-26 21:57
标题: 019、RS232串口通信实验
/*******************************************************/
/*RS232接收显示实验                                                            */
/*目标器件:AT89S52                                                                   */
/*晶振:11.0592MHZ                                                                       */
/*编译环境:Keil                                                                   */
/*******************************************************/

#include "reg52.h"               

unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char dat;                                //定义全局变量

//串行口初始化程序
void Init_Com(void)
{
     TMOD = 0x20;
     PCON = 0x00;
     SCON = 0x50;                       
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;                               
}

//LED数码管延时程序
void delay(void)
{
        int k;
        for(k=0;k<600;k++);
}

//串行中断服务程序
serial()interrupt 4 using 1
{
        if(RI)
        RI=0;
        dat=SBUF;
}

//LED数码管显示程序
void display(int k)
{
        P2=0xef;                                                                //位选                       
        P0=tab[k/1000];                                                        //显示千位数字
        delay();                                                                //延时
        P2=0xdf;                                                                //位选
        P0=tab[k%1000/100];                                                //显示百位数字
        delay();                                                                //延时
        P2=0xbf;                                                                //位选
        P0=tab[k%100/10];                                                //显示十位数字
        delay();                                                                //延时
        P2=0x7f;                                                                //位选
        P0=tab[k%10];                                                        //显示个位数字
        delay();                                                                //延时
        P2=0xff;                                                                //位选
}

//主程序
void main()
{   
           P2=0xff;
          P0=0xff;
        P1=0xff;
        EA=1;
        ES=1;
           Init_Com();
           while(1)
   {
      display(dat);                                                        //显示数据
   }
}


[attach]2435[/attach]







欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4