新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机开发中的一些实用技巧(下)

单片机开发中的一些实用技巧(下)

作者: 时间:2012-02-06 来源:网络 收藏

  #include

  图5

  2.用汇编语言编制一段205μS精确延时程序ttest4.asm并添加到工程中(图6)。

  UDELAY SEGMENT CODE

  RSEG UDELAY

  PUBLIC DELAY

  DELAY: MOV R0,#100

  LOOP:

  DJNZ R0,LOOP

  RET

  END

  

  图6

  3.点击Rebuild target(重建所有目标文件)即可得到正确的编译结果(图7)。

  

  图7

  例5(有参数传递):

  1.按照Keil的使用方法,建立工程文件并添加C51编写的主程序test5.c(图8)。

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

  #include P 晶振频率12.000MHz>

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

  void delay(unsigned int k); //延时函数声明

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

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

  {

  while(1)

  {P1_0=!P1_0;

  delay(500);}

  }

  

  图8

  2.用汇编语言编制一段延时程序ttest5.asm并添加到工程中(图9)。由于有参数传递,函数名前必须加下划线“_”。

  UDELAY SEGMENT CODE

  RSEG UDELAY

  PUBLIC _DELAY

  _DELAY:

  DJNZ R6,$

  DJNZ R7,$

  RET

  END

  

  图9

  3.点击Rebuild target(重建所有目标文件)可得到正确的编译结果(图10)。

  

  还有一种方法,利用编译器自动完成段的安排,这样实现C语言与汇编语言的混合编程也很方便。过程为:

  1.用C51分别编写主程序test.c及延时子程序的外壳delay.c(等待嵌入汇编语言)。在主程序中应将延时子程序声明为外部函数:extern void delay(delay)。

  2.点击delay.c源程序后再右击,在弹出的下拉菜单中选中Options for File ‘test.c’,勾选Generate Assembler SRC File(生成汇编SRC文件)及Assembler SRC File(封装汇编文件)使其有效。

  3.根据项目的编译模式加载封装库文件,通常在Small模式时为C51S.LIB(该文件在C:KeilC51LibC51S.LIB)。

  4.点击Rebuild target(重建所有目标文件)可得到一个delay.SRC的文件。

  5. 将delay.SRC改名为delay.A51。

  6.将delay.A51加载到工程项目组中,同时移除delay.c、C51S.LIB。

  7.再次点击Rebuild target可得到delay.A51汇编语句的主体。

  8. 将通过其它试验所得的精确汇编延时子程序放入delay.A51的主体中,保存后加载到Source Group 1项目组中,再点击Rebuild target即可得到正确的编译结果。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭