
单片机C程序的入口函数是 `main()`。在C语言中,任何程序的执行都是从 `main()` 函数开始的。需要在程序中定义 `main()` 函数,可以在其中调用各种功能函数,实现程序的各种功能。当程序启动时,单片机将首先执行 `main()` 函数,然后根据具体的功能需求,依次调用其他函数完成不同的任务。因此, `main()` 函数可以说是所有单片机C程序的入口。例如,下面是一个简单的单片机C程序:
```c
#include <reg51h>
void main() {
// 以下是程序的主要功能代码
//
}
```
该程序的入口函数 `main()` 中,可以编写实现程序具体功能的代码。注意,在单片机C程序中,需要同时考虑硬件和软件的问题,程序中需要正确设置各种芯片和外设的寄存器和参数,才能使程序正确运行。因此,在编写单片机C程序时,不仅需要了解C语言的基本语法和函数,还需要熟悉单片机的硬件结构和寄存器的使用方法。
单片机程序从电脑上往单片机上输入的方法如下:
1、把程序写入单片机一般叫烧写,故有烧写器,可以用它很容易的把程序烧进单片机,但不推荐这种方法,因为烧写器贵。
2、现在很多单片机支持ISP方式的烧写,如果电脑有并口的话,就可以用个很简单的并口ISP线即可,如果没有并口,就买个USB_ISP的接口,支持usb接口,很方便。
3、还有就是用STC的51单片机,直接从电脑串口连三根线在搭配软件就可以烧写,推荐第三种。
单片机中一个程序的运行过程分为取指令,分析指令和执行指令几个步骤。
取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。
分析指令阶段的任务是:将指令寄存器中的指令 *** 作码取出后进行译码,分析其指令性质。如指令要求 *** 作数,则寻找 *** 作数地址。计算机执行程序的过程实际上就是逐条指令地重复上述 *** 作过程,直至遇到停机指令可循环等待指令。一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。
下面我们将举个实例来说明指令的执行过程:
开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。
例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把 *** 作数E0H送入累加器,0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:
1 程序计数器的内容(这时是0000H)送到地址寄存器;
2 程序计数器的内容自动加1(变为0001H);
3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;
4 CPU使读控制线有效;
5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。
至此,取指阶段完成,进入译码分析和执行指令阶段。
由于本次进入指令寄存器中的内容是74H( *** 作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H *** 作码的微 *** 作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC=0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。
ROM是只读存储器,用于存储程序代码;RAM是数据存储器,用于存放单片机运行时的数据,也就是说RAM中的数据掉电(复位)后就会消失,而ROM中的数据不会。
需要利用下载器和下载软件才能将keil程序输出的hex文件烧录到单片机中。具体 *** 作请参照以下步骤,演示单片机为51单片机。
1、首先准备好51单片机最小系统板和烧录器。
2、打开stc-isp烧录软件选择好单片机型号,这里的所选的单片机型号为STC89C/LE52RC。在此可以观察到“串口号”显示没有可用的接口。
3、接着把烧录器与51单片机最小系统连线,插入电脑。
4、电脑已经识别到串口号(COM10)后,选择点击“打开程序文件”,将目标hex文件导入。
5、然后点击“下载”选项,可以看到软件界面右下角显示框显示“正在检测目标单片机”。
6、然后对单片机重新上电,不久后,软件界面右下角显示框显示“正在重新握手成功”。完成以上设置后,即可完成给单片机烧录程序。
1、单片机的应用程序一般存放在片内的EEPROM的程序存储器中,即从0000H~0EFFH共有4K;
2、程序如果太长,可以存储到片外程序存储器中。
FLASH大小也是单片机的一个重要数据。常见的变量放在RAM中,调电后数据会丢失,所以变量是要赋值的。有些高档单片机将程序放在FLASH中,上电时再将程序移入RAM,这样运行时程序在RAM中运行,可以加快速度。
1、单片机上电后程序从0000H开始执行。\x0d\2、如果是用C51编程,不用指定语句的地址。编译后编译器会给你自动安排地址。\x0d\3、如果用汇编语言编程,应该指定第一条语句的地址是0000H,然后在0000H处写一条跳转指令,跳到你的主程序处。\x0d\4、至于startupa51中的内容,不同的编译器应该不一样,但和你的程序制定的第一条语句的地址是0000H不会矛盾。\x0d\5、编译后产生的HEX文件代码,在烧写时要从0000H地址开始烧写。
你如果有编译器的话,例如:keil。把你的C程序有它打开后,编译,编译后会产生hex文件,然后在用下载软件,例如:志峰软件。不过你还得有单片机的下载器,用它连接单片机和电脑。这样就可以把你的C文件你的程序下载到单片机里,让它执行相应的动作啦。
以上就是关于单片机C程序的入口程序是什么全部的内容,包括:单片机C程序的入口程序是什么、单片机程序,怎么从电脑上往单片机上输入.、单片机中一个程序的运行过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)