新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于EPM7128設計的數據合并轉換器

        基于EPM7128設計的數據合并轉換器

        作者: 時間:2011-05-17 來源:網絡 收藏

        2.3 幀長計數器的部分

        兩個74161長1/64的分頻器,也叫幀長計數器,此計數器的時鐘為FRAMECLK,計數器的輸出最高兩位邏輯與為中斷INT7,把與門輸出與次高位邏輯異或為中斷INT5。這樣,INT7比INT5在時序上早半個周期。開始復位后,INT7脈沖首先產生,觸發中斷,COU中斷后在服務程序中把64個字節寫到FIFO,然后屏蔽中斷INT7,半個周期后,FIFO中還剩32個字節(因此FIFO的讀脈沖和FRAMECLK反相同頻)。然后中斷INT5到來,CPU響應后,再寫64個字節給FIFO,使FIFO中一直保持有數據的狀態(可避免讀FIFO正好落在兩個寫FIFO之間,FIFO因無數據而讀死)。這樣,每當中斷INT5到來,都寫64字節給FIFO,周而復始,所以把64字節定為幀長。

        3 軟件

        outp(0x303,0x36);//方式3,方波。//

        outp(0x300,0x50);//timer0,分頻比為80。//

        outp(0x300,0x00);

        outp(0x303,0x74);//方式2,脈沖。//

        outp(0x301,0x08);//timer1,分頻比為8。//

        outp(0x301,0x00);

        數據

        if((com1_count%24)= =0) ;//串行口1的24字節數據放在數組Frame的4~27的位置。//

        {

        com_buf1[com1_count++]=db1; //串行口1接收數據//

        int Original_Counter;

        Original_Counter=com1_count/24;

        memcpy(Frame[Original_Counter-1]+4,com_buf1[com1_count-24],24);

        }

        if((com2_count%24)= =0); //串行口2的24字節數據放在數組Frame的28~51的位置。//

        {

        com_buf2[com2_count++]=db2 ;//串行口2接收數據//

        int Original_Counter;

        Original_Counter=com2_count/24;

        Memcpy(Frame[Original_Counter-1]+28,com_buf2[com2_count-24],24) ;//后的數據放在Frame數組中。//

        寫FIFO:

        void Send_To_Fifo(int number); //Send_To_Fifo函數為中斷服務程序的一部分。//

        {

        for(int i=0;i64;i++)

        outp(WFIFO,Frame[number][i]); //數組送給FIFO,實現數據//


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盐山县| 福清市| 巴青县| 太湖县| 博爱县| 新乡市| 东源县| 阜城县| 廊坊市| 乳山市| 周口市| 峨边| 清苑县| 大埔县| 和平县| 渝北区| 泸定县| 观塘区| 英吉沙县| 赞皇县| 时尚| 子长县| 垫江县| 永修县| 万全县| 错那县| 海城市| 凌海市| 内江市| 海兴县| 玉林市| 阳曲县| 松溪县| 宁河县| 金堂县| 西吉县| 望奎县| 茌平县| 绵竹市| 永登县| 江川县|