小夏天的大西瓜 发表于 2025-3-28 21:51

单片机初始编程


大多数情况下,程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中,16位指令指针寄存器)。在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。PC中存储的***都是下一步要执行的指令地址。改变PC的内容,就可以改变程序执行的顺序,从而实现跳转。

在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就确定了,当器件的功能被确定下来后,其控制字也就被确定了。

然后用文本编缉器(如Notepad、Winedt 等)写软件.

编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后, 就可以写(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别种格式的文件,只要将此文件调入即可写片。

公羊子丹 发表于 2025-4-2 07:44

初学者了解程序计数器(PC)是非常重要的,掌握了它,能更好地理解程序的执行流程。

周半梅 发表于 2025-4-2 07:45

我之前写过一个小程序,通过修改 PC 的值实现了简单的跳转,调试的时候能明显看到程序流程的变化。

帛灿灿 发表于 2025-4-2 07:46

对于初学者来说,使用仿真器进行调试的确能帮助理解程序的执行,能看到每一步的变化和寄存器的内容。

童雨竹 发表于 2025-4-2 07:47

如果程序出现异常,调试的时候特别注意 PC 的值,通常是问题所在,可以帮助定位到出错的位置。

万图 发表于 2025-4-2 07:48

使用 Notepad 编写代码确实方便,但更推荐用专门的编辑器(如 Keil)来编写代码,自动高亮和语法提示能大大提高效率。

Wordsworth 发表于 2025-4-2 07:49

关于 HEX 文件,很多编程器都能识别它,但要确保编译器的设置与硬件编程器兼容。

Bblythe 发表于 2025-4-2 07:50

单片机程序调试中,最难的就是理解 PC 的变化,特别是跳转指令(如 JUMP, CALL)时,要特别小心。

Pulitzer 发表于 2025-4-2 07:51

我通常会在编程前先画出硬件的连接图和对应的地址映射,这样在编程时就不容易出错。

Uriah 发表于 2025-4-2 07:52

说到调试,仿真器真的能节省不少时间,尤其是硬件和软件结合的时候,能精确模拟实际运行的情况。

Clyde011 发表于 2025-4-2 07:53

编写程序时一定要考虑到 中断 机制,很多硬件交互都需要在中断服务程序中处理,调试时要特别注意 PC 在中断后的变化。
页: [1]
查看完整版本: 单片机初始编程