新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機通訊程序

        單片機通訊程序

        作者: 時間:2016-11-11 來源:網絡 收藏
        發送機發送按鍵信息,接收機把接受的信息用數碼管顯示出來

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

        發送機程序

        #include
        #define uchar unsigned char
        #define uint unsigned int
        void delay(uint);
        void SET_SYSTEM(void);
        uchar KEY_scan(void);


        void main()
        {
        uchar data i;
        delay(100);
        SET_SYSTEM();
        while(1)
        {
        i=KEY_scan();
        if(i)
        {
        TI=0;
        SBUF=i;
        while(!TI);
        }
        }
        }
        /*************************************************************************************/
        void delay(uint t) /* 延時子程序 */
        {
        uchar i;
        while(t--)
        {
        for(i=0;i<125;i++) {}; /* 12 MHz 晶振大約是 1 ms */
        }
        }
        /*************************************************************************************/
        uchar KEY_scan(void) /*鍵盤掃描程序 (獨立式)*/
        {
        uchar data key;

        P1=0xff;
        key=P1;
        if(key==0xff) return 0;
        else
        {
        delay(10);
        key=P1;
        if(key==0xff) return 0;
        else
        {
        switch(key)
        {
        case 0xfe: return 1;break;
        case 0xfd: return 2;break;
        case 0xfb: return 3;break;
        case 0xf7: return 4;break;
        case 0xef: return 5;break;
        case 0xdf: return 6;break;
        case 0xbf: return 7;break;
        case 0x7f: return 8;break;
        default : return 9;
        }
        }
        }
        }
        /*************************************************************************************/
        void SET_SYSTEM(void)
        {
        TMOD=0x20; /* 定時器1工作于方式2 */
        PCON=PCON&0x07;
        TH1=0xfe; /* 設置波特率 */
        TL1=0xfe;
        SCON=0x50;
        IE=0x00; /* 即 EA=0;關所有中斷 */
        TI=0;
        RI=0;
        TR1=1;
        }
        /*************************************************************************************/

        接收機程序

        #include
        #define uchar unsigned char
        #define uint unsigned int
        void delay(uint);
        void SET_SYSTEM(void);
        uchar KEY_scan(void);
        void LED_display(uchar ,uchar);
        uchar xdata IO_8155_order _at_ 0x2100;
        uchar xdata IO_8155_PA _at_ 0x2101;
        uchar xdata IO_8155_PB _at_ 0x2102;
        uchar xdata IO_8155_PC _at_ 0x2103;
        uchar data dt=0;
        uchar code dig_num[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; /*共陰級數碼管的段選碼*/
        void main()
        {
        delay(200);
        SET_SYSTEM();
        IO_8155_order=0x0d; /* 8155 初始化 */
        while(1)
        {
        LED_display(0,dt);
        P1=dt;
        }
        }
        /*************************************************************************************/
        void delay(uint t) /* 延時子程序 */
        {
        uchar i;
        while(t--)
        {
        for(i=0;i<125;i++) {}; /* 12 MHz 晶振大約是 1 ms */
        }
        }
        /*************************************************************************************/
        void LED_display(uchar d_bit,uchar digit) /* LED 數碼管顯示子程序*/
        { /*d_bit 表示位選碼,digit 表示要顯示的數字 */
        IO_8155_PC=d_bit; /* 位選碼輸出*/
        IO_8155_PA=dig_num[digit]; /* 段選碼輸出*/
        delay(10);
        }
        /*************************************************************************************/
        void SET_SYSTEM(void)
        {
        TMOD=0x20; /* 定時器1工作于方式2 */
        PCON=PCON&0x07;
        TH1=0xfe; /* 設置波特率 */
        TL1=0xfe;
        SCON=0x50;
        IE=0x90; /* 即 EA=1;ES=1;ET1=0;開了串行口中斷,關定時器1 的中斷 */
        TI=0;
        RI=0;
        TR1=1;
        }
        /*************************************************************************************/
        void RI_RI(void) interrupt 4
        {
        RI=0;
        dt=SBUF;
        }



        關鍵詞: 單片機通訊程

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 荆州市| 凤台县| 保定市| 咸丰县| 长泰县| 古浪县| 宁安市| 屯门区| 磐安县| 随州市| 都江堰市| 齐齐哈尔市| 安龙县| 河北省| 沁源县| 清水河县| 龙岩市| 双江| 雅安市| 阳新县| 延吉市| 绥滨县| 堆龙德庆县| 名山县| 安平县| 湖南省| 娱乐| 民县| 塔城市| 仪征市| 九寨沟县| 鸡泽县| 莱阳市| 黄梅县| 屏东市| 哈巴河县| 涞水县| 合水县| 云林县| 牟定县| 万山特区|