MCS51内核的单片机程序,是不能在非MCS51内核的单片机上使用的,同属MCS51内核的单片机,有部分型号的程序是可以通用的。
因为不同内核架构的单片机,其存储区分配、寄存器地址、中断地址、程序入口、堆栈等均不相同,编译器对程序的处理也有差别。
如果想要将将MCS51单片机的程序移植到其他单片机上,通常需要按照如下步骤:
1
更换相对应的编程软件、编译环境(视实际情况,有很多编程软件支持很多不同的单片机,如51的程序移植到stm32,keil也可实现,不用更换编程软件);
2
修改底层 *** 作部分的代码,如寄存器配置、中断入口等,同时尽量保证程序各函数名、接口名等与原来的一致;
3
拷贝逻辑部分代码,根据不同的单片机功能,调整控制逻辑、顺序等,同时确保时钟、堆栈等符合程序要求;
4
软硬件仿真、上机测试、debug等。。。
因单片机间肯定有很多差异,移植程序时,需要对两张单片机均匀一定程度的了解,避免未知因素影响。
单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。
取指令的任务是:根据程序计数器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就是这样一条一条地执行指令,完成所有规定的功能。
CLR C;清零进位标志
MOV A,#66H ;立即数66H送入A
JC LOOP1 ;判断C是否为0,C=1跳转到LOOP1
CPL C;取反C
SETB 01H ;非法的指令SETB只能对位 *** 作
LOOP1:
ORL C,ACC0 ;将A的最低位送入C中
JB ACC2LOOP2 ;A中的第三位为1则跳到LOOP2
CLR 00H;非法指令,CLR只能对位 *** 作
LOOP2:
MOV P1,A;将A中的数据送入P1寄存器中
sfr
P0M1
=
0X93;
sfr
P0M0
=
0X94;
sfr
P1M1
=
0X91;
sfr
P1M0
=
0X92;
sfr
P2M1
=
0X95;
sfr
P2M0
=
0X96;
这一段是对通用IO的设置寄存器定义为好记的变量名。具体是什么寄存器你就得结合手册查一下,估计是设置IO口方向、内部上来电阻之类的,或者是配置给某些内部器件如PCA计数器、定时器、计数器等。
至于下面的应该是电磁波或者超声测距之类的算法!!
看起来不是很复杂。
你要是抄板子的话就得想办法知道原来用的什么MCU!再找到它的手册!
有兴趣的话可以研究一下!
linfeighaot@sinacom
以上就是关于51单片机的程序其他单片机可以用吗全部的内容,包括:51单片机的程序其他单片机可以用吗、51单片机执行程序的过程、51单片机的程序是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)