新闻中心

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

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

作者: 时间:2016-12-02 来源:网络 收藏

  函数名的转换规律
  主函数中的声明 汇编符号名 说明
  Void func(void) FUNC 无参数传递
  Void func(char)_FUNC 带寄存器参数传递
  Void func(void)reentrant_?FUNC 重入函数包含栈内参数传递
  表1
  接收参数寄存器
  参数序号charintLong,float通用指针
  1R7R6、R7R4~R7R1~R3
  2R5R4、R5--
  3R3R2、R3--
  表2
  返回值类型与寄存器对照
  返回值类型寄存器说明
  BitC(标志位)由具体标志位返回
  Char/unsigned char/1_byte指针R7单字节由R7返回
  Int/ unsigned int/2_byte指针R6、R7双字节由R6、R7返回,高位在R6中,低位在R7中
  Long/ unsigned longR4~R7四字节由R4~R7返回,高位在R4中,低位在R7中
  FloatR4~R732bit IEEE格式,指数和符号位在R7中
  通用指针R1~R3存储类型在R3中,高位在R2,低位在R1
  表3
  下面通过两个实例说明。
  例4(无参数传递):
  1.按照Keil的使用方法,建立工程文件并添加C51编写的主程序test4.c(图5)。
  /*------------程序名test4.c------------*/
  #include P 晶振频率12.000MHz<>
  /****************/
  void delay(void);//延时函数声明
  /***************/
  void main (void)//主函数,其功能使P1.0交替输出高、低电平的方波
  {
  while(1)
  {P1_0=!P1_0;
  delay();}
  }

本文引用地址://m.amcfsurvey.com/article/201612/324992.htm

  图5

  2.用汇编语言编制一段205μS精确延时程序ttest4.asm并添加到工程中(图6)。
  UDELAY SEGMENT CODE
  RSEG UDELAY
  PUBLICDELAY
  DELAY: MOV R0,#100
  LOOP:
  DJNZ R0,LOOP
  RET
  END

  图6

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

  图7

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


评论


技术专区

关闭