新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機開發中的一些實用技巧(上)

        單片機開發中的一些實用技巧(上)

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

         很多朋友正在學習技術,但中免不了要碰到這樣、那樣的問題,有些問題可能無礙大局,但有問題卻直接影響到產品的成本、體積、性能。這里介紹筆者的幾個技巧,希望對大家的工作有幫助。

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

          一.C語言中嵌入匯編語言

          中,通常我們使用C語言編寫主程序,這樣可以充分借助C語言工具提供的運算庫函數及強大的數據處理能力。但C語言的可控性不及匯編語言,在有些對時序要求嚴格的處理上,我們還需用靈活性更強的匯編語言來編寫。上海AVR培訓這樣就產生了C語言和匯編語言混合編程的問題,一般分成三種方式:1.匯編語言調用C語言函數;2. C語言調用匯編語言;3. C語言中嵌入匯編語言。這里我們主要介紹第3種,即C語言中嵌入匯編語言。

          下面的一段程序是主程序調用精確的205μS延時子程序并使P1.0交替輸出高、低電平的方波。

          /*------------程序名test.c------------*/

          #include P 晶振頻率12.000MHz>

          /****************/

          void delay(void)//延時205μS

          {

          #pragma asm

          MOV R0,#100

          LOOP:

          DJNZ R0,LOOP

          #pragma endasm

          }

          /***************/

          void main (void)//主函數,其功能使P1.0交替輸出高、低電平的方波

          {

          while(1)

          {P1_0=!P1_0;

          delay();}

          }

          具體實現過程為:

          1.先用匯編語言編制一段延時程序,在keil開發環境中編譯,然后進行軟件仿真,晶振頻率的設置應和你的要求相符。仿真時注意觀察左邊寄存器窗口內的時間顯示,調整延時程序的參數可得到我們需要的精確延時。

          2.用C51編寫主程序及延時子程序的外殼(等待嵌入匯編語言),假定此程序名稱為test.c。

          3.將第1步所得的匯編延時子程序放入C51編寫的延時子程序外殼中。注意在開始及結束時分別加上#pragma asm、#pragma endasm語句,這種方法是通過asm與endasm告訴C51編譯器,中間行不用編譯為匯編行。

          4.按照Keil的使用方法,建立工程文件并添加源程序。

          5.點擊含有匯編程序的C源程序后再右擊,在彈出的下拉菜單中選中Options for File ‘test.c’(圖1),這時出現圖2所示的界面,勾選Generate Assembler SRC File(生成匯編SRC文件)及Assembler SRC File(封裝匯編文件)使其有效。

          6. 根據項目的編譯模式加載封裝庫文件,通常在Small模式時為C51S.LIB(該文件在C:KeilC51LibC51S.LIB),具體見圖3。

          7.點擊Rebuild target(重建所有目標文件)即可得到編譯結果(圖4)。

          

          圖1

          

          圖2

          

          圖3

          

          圖4


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 天台县| 湘西| 余江县| 剑河县| 万州区| 平遥县| 延寿县| 乐至县| 墨脱县| 西和县| 沿河| 邵阳县| 如东县| 长兴县| 江都市| 崇明县| 积石山| 高台县| 镇坪县| 彭州市| 济阳县| 东丰县| 宁远县| 灌云县| 中阳县| 霍城县| 广宁县| 武川县| 美姑县| 和顺县| 武陟县| 会同县| 当阳市| 通江县| 灵寿县| 深州市| 宝兴县| 丹寨县| 正宁县| 吴忠市| 米脂县|