微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 单片机的一些开发实用技巧

单片机的一些开发实用技巧

时间:02-13 来源:互联网 点击:


  图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:\Keil\C51\Lib\C51S.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即可得到正确的编译结果。

来源:电子工程网

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top