⑴ 已经有c语言基础,但是还是看不懂单片机的c编程...如何是好
根据你的问题,我把单片机的C语言程序分成3块:
1、纯粹的应用级运算或数据处理类的函数或子程序。比如获得一个四则运算的结果等。这部分程序代码以你的基础肯定能读懂,因为C51和PC机上的C语言都是一样的。
2、针对单片机自身的硬件控制程序等。这部分软件其实内容不多,如果了解单片机的结构及各主要模块的功能就能理解个大概:比如定时器怎么用、怎样设定初值、怎样启动,又比如如何在单片机的端口输出高电平或是输出低电平等等。
3、针对单片机以外的硬件控制子程序或函数。比如8个8位的LED数码管,如何扫描控制其显示内容,如何采集单片机系统中的哪个按键被按下了等。这部份软件就需要你去了解单片机最常用的外围电路的工作原理后才能理解。
总之,需要有一定的硬件基础才能读懂单片机的C语言,至于方法:
1、系统的学习单片机的基本结构和原理。无论针对哪个应用最基本的内容都是相似的。熟悉后拿来任何一个程序都能快速的将其拆分,明白各模块大致的用途。
2、有针对性的去了解单片机以外其它的电路的功能及实现原理。这一点可以边应用边学习,任何人都不敢说所有的硬件都了解,都是边学边用。
⑵ 怎样能读出51单片机里的程序结构
单片机中的程序若在烧录时进行了加密处理,则无法直接读取,这确保了程序的安全性。然而,如果程序未加密,我们确实可以通过使用特定的烧录软件来读取程序内容。不过,这些内容通常是以十六进制的机器码形式呈现,对于大多数人来说,要理解其含义并不容易。
为了更好地理解单片机程序的结构,我们首先需要明白,程序本质上是一系列指令的集合,这些指令以二进制形式存储在单片机的内存中。以51单片机为例,其程序存储器通常分为代码段和数据段,代码段存储的是机器指令,数据段则用于存放数据。通过分析这些段落,我们可以逐步解析程序的结构。
在没有加密的情况下,使用烧录软件读取程序时,你会看到一系列复杂的十六进制数。这些数代表的是具体的机器指令和数据。为了将这些复杂的十六进制数转化为有意义的信息,你需要具备一定的计算机和汇编语言知识,能够将这些数翻译成对应的汇编指令或机器语言。
例如,假设你读取到一个十六进制数`0x0100`,这可能代表一条跳转指令,而`0x0101`则可能代表一条加载数据到寄存器的指令。通过逐步解析这些指令,你可以理解程序的逻辑流程。
另外,一些高级工具和软件可以帮助我们更好地理解这些复杂的程序。例如,反汇编工具可以将机器码反汇编成汇编语言,使程序更容易阅读。此外,调试器可以让我们在程序运行时逐步执行,观察每条指令的效果,这对于理解程序结构非常有帮助。
总的来说,读取并理解51单片机中的程序结构需要一定的技术知识和工具。通过掌握一定的汇编语言知识,使用适当的工具,我们可以将复杂的机器码转化为易于理解的指令,从而更好地理解程序的逻辑和功能。