查看: 1170|回复: 0
打印 上一主题 下一主题

019、RS232串口通信实验

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-26 21:57:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*******************************************************/
/*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);                                                        //显示数据
   }
}





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表