新聞中心

        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++);}



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 吉安市| 丰宁| 平阴县| 佛学| 蓝山县| 香港| 崇义县| 禄丰县| 故城县| 云南省| 翼城县| 嘉定区| 金坛市| 嘉鱼县| 石门县| 兴宁市| 贵州省| 陇西县| 历史| 明水县| 德昌县| 桐梓县| 临澧县| 太白县| 古浪县| 罗定市| 基隆市| 忻城县| 旌德县| 阿勒泰市| 西盟| 禹城市| 汉阴县| 信阳市| 子洲县| 绥化市| 灵石县| 黄骅市| 新密市| 浙江省| 枞阳县|