新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > proteus與keil Cx51的單片機仿真(串行口單工通信)

        proteus與keil Cx51的單片機仿真(串行口單工通信)

        作者: 時間:2016-11-24 來源:網絡 收藏
        單片機U1、U2串行口均工作于方式1,其中U1做接收機,U2為發送機,波特率9600,U1接收U2發送的數據后,依次送P1、P0、P2口進行流水燈顯示,試編寫程序,并通過Proteus仿真。

        電路圖:

        本文引用地址:http://www.104case.com/article/201611/320718.htm



        U1程序:

        #include//包含單片機寄存器的頭文件
        unsigned char receive(void)//接收一個字節數據
        {
        unsigned char dat;
        while(RI==0);
        RI=0;//只要接收中斷標志位RI沒有被置1,等待,直至接收完(RI1)
        dat=SBUF;//將接收緩沖器中的數據存于dat
        return dat;
        }
        void main(void)
        {
        unsigned char i;
        TMOD=0x20;//定時器T1工作于方式2
        SCON=0x50;//SCON=0101 0000B,串行口工作方式1,允許接收(REN=1)
        PCON=0x00;//PCON=0000 0000B,波特率9600
        TH1=0xfd;TL1=0xfd;//根據規定給定時器T1賦初值
        TR1=1;//啟動定時器T1
        REN=1;//允許接收
        while(1)
        {
        for(i=0;i<9;i++)P1=receive();//將數據送P1口顯示
        for(i=0;i<9;i++)P0=receive();//將數據送P0口顯示
        for(i=0;i<9;i++)P2=receive();//將數據送P2口顯示
        }
        }

        U2程序:

        #include//包含單片機寄存器的頭文件
        unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};//流水燈燈控制碼,該數據被定義為全局變量
        void send(unsigned char dat)//向PC發一個字節數據
        {
        SBUF=dat;
        while(TI==0);//發送等待
        TI=0;
        }
        void delay(void)//延時約150ms
        {
        unsigned char m,n;
        for(m=0;m<200;m++)for(n=0;n<250;n++);
        }
        void main(void)
        {
        unsigned char i;
        TMOD=0x20;//TMOD=0010 0000B,定時器T1工作于方式2
        SCON=0x40;//SCON=0100 0000B,串行口工作方式1
        PCON=0x00;//PCON=0000 0000B,波特率9600
        TH1=0xfd;TL1=0xfd;//給定時器T1賦初值
        TR1=1;//啟動定時器T1
        while(1)
        {
        for(i=0;i<27;i++)//模擬檢測數據
        {
        send(Tab[i]);//發送數據i
        delay();//50ms發送一次檢測數據
        }
        }
        }




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 克什克腾旗| 封丘县| 磐安县| 绥宁县| 白朗县| 察雅县| 荣昌县| 泰州市| 武宣县| 明星| 盐城市| 翁源县| 雅安市| 蒲江县| 仪陇县| 淅川县| 遂川县| 平南县| 江华| 时尚| 重庆市| 永川市| 彭州市| 朝阳市| 宁安市| 道真| 老河口市| 亳州市| 达拉特旗| 白银市| 临朐县| 米脂县| 南乐县| 子洲县| 吉林省| 开封县| 璧山县| 甘洛县| 呼图壁县| 财经| 阳原县|