新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AT89S52兩單片機之間的通信 C程序

        AT89S52兩單片機之間的通信 C程序

        作者: 時間:2016-11-23 來源:網絡 收藏
        #include

        #define uint unsigned int
        #define uchar unsigned char
        sbit key1 = P1^0;//按鍵位定義
        sbit key2 = P1^1;
        sbit key3 = P1^2;
        sbit key4 = P1^3;

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

        void send(uchar key_num)//通過串口發送按鍵值子函數
        {
        SBUF = key_num;
        while(!TI);
        TI = 0;
        }

        void delay(uint z)//延時_ms子函數
        {
        uint x,y;
        for(x = 0;xfor(y = 0;y<125;y++);
        }

        uint key_scan()//鍵盤掃描子函數,帶返回值num
        {
        uint num;
        if(key1 == 0)//鍵1按下則數碼管將顯示1
        {
        delay(5);
        if(key1 ==0)
        {num = 1;}
        }


        if(key2 == 0)//鍵2按下則數碼管將顯示2
        {
        delay(5);
        if(key2 ==0)
        {num = 2;}
        }


        if(key3 == 0)//鍵3按下則數碼管將顯示3
        {
        delay(5);
        if(key3 ==0)
        {num = 3;}
        }


        if(key4 == 0)//鍵4按下則數碼管將顯示4
        {
        delay(5);
        if(key4 ==0)
        {num = 4;}
        }

        return num;//返回值為num
        }

        void scon_init()//初始化串口子函數
        {
        TMOD = 0x20;
        TH1 = 0xfd;
        TL1 = 0xfd;
        TR1 = 1;
        SM0 = 0;
        SM1 = 1;
        EA = 1;
        ES = 1;
        }
        void main()
        {
        scon_init();//初始化串口
        while(1)
        {
        send(key_scan());//不停掃描并發送按鍵值
        }
        }


        #include
        #define uint unsigned int
        #define uchar unsigned char

        uchar code tab[]={//數碼管字形
        0x40,0x79,0x24,0x30,
        0x19,0x12,0x02,0x78,
        0x00,0x10,0x08,0x03,
        0x46,0x21,0x06,0x0e};

        void scon_init()//串口寄存器初始化
        {
        TMOD = 0x20;
        TH1 = 0xfd;
        TL1 = 0xfd;
        TR1 = 1;
        REN = 1;//注意REN的位置
        SM0 = 0;
        SM1 = 1;
        EA = 1;
        ES = 1;
        }

        void main()
        {
        scon_init();//調用串口初始化子函數
        while(1);//等待串口中斷
        }

        void ser() interrupt 4//串口中斷子函數
        {
        uchar a;
        RI = 0;
        a = SBUF;//將接收到在SBUF中的key值送給變量a
        P2 = tab[a];//在串口中斷中顯示字形
        }



        關鍵詞: AT89S52單片機通

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 永福县| 汕尾市| 霍州市| 松原市| 芦溪县| 库尔勒市| 平乡县| 水城县| 阜阳市| 庆城县| 兴城市| 霍林郭勒市| 莎车县| 班戈县| 双柏县| 儋州市| 邵阳县| 长春市| 巩留县| 博野县| 丰顺县| 淮安市| 黑水县| 砀山县| 旬阳县| 孟州市| 锡林浩特市| 云浮市| 涞源县| 金山区| 镇远县| 嫩江县| 广安市| 崇信县| 衡南县| 西宁市| 洛川县| 延安市| 昭通市| 丰顺县| 鹿邑县|