新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ASM51無參數化調用C51函數的實現原理解析方案

        ASM51無參數化調用C51函數的實現原理解析方案

        作者: 時間:2012-06-19 來源:網絡 收藏

        sample: ;采樣程序,該標號即是定義外部

        ;sample()的入口地址

        ……

        ret

        ……

        res_ram: ;62256指針復位,該標號即是定義外部res_ram()的入口地址

        ……

        ret

        end

        在研制無紙記錄儀之前,作者用M開發了其他儀表,采樣部分有些相同,因此這次A51采樣程序并不是重新編寫,而是把以前的M程序按A51的規則來修改。以前ASM的程序(數據段部分)如下所示:

        bseg

        ;

        write_alw bit 00h;

        vz_bit bit 01h

        fs_bit bit 02h

        ce_bit bit p1.6

        ram_cs bit p1.2

        b373 bit p1.1

        bit_dog bit p1.4

        data_bit bit P2.6

        sclk_bit bit P3.4

        drdy_bit bit p3.3

        ends

        ;

        dseg

        org 08h

        org 28h

        sample_w; ds 12

        sa_p: ds 1 ;當前通道號

        ram_point: ds 2

        sa_timer: ds 8 ;0,1,2,3每通道兩字節

        sa_vzt: ds 8 ;0,1,2,3 vz

        ends

        ;

        cseg

        org 0h

        begin: reti

        org 03h

        lcall sample

        reti

        sample:

        ……

        ends

        從上述程序可以看出,在采樣程序中所用到的變量并不少,定義在數據存儲區28H單元起始的空間中。這樣安排,對匯編程序沒什么問題,但與主程序連接的時候,并不一定好,很多時候碰到地址空間溢出的問題(C51主程序編譯連接后將近16K字節,CPU采用ATMEL公司的AT89C55WD)。如何調整這些變量的分配,并非容易。另外,C51隨時要用到采樣單元sample_w[12]的值,如果采用一般的傳遞,將是相當復雜而繁瑣的;而采用全局及外部變量C51無A51,極大簡化了這些工作,大大提高了工作效率。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西平县| 华坪县| 崇信县| 宁陕县| 南皮县| 达拉特旗| 金坛市| 永安市| 隆尧县| 社会| 新乡县| 长子县| 定安县| 霍州市| 昌邑市| 浙江省| 冀州市| 安福县| 鄯善县| 包头市| 阳新县| 灌阳县| 肇源县| 邹城市| 华坪县| 临夏市| 大名县| 太湖县| 浦江县| 阿尔山市| 耿马| 顺平县| 原平市| 玛纳斯县| 盐津县| 汶川县| 调兵山市| 北川| 十堰市| 泰宁县| 广西|