我的程序是KEIL编译的,如下
先申明
EXTRN
CODE
(_Send_CRC)
;Send_CRC是C中的函数,汇编中加了_
调用的时候
LCALL
_Send_CRC
如果要使用C中的变量,那么CODE变成相应的DATA,XDATA等
你问的导入程序是什么意思?是把电脑里的程序烧录到实物单片机内吗?
电脑里的程序写好了,要用编译软件 keil 编译成HEX代码文件,再用烧录软件,把HEX代码文件烧录到实物单片机里就行了。这个 *** 作也叫下载程序,或叫编程。不叫导入。
如楼上所说,一般程序编译后会生成HEX(十六进制文件)或BIN(二进制文件)后缀的文件,这些文件可以通过专用的烧写设备写到单片机的程序存储器里面。有一些单片机也可以通过串口连接然后配合上位机烧写程序将程序写进Flash,还有的单片机使用JTAG也可以。这些会因使用的单片机不同而有所不同。相同的是,所谓把“程序写到单片机里面”其实是将程序写到单片机的程序存储器里面。
具体点吧,对于不支持ISP(in-system programming 在线系统编程)的器件(比如说AT89C51),那就需要用专用的烧写器,配合上位机软件将程序烧写到Flash里面。对于支持ISP的器件(比如AT89S51/52,PIC,MSP430,ARM等)就可以使用串口或JTAG连接(各个器件的ISP电路基本上DATASHEET都提供,上位机程序一般生产商也提供)通过简易的ISP软件,将程序烧写到Flash(当然像AT89S51/52,PIC等也可以使用编程器)。其中ARM提供JTAG下载方式。另外,如果单片机使用的是扩展外部存储器,那就可以使用编程器直接对外部存储器编程。ARM的程序下载比较复杂,可以使用其它的很多接口方式。
总结起来一句话,所谓的把“程序写到单片机里面”其实是将程序写到单片机的程序存储器里面。当然这可以使用任何有效的方法。
单片机子程序的值怎么能继续用在主程序中,做成全局变量,直接引用,在子程序中ruturn 这个数据,数据类型要一致,然后在主程序接收子程序的返回值。或者可以用全局变量可以在子程序中设置一个指针形参,然后在主程序中野设置相同的形参 或者设置返回值。
在单片机C程序设计中,项目一般按功能模块化进行结构化设计。将一个项目划分为多个功能,每个功能的相关程序放在一个C程序文档中,称之为一个模块,对应的文件名即为模块名。一个模块通常由两个文档组成,一个为头文件h,对模块中的数据结构和函数原型进行描述;另一个则为C文件c ,对数据实例或对象定义,以及函数算法具体实现。
以上就是关于51单片机中汇编语言如何调用C的子程序全部的内容,包括:51单片机中汇编语言如何调用C的子程序、单片机怎么导入程序、怎么把单片机程序写到单片机里面需要用到什么东西等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)