新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)的一些開發(fā)實(shí)用技巧

單片機(jī)的一些開發(fā)實(shí)用技巧

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
  很多朋友正在學(xué)習(xí)單片機(jī)開發(fā)技術(shù),但開發(fā)中免不了要碰到這樣、那樣的問(wèn)題,有些問(wèn)題可能無(wú)礙大局,但有一些問(wèn)題卻直接影響到產(chǎn)品的成本、體積、性能。這里介紹筆者的幾個(gè)技巧,希望對(duì)大家的工作有幫助。
  一.C語(yǔ)言中嵌入?yún)R編語(yǔ)言
  單片機(jī)開發(fā)中,通常我們使用C語(yǔ)言編寫主程序,這樣可以充分借助C語(yǔ)言工具提供的運(yùn)算庫(kù)函數(shù)及強(qiáng)大的數(shù)據(jù)處理能力。但C語(yǔ)言的可控性不及匯編語(yǔ)言,在有些對(duì)時(shí)序要求嚴(yán)格的處理上,我們還需用靈活性更強(qiáng)的匯編語(yǔ)言來(lái)編寫。上海AVR單片機(jī)培訓(xùn)這樣就產(chǎn)生了C語(yǔ)言和匯編語(yǔ)言混合編程的問(wèn)題,一般分成三種方式:1.匯編語(yǔ)言調(diào)用C語(yǔ)言函數(shù);2. C語(yǔ)言調(diào)用匯編語(yǔ)言;3. C語(yǔ)言中嵌入?yún)R編語(yǔ)言。這里我們主要介紹第3種,即C語(yǔ)言中嵌入?yún)R編語(yǔ)言。
  下面的一段程序是主程序調(diào)用精確的205μS延時(shí)子程序并使P1.0交替輸出高、低電平的方波。
  /*------------程序名test.c------------*/
  #include P 晶振頻率12.000MHz<>
  /****************/
  void delay(void)//延時(shí)205μS
  {
  #pragma asm
  MOV R0,#100
  LOOP:
  DJNZ R0,LOOP
  #pragma endasm
  }
  /***************/
  void main (void)//主函數(shù),其功能使P1.0交替輸出高、低電平的方波
  {
  while(1)
  {P1_0=!P1_0;
  delay();}
  }
  具體實(shí)現(xiàn)過(guò)程為:
  1.先用匯編語(yǔ)言編制一段延時(shí)程序,在keil開發(fā)環(huán)境中編譯,然后進(jìn)行軟件仿真,晶振頻率的設(shè)置應(yīng)和你的要求相符。仿真時(shí)注意觀察左邊寄存器窗口內(nèi)的時(shí)間顯示,調(diào)整延時(shí)程序的參數(shù)可得到我們需要的精確延時(shí)。
  2.用C51編寫主程序及延時(shí)子程序的外殼(等待嵌入?yún)R編語(yǔ)言),假定此程序名稱為test.c。
  3.將第1步所得的匯編延時(shí)子程序放入C51編寫的延時(shí)子程序外殼中。注意在開始及結(jié)束時(shí)分別加上#pragma asm、#pragma endasm語(yǔ)句,這種方法是通過(guò)asm與endasm告訴C51編譯器,中間行不用編譯為匯編行。
  4.按照Keil的使用方法,建立工程文件并添加源程序。
  5.點(diǎn)擊含有匯編程序的C源程序后再右擊,在彈出的下拉菜單中選中Options for File ‘test.c’(圖1),這時(shí)出現(xiàn)圖2所示的界面,勾選Generate Assembler SRC File(生成匯編SRC文件)及Assembler SRC File(封裝匯編文件)使其有效。
  6. 根據(jù)項(xiàng)目的編譯模式加載封裝庫(kù)文件,通常在Small模式時(shí)為C51S.LIB(該文件在C:KeilC51LibC51S.LIB),具體見圖3。
  7.點(diǎn)擊Rebuild target(重建所有目標(biāo)文件)即可得到編譯結(jié)果(圖4)。


  

本文引用地址:http://butianyuan.cn/article/201612/324992.htm

  圖1

  

  圖2

  

  圖3

  

  圖4


上一頁(yè) 1 2 3 4 5 6 下一頁(yè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉