新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AT89C2051單片機與MT8880接口設計

        AT89C2051單片機與MT8880接口設計

        作者: 時間:2012-03-22 來源:網絡 收藏

        軟件

        基于圖1電路,在軟件時,只需模擬的控制時序,用指令對P1口進行讀寫操作,控制芯片內部的CRA、CRB等寄存器,從而實現對的發送/接收控制。在此,僅給出用C51編制的程序。

        3.1 發送程序

        程序執行后,將以DTMF方式發送預存在數組W_BUF中的7位數碼(5135535)。
        #include reg51.h>
        #define uc unsigned char
        #define ui unsigned int
        /* 子函數(子程序)說明 */
        void initialize(void);
        void tran_init(void);
        void transmit(uc data *p,uc count);
        void delay(ui l);
        /* 主函數(主程序) */
        void main(void)
        { uc data w_buf[7];
        SP=0x5f;
        /* 預存數碼5135535 */
        w_buf[0]=5;
        w_buf[1]=1;
        w_buf[2]=3;
        w_buf[3]=5;
        w_buf[4]=5;
        w_buf[5]=3;
        w_buf[6]=5;
        initialize();
        tran_init();
        transmit(w_buf,7);
        initialize();
        for(;;);}
        /* 初始化子函數 */
        void initialize(void)
        { P1=0x3f; /* 讀SR */
        P1=0x20; /* CRA=0000 */
        P1=0x20; /* CRA=0000 */
        P1=0x28; /* CRA=1000 */
        P1=0x20; } /* CRB=0000 */
        /* 發送初始化子函數 */
        void tran_init(void)
        { P1=0x29; /* CRA=1001 */
        P1=0x21; } /* CRB=0001 */
        /* 發送操作子函數 */
        void transmit(uc data *p,uc count)
        { uc i;
        for (i=0;icount;i++,p++)
        { P1=*p; /* 發送數碼 */
        delay(6000); /* 延時 */
        P1=0x3f; }}/* 讀SR */
        /* 延時子函數 */
        void delay(ui l)
        { ui i;
        for (i=0;il;i++);}



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阿巴嘎旗| 宁河县| 沙河市| 丰原市| 丹巴县| 秀山| 佛冈县| 新龙县| 疏附县| 南丹县| 黄骅市| 大埔区| 即墨市| 盐津县| 溧阳市| 郁南县| 安平县| 遂平县| 蒲城县| 宝坻区| 桐城市| 遵义市| 综艺| 建德市| 揭西县| 达州市| 安塞县| 姚安县| 墨玉县| 白水县| 宾阳县| 古蔺县| 青州市| 金坛市| 西丰县| 吴堡县| 大冶市| 棋牌| 浦县| 磐石市| 察雅县|