新聞中心

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

        單片機的一些開發實用技巧

        作者: 時間:2016-12-02 來源:網絡 收藏
          很多朋友正在學習單片機開發技術,但開發中免不了要碰到這樣、那樣的問題,有些問題可能無礙大局,但有一些問題卻直接影響到產品的成本、體積、性能。這里介紹筆者的幾個技巧,希望對大家的工作有幫助。
          一.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)。


          

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

          圖1

          

          圖2

          

          圖3

          

          圖4


        上一頁 1 2 3 4 5 6 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 衡水市| 永平县| 泾阳县| 平遥县| 崇州市| 文水县| 叶城县| 永新县| 阿瓦提县| 武夷山市| 三台县| 延安市| 永嘉县| 万宁市| 綦江县| 仪陇县| 汕头市| 垦利县| 缙云县| 荥阳市| 佳木斯市| 抚远县| 乌恰县| 德江县| 寿宁县| 晋州市| 安宁市| 西乌珠穆沁旗| 宜兰市| 当雄县| 高淳县| 华池县| 临湘市| 灵寿县| 泌阳县| 彰化市| 大庆市| 华安县| 宁明县| 罗平县| 石泉县|