新聞中心

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

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

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

        電路圖:

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



        U1程序:

        #include//包含單片機寄存器的頭文件
        sbit p=PSW^0;
        unsigned char receive(void)//接收一個字節數據
        {
        unsigned char dat;
        while(RI==0);
        RI=0;//只要接收中斷標志位RI沒有被置1,等待,直至接收完(RI1)
        ACC=SBUF;//將接收緩沖器中的數據存于dat
        if(RB8==P)//奇校驗
        {dat=ACC;return dat;}
        }
        void main(void)
        {
        unsigned char i;
        TMOD=0x20;//定時器T1工作于方式2
        SCON=0xd0;//SCON=1101 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//包含單片機寄存器的頭文件
        sbit p=PSW^0;
        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發一個字節數據
        {
        ACC=dat;
        TB8=p;
        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=0xc0;//SCON=1100 0000B,串行口工作方式3,SM2置0,不使用多機通信,TB8置0
        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發送一次檢測數據
        }
        }
        }




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 湖北省| 黎平县| 吉林市| 神农架林区| 万源市| 金寨县| 阜康市| 黄冈市| 阿拉善右旗| 红河县| 台湾省| 井陉县| 长葛市| 犍为县| 基隆市| 罗甸县| 类乌齐县| 万年县| 齐河县| 桂林市| 东至县| 浙江省| 乐东| 泸溪县| 荆州市| 太仆寺旗| 龙井市| 河北省| 百色市| 镇赉县| 北碚区| 本溪市| 宜君县| 太原市| 黑水县| 镇巴县| 泗阳县| 望奎县| 临安市| 瑞安市| 新郑市|