单片机应用程序的开发步骤是什么

单片机应用程序的开发步骤是什么,第1张

1:针对需要开发的设备构建原理图,可以用AD09,PROTEUS软件

2:针对需要实现的功能编程,使用KEIL编写调试(51,AVR单片机

3:程序编好测试,测试包括功能测试,老化测试,可靠性测试等

单片机编程就是简单的嵌入式软件开发过程,首先你应该精通C语言(当然也有使用汇编语言的,不过主流还是使用C的),能够熟练运用C语言实现相应的单片机要实现的功能。所谓的单片机开发,就必须对单片机有一定的了解。这就是为什么嵌入式的工资高,入门难的原因,它必须要有一定的硬件基础,还需配合很好的编码能力。如果你掌握了单片机硬件,同时也精通编程,那么写单片机程序也就是水到渠成的事了。

参见郭天祥编 51单片机C语言教程,91页。

dula对应数字的段选数据,wela是数码管的位选数据。

这里是矩阵键盘的输入。

下面这部分是理解的关键。

void keyscan()

{

P3=0xfd;//0xfd就是1111 1101,其中的零表示对应引脚是低电位。如果没有按键按下,那么P3各电位不会变化。按下按键的时候,假设连通了第2和第6引脚,那么第6引脚也变成低电位。

temp=P3;//接上,因为第6引脚成了低电平,在执行这条指令的时候,temp其实是1101 1101

temp=temp&0xf0;// temp=1101 0000

while(temp!=0xf0)//1101!=1111,所以执行下面的这些指令

{

delay(5);//消抖用的,挺聪明

temp=P3;//消抖

temp=temp&0xf0;//消抖

while(temp!=0xf0)//消抖,以上4句共同完成消抖

{

temp=P3; //temp还是1101 1101,也就是0xdd

switch(temp)

{

case 0xed:num=5;

break;

case 0xdd:num=6; //执行这一句,使num=6;break

break;

case 0xbd:num=7;

break;

//下面就不用再说了,都一样

要理解矩阵键盘是怎么连接的。

如果两个引脚连了起来,且其中有个是低电位,那么检测另一个 也会是低电位0。

上面举得例子,是说连接第2引脚和第6引脚的那个按键按了下去。

如果是第1引脚和第6引脚的那个按键按了下去,因为上面程序中第1引脚是高电平,所以temp=temp&0xf0;对应temp是0xf0,if不满足,跳过上面这些程序,(注意!)去执行P3=0xfe的那段去了(1111 1110)!最右边的零表示第一引脚输出为负。

具体步骤如下:

1、首先,开启我们的keil软件,具体的安装步骤就不做太多的介绍了;

开启后,点击菜单栏上的Project选项,创建我们的工程,如图所示;

2、点击后,d出图中的窗口,在箭头所指的文本框中输入你的芯片型号进行查找,如果没有需要自行将芯片添加到keil软件的库下,如图所示;

3、选中芯片点击Ok即可,在左侧的文本框中,选中图中选项右键选择AddNew选项,如图所示;

4、选择c的文件,输入文件名以及文件的存储目录,如图所示;

5、点击OK后,在我们添加的文本框中输入我们的程序代码,如图所示;

6、编写好代码以后,选择菜单栏上的魔法棒选项,如图所示;

7、选择Output选项,将图中箭头所指的选项,选中,点击ok,如图所示;

8、然后点击编译选项,如图所示;

编译完成后,在我们的文件夹下找到hex的文件,将其烧写到我们的芯片中即可。

几乎所有的冯·诺伊曼型计算机的CPU,其工作都可以分为5个阶段:取指令、指令译码、执行指令、访存取数、结果写回。

1.取指令阶段

取指令(InstructionFetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。

程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增:若为单字长指令,则(PC)+1àPC;若为双字长指令,则(PC)+2àPC,依此类推。

2.指令译码阶段

取出指令后,计算机立即进入指令译码(InstructionDecode,ID)阶段。

在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同的指令类别以及各种获取 *** 作数的方法。

在组合逻辑控制的计算机中,指令译码器对不同的指令 *** 作码产生不同的控制电位,以形成不同的微 *** 作序列;在微程序控制的计算机中,指令译码器用指令 *** 作码来找到执行该指令的微程序的入口,并从此入口开始执行。

3.执行指令阶段

在取指令和指令译码阶段之后,接着进入执行指令(Execute,EX)阶段。

此阶段的任务是完成指令所规定的各种 *** 作,具体实现指令的功能。为此,CPU的不同部分被连接起来,以执行所需的 *** 作。

4.访存取数阶段

根据指令需要,有可能要访问主存,读取 *** 作数,这样就进入了访存取数(Memory,MEM)阶段。

此阶段的任务是:根据指令地址码,得到 *** 作数在主存中的地址,并从主存中读取该 *** 作数用于运算。

5.结果写回阶段

作为最后一个阶段,结果写回(WriteBack,WB)阶段把执行指令阶段的运行结果数据“写回”到某种存储形式:

结果数据经常被写到CPU的内部寄存器中,以便被后续的指令快速地存取;

在有些情况下,结果数据也可被写入相对较慢、但较廉价且容量较大的主存。许多指令还会改变程序状态字寄存器中标志位的状态,这些标志位标识着不同的 *** 作结果,可被用来影响程序的动作。

在指令执行完毕、结果数据写回之后,若无意外事件(如结果溢出等)发生,计算机就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环,下一个指令周期将顺序取出下一条指令。

扩展资料:

指令的执行过程例子:

开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOVA,#0E0H,其机器码为“74HE0H”,该指令的功能是把 *** 作数E0H送入累加器。

0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:

1程序计数器的内容(这时是0000H)送到地址寄存器;

2程序计数器的内容自动加1(变为0001H);

3地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;

4CPU使读控制线有效;

5在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。

由于本次进入指令寄存器中的内容是74H( *** 作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。

所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H *** 作码的微 *** 作系列,使数字E0H从0001H单元取出。

因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC="0002H",PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。

这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定。

参考资料:

CPU-百度百科

以上就是关于单片机应用程序的开发步骤是什么全部的内容,包括:单片机应用程序的开发步骤是什么、51单片机高手,我想问一下这个程序的执行过程谢谢、单片机应用程序的开发步骤_单片机开发过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9516748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存