51单片机堆栈指针SP相关资料

51单片机堆栈指针SP相关资料
51单片机堆栈指针SP相关资料

什么是堆栈?堆栈指针的SP的作用是什么?8051单片机堆栈容量不超过多少字节?

在51单片机中,SP栈指针是一个专用的8位寄存器,

系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。

在响应中断或子程序调用时,发生入栈操作,入栈的是16位PC值;

51中有PUSH压入和POP弹出栈操作指令,

如有必要,在中断或调用子程序时可用POSU指令把PSW或其它需要保护的寄存器的内容

压入堆栈加以保护;返回前再使用POP指令把它们恢复。

51的内部RAM只有从00H到7FH共计128字节的空间,而且00H~1FH是工作寄存器区,所以SP的设定一般设定是从20H到70H这个范围。

51堆栈的容量最大也不会超过128字节。

1、在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆,顺序随意。栈,后进先出(Last-In/First-Out)。

区分队列先进先出

2、堆栈是一块保存数据的连续内存。一个名为堆栈指针(SP)的寄存器指向堆栈的顶部。堆栈的底部在一个固定的地址。堆栈的大小在运行时由内核动态地调整。CPU实现指令PUSH和POP,向堆栈中添加元素和从中移去元素。堆栈由逻辑堆栈帧组成。当调用函数时逻辑堆栈帧被压入栈中,当函数返回时逻辑堆栈帧被从栈中弹出。堆栈帧包括函数的参数,函数地局部变量,以及恢复前一个堆栈帧所需要的数据,其中包括在函数调用时指令指针(IP)的值。堆栈既可以向下增长(向内存低地址)也可以向上增长,这依赖于具体的实现。在我们的例子中,堆栈是向下增长的。这是很多计算机的实现方式,包括Intel,Motorola,SPARC和MIPS处理器。堆栈指针(SP)也是依赖于具体实现的。它可以指向堆栈的最后地址,或者指向堆栈之后的下一个空闲可用地址。在我们的讨论当中,SP指向堆栈的最后地址。除了堆栈指针(SP指向堆栈顶部的的低地址)之外,为了使用方便还有指向帧内固定地址的指针叫做帧指针(FP)。有些文章把它叫做局部基指针(LB-local base pointer)。从理论上来说,局部变量可以用SP加偏移量来引用。然而,当有字被压栈和出栈后,这些偏移量就变了。尽管在某些情况下编译器能够跟踪栈中的字操作,由此可以修正偏移量,但是在某些情况下不能。而且在所有情况下,要引入可观的管理开销。而且在有些机器上,比如Intel处理器,由SP加偏移量访问一个变量需要多条指

令才能实现。因此,许多编译器使用第二个寄存器,FP,对于局部变量和函数参数都可以引用,因为它们到FP的距离不会受到PUSH和POP操作的影响。在Intel CPU中,BP(EBP)用于这个目的。在Motorola CPU中,除了A7(堆栈指针SP)之外的任何地址寄存器都可以做FP。考虑到我们堆栈的增长方向,从FP的位置开始计算,函数参数的偏移量是正值,而局部变量的偏移量是负值。当一个例程被调用时所必须做的第一件事是保存前一个FP(这样当例程退出时就可以恢复)。然后它把SP复制到FP,创建新的FP,把SP向前移动为局部变量保留空间。这称为例程的序幕(prolog)工作。当例程退出时,堆栈必须被清除干净,这称为例程的收尾(epilog)工作。Intel的ENTER和LEAVE指令,Motorola的LINK和UNLINK指令,都可以用于有效地序幕和收尾工作。

3、普通的8051MCU堆栈指针只有8位,所以堆栈不可能超过256字节13086.

SP:堆栈指针(SP,Stack Pointer),专门用于指出堆栈顶部数据的地址。

堆栈介绍:日常生活中,我们都注意到过这样的现象,家里洗的碗,一只一只摞起来,最晚放上去的放在最上面,而最早放上去的则放在最下面,在取的时候正好相反,先从最上面取,这种现象我们用一句话来概括:“先进后出,后进先出”。请大家想想,还有什么地方有这种现象?其实比比皆是,建筑工地上堆放的砖头、材料,仓库里放的货物,都是“先进后出,后进先出”,这实际是一种存取物品的规则,我们称之为“堆栈”。

在单片机中,我们也能在RAM中构造这样一个区域,用来存放数据,这个区域存放数据的规则就是“先进后出,后进先出”,我们称之为“堆栈”。为什么需要这样来存放数据呢?存储器本身不是能按地址来存放数据吗?对,知道了地址的确就能知道里面的内容,但如果我们需要存放的是一批数据,每一个数据都需要知道地址那不是麻烦吗?如果我们让数据一个接一个地放置,那么我们只要知道第一个数据所在地址单元就能了(看图2)如果第一个数据在27H,那么第二、三个就在28H、29H了。所以利用堆栈这种办法来放数据能简化操作

那么51中堆栈什么地方呢?单片机中能存放数据的区域有限,我们不能够专门分配一块地方做堆栈,所以就在内存(RAM)中开辟一块地方,用于堆栈,但是用内存的哪一块呢?还是不好定,因为51是一种通用的单片机,各人的实际需求各不相同,有人需要多一些堆栈,而有人则不需要那么多,所以怎么分配都不合适,怎样来解决这个问题?分不好干脆就不分了,把分的权利给用户(编程者),根据自已的需要去定吧,所以51单片机中堆栈的位置是能变化的。而这种变化就体现在SP中值的变化,看图2,SP中的值等于27H不就相当于是一个指针指向27H单元吗?当然在真正的51机中,开始指针所指的位置并非就是数据存放的位置,而是数据存放的前一个位置,比如一开始指针是指向27H单元的,那么第一个数据的位置是28H单元,而不是27H单元,为什么会这样,我们在学堆栈命令时

再说明。其它的SFR,我们在用到时再介绍。

MCS-51单片机存储器结构-特殊功能寄存器:堆栈指针

SP(Stack Pointer)

(2013-09-10 11:02:11)

转载▼

堆栈指针SP(Stack Pointer)

堆栈是一种数据结构,它是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置。系统复位后,SP的初始值为07H,使得堆栈实际上是从08H开始的。但我们从RAM的结构分布中可知,08H—1FH隶属1—3工作寄存器区,若编程时需要用到这些数据单元,必须对堆栈指针SP进行初始化,原则上设在任何一个区域均可,但一般设在30H—1FH之间较为适宜。

数据的写入堆栈我们称为入栈(PUSH,有些文献也称作插入运算或压入),从堆栈中取出数据称为出栈(POP,也称为删除运算或弹出),堆栈的最主要特征是“后进先出”规则,也即最先入栈的数据放在堆栈的最底部,而最后入栈的数据放在栈的顶部,因此,最后入栈的数据出栈时则是最先的。这和我们往一个箱里存放书本一样,需将最先放入箱底部的书取出,必须先取走最上层的书籍。这个道理非常相似。

那么堆栈有何用途呢?堆栈的设立是为了中断操作和子程序的调用而用于保存数据的,即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来,否则返回时,CPU并不知道原来的程序执行到哪一步,原来的中间结果如何?所以在转入执行其它子程序前,先将

需要保存的数据压入堆栈中保存。以备返回时,再复原当时的数据。供主程序继续执行。

转入中断服务程序或子程序时,需要保存的数据可能有若干个,都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套,那么需保存的数据就更多,这要求堆栈还需要有相当的容量。否则会造成堆栈溢出,丢失应备份的数据。轻者使运算和执行结果错误,重则使整个程序紊乱。

MCS-51的堆栈是在RAM中开辟的,即堆栈要占据一定的RAM存储单元。同时MCS-51的堆栈可以由用户设置,SP的初始值不同,堆栈的位置则不一定,不同的设计人员,使用的堆栈区则不同,不同的应用要求,堆栈要求的容量也有所不同。堆栈的操作只有两种,即进栈和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据,都是对栈顶单元进行的,SP就是即时指示出栈顶的位置(即地址)。在子程序调用和中断服务程序响应的开始和结束期间,CPU都是根据S P指示的地址与相应的RAM存储单元交换数据。

堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给PC,以保证程序从断点处继续执行,这种方式是不需要编程人员干预的。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为PUSH指令,在中断服务程序或子程序调用时作为现场保护。出栈操作P OP指令,用于子程序完成时,为主程序恢复现场。

什么是堆栈?MCS-51单片机的堆栈怎样设置的?

答:程序设计时,往往需要一个后进先出的RAM区,以保存CPU的现场。这种后进先出的缓冲区,就称为堆栈。

MCS-51单片的堆栈原则上设在内部RAM的任意区域内。但是,一般设在31H~7FH的范围之间,栈顶的位置由栈指针SP指出。

51单片机堆栈操作指令举例说明

这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP

所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。

堆栈操作指令有两条: PUSH direct POP direct 第一条指令称之为推入,就是将direct中的内容送入堆栈中,第二条指令称之为弹出,就是将堆栈中的内容送回到direct中。推入指令的执行过程是,首先将SP中的值加1,然后把SP中的值当作地址,将direct中的值送进以堆栈操作指令有两条:

PUSH direct

POP direct

第一条指令称之为推入,就是将direct中的内容送入堆栈中,第二条指令称之为弹出,就是将堆栈中的内容送回到direct中。推入指令的执行过程是,首先将SP中的值加1,然后把SP中的值当作地址,将direct中的值送进以SP中的值为地址的RAM单元中。例:

MOV SP,#5FH

MOV A,#100

MOV B,#20

PUSH ACC

PUSH B

则执行第一条PUSH ACC指令是这样的:将SP中的值加1,即变为60H,然后将A中的值送到60H单元中,因此执行完本条指令后,内存60H单元的值就是100,同样,执行PUSH B时,是将SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后,61H单元中的值变为20。

POP指令的在单片机中执行是这样的,首先将SP中的值作为地址,并将此地址中的数送到POP指令后面的那个direct中,然后SP减1。

接上例:

POP B

POP ACC

则执行过程是:将SP中的值(现在是61H)作为地址,取61H单元中的数值(现在是20),送到B中,所以执行完本条指令后B中的值是20,然后将SP减1,因此本条指令执行完后,SP的值变为60H,然后执行POP ACC,将SP中的值(60H)作为地址,从该地址中取数(现在是100),并送到ACC中,所以执行完本条指令后,ACC中的值是100。

这有什么意义呢?ACC中的值本来就是100,B中的值本来就是20,是的,在本例中,的确没有意义,但在实际工作中,则在PUSH B后一般要执行其他指令,而且这些指令会把A 中的值,B中的值改掉,所以在程序的结束,如果我们要把A和B中的值恢复原值,那么这些指令就有意义了。

还有一个问题,如果我不用堆栈,比如说在PUSH ACC指令处用MOV 60H,A,在PUSH B 处用指令MOV 61H,B,然后用MOV A,60H,MOV B,61H来替代两条POP指令,不是也一样吗?是的,从结果上看是一样的,但是从过程看是不一样的,PUSH和POP指令

都是单字节,单周期指令,而MOV指令则是双字节,双周期指令。更何况,堆栈的作用不止于此,所以一般的计算机上都设有堆栈,单片机也是一样,而我们在编写子程序,需要保存数据时,常常也不采用后面的办法,而是用堆栈的办法来实现。

例:写出以下单片机程序的运行结果

MOV 30H,#12

MOV 31H,#23

PUSH 30H

PUSH 31H

POP 30H

POP 31H

结果是30H中的值变为23,而31H中的值则变为12。也就两者进行了数据交换。从这个例程能看出:使用堆栈时,入栈的书写次序和出栈的书写次序必须相反,才能保证数据被送回原位,不然就要出错了。

另外特别注意事项:

进行堆栈操作时,我们不能: PUSH R0 PUSH R1 而只能: PUSH 00H PUSH 01H POP也是一样。

(仓库管理)存货属性设置仓库

2009-06-22 10:35 星期一 存货属性 存货档案MPS/MRP 如果是工业账套,则需要显示并输入存货档案MPS/MRP页的相关信息资料。 ?成本相关:表示该物料是否包含在物料清单中其母件的成本累计中。在存货档案中该栏位值,成为物料清单维护中子件设定为是否成本累计的默认值。 ?是否切除尾数:一种计划修正手段,说明由MRP/MPS系统计算物料需求时,是否需要对计划订单数量进行取整。选择"是"时,系统会对数量进行向上进位取整,(切除尾数的例子:计算出的 数量为3.4,选择切除尾数后,MPS/MRP会把此数量修正为4) ?是否令单合并:当供需政策为LP时,可选择同一销售订单(相同行号)的净需求是否予以合并。 ?例如:有两个产品A及F,其物料清单如下,括号内为全部提前期。 ? ? ?销售订单#1订购A,另一销售订单#2订购F,在B、C、E的不同提前天数之下,B会有4个不同需求日期,假设如下: ?(1)7月20日100件销售订单#1 ?(2)7月15日150件销售订单#1 ?(3)7月12日 80件销售订单#2 ?(4)7月8日200件销售订单#2 ?(1)若B的供需政策为LP,并选择令单合并,则上述4项需求并成二:7月15日250件、7月8日280件。

?(2)若B的供需政策为LP,而不选择令单合并,则上述4项需求维持不变。 ?(3)若B的供需政策为PE,而供应期间为10天,则上述4项需求并成二:7月8日430件、7月20日100件。 ?(4)若B的供需政策为PE,而供应期间为5天,则上述4项需求并成三:7月8日280件、7月15日150 件、7月20日100件。 ?是否重复计划:表示此存货按重复计划方式还是按离散的任务方式进行计划与生产管理:选择" 是"时,MPS/MRP将重复的日产量方式编制计划和管理生产订单。若不选择此选项,系统则以传统的离散计划方式来管理。只有自制件才可以设置为重复计划。 ?MPS件:本栏位用于区分此物料是MPS件还是MRP件,供主生产计划系统和物料需求计划之用,可选或不选择。若选择,则表明此存货为主生产计划对象,称为MPS件(MPS Items)。列入MPS 件范围的,通常为销售品、关键零组件、供应提前期较长或占用产能负荷多或作为预测对象的存货等。MPS件的选择可按各阶段需要而调整,以求适量。若不选择,则不列为主生产计划对象,即为MRP展开对象,也称为非MPS件。未启用主生产计划系统之前,可将全部存货定为非MPS 件,即将全部存货列为MRP计算对象。在启用主生产计划或需求规划系统之前,本栏位可不理会。?预测展开:可选择是/否。选项类、PTO模型属性的存货默认为是不可改,ATO模型、计划品属性的存货默认为是可改,其它属性的存货默认为否不可改。设置为是的存货,在产品预测订单按计划、模型或选项类物料清单执行预测展开时,将视为被展开对象。关于产品预测展开,详细请参照《主生产计划》或《需求规划》中"产品预测订单输入"说明。 ?允许BOM母件:如果存货属性为'计划品、ATO、PTO、选项类、自制、委外件'时,该属性默认为'是'可改,如果该存货为'外购件',则该属性默认为'否'可改,其它存货属性一律为'否'不可改。?允许BOM子件:'计划品、ATO、PTO、选项类、自制、委外件、外购件'默认为'是'可改,其它存货属性一律为'否'不可改。 ?允许生产订单:'自制'属性默认为'是'可改;'委外、外购'属性默认为'否'可改;其它存货属性一律为'否'不可改。 ?关键物料:是指在交期模拟计算时是否考虑该物料。 ?生产部门:该自制存货通常负责的生产部门,为建立该存货生产订单时的默认值。 ?计划员:说明该存货的计划资料由谁负责,须首先在职员档案建档。 ?计划方法:可选择R/N。R表示此存货要列入MRP/MPS计算的对象,编制MPS/MRP计划;N表示该存货及其以下子件都不计算需求,不列入MRP/MPS展开。如量少价低、可随时取得的物料,可采用再订购点或其它方式计划其供应。

趣解单片机堆栈概念

关于单片机堆栈概念的一个有趣的解释 因为单片机有CPU、存储器、IO等等,使他(人性化一点以配合下文)看起来就像一个比较小的计算机,所以,在理解单片机的时候如果能把你之前有的那些也许仅仅是直觉上的对计算机的理解融入进来的话,可能会对你学习单片机的概念有极大的帮助,至少对于我是这样的。 我想在关于单片机的众多让你头晕脑胀、摸不着头脑甚至想撞墙的概念里面,“堆栈”可能是其中最可恶的一个,因为即使单单是从汉语的角度来理解这个词就已经让你很晕了,其实我最初也想不通这是哪位大侠的创意,不过不用担心,这里我们完全不去讨论关于这个词的问题(这个词用得其实很好“堆”和“栈”都有他们各自的意思,准确的概括了这个区域的功能,有兴趣可以Baidu一下),这里我会打一个比较有趣的比方,以此来绕过那些令你想撞墙的概念,并使你在直觉上对“堆栈”这个概念有一个深刻的理解。 你基本上应该清楚,单片机里面是有存储区和CPU的,如果你不清楚,那么我刚刚告诉你了,请记住。现在,请你把单片中的CPU想成一个人(你完全可以把他想成是你宿舍的那个天天和你吵嘴的同学,一会你就会发现这会非常有趣),在这里就叫他C哥吧,不过这个人不同于常人,有一些特点,一会我们会慢慢说清楚,现在要告诉你的关于这个人的第一个特点

是:他的记忆能力很差。下面,请你把存储区想象成一个一个排好的小盒子,这些盒子的作用大致可以分成两类:1、保存 写有你命令的纸条,比如你在某个盒子里面的纸条上写着:去洗我的袜子!;2、保存你的一些东西,比如你那双正在污染宿舍空气的臭袜子。因为C哥是一个记忆力不怎么好的人,所以,这些盒子都有自己的编号,以方便他查找。 那么,现在,我们可以来说明一下单片机是如何工作的了。首先,你要把所有的命令还有需要处理的东西放进那些小盒子,比如刚才提到的你那双待洗的袜子还有那张纸条,这时你应该发现C哥另一个特点:笨——他只会做你明确告诉他的事情,也就是说,如果你没有在纸条上写“去洗我的袜子!”,那么C 哥极有可能会无动于衷地看着你的袜子直到他被熏晕倒,当然,更可能的情况是他根本找不到你的袜子…好了,当你把要做的事情和该怎么做写到盒子里之后,下面的任务就交给C哥了。C哥做事真的很讲原则,他会按照你给定的顺序或者——如果你没有给定的话,根据盒子上面的编号按照从小到大的顺序——一个一个地打开盒子,读取里面的命令、处理相应的事件,直到所有的事情都执行完毕,他就会休息。请你牢记这个简单而有趣的过程,因为其实单片机就是这样工作的,当然,这里忽略了许多细节,但是这对你从直觉上理解单片机的概念以及足够了。 下面,就要开始说明堆栈这个概念了,思来想去,还是觉

51单片机基础知识试题题库(复习资料)

单片机原理与应用复习资料 第二章习题参考答案 一、填空题: 1、当MCS-51引脚ALE有效时〃表示从P0口稳定地送出了低8位地址。(备注:ALE 为地址锁存控制信号,书上P22) 2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。(p25 更具体些是在内部存储器的用户RAM区开辟的) 3、当使用8751且EA=1〃程序存储器地址小于1000H 时〃访问的是片内ROM。 4、MCS-51系统中〃当PSEN信号有效(备注:低电平为有效信号)时〃表示CPU要从外部程序存储器读取信息。(p22) 5、MCS-51有4组工作寄存器(p23 备注:称为通用寄存器或者工作寄存器)〃它们的地址范围是00H~1FH 。(延伸:通用寄存器占去32个单元,位寻址区占去16个单元,用户RAM区占去80个单元,三者总共为128个单元,组成内部数据存储器的低128单元区) 6、MCS-51片内20H~2FH(即为位寻址区)范围内的数据存储器〃既可以字节寻址又可 以位寻址。(p24) 7、PSW中RS1 RS0=10时〃R2的地址为12H 。 8、PSW中RS1 RS0=11时〃R2的地址为1AH 。(p27 查表2.3即可) 9、单片机系统复位后〃(PSW)=00H〃因此片内RAM寄存区的当前寄存器是第0 组〃8个寄存器的单元地址为00H ~ 07H 。(p27 参考下一题) 10、PC复位后为0000H 。(p38 查表2.6即可,有各种寄存器的初始化状态) 11、一个机器周期= 12 个振荡周期= 6 个时钟周期。(p37) 12、PC的内容为将要执行的下一条指令地址。(p30)

存货管理规定修订版

存货管理规定修订版 IBMT standardization office【IBMT5AB-IBMT08-IBMT2C-ZZT18】

存货管理办法 第一章总则 第一条为了加强公司存货的内部控制和管理,防范存货业务中的差错和舞弊,保护存货的安全、完整,提高存货运营效率,根据相关法律法规及有关规定,并结合公司实际情况,制定本规范。 第二条本规范所称存货,是指公司在日常活动中持有以备出售的产成品或商品、处在生产过程中的在产品、在生产过程或提供劳务过程中耗用的材料和物料,主要包括各类原材料、半成品、产成品、生产辅料等。 第三条公司各级领导对本公司存货业务内部控制的建立健全和有效实施负责。在建立并实施存货内部控制制度中,应当强化对以下环节的风险控制,并采取相应的控制措施:(一)权责分配和职责分工应当明确,机构设置和人员配备应当科学合理; (二)存货请购依据应当充分适当,请购事项和审批程序应当明确; (三)存货采购、验收、领用、盘点、处置的控制流程应当清晰,对存货预算、供应商的选择、存货验收、存货保管及重要存货的接触条件、内部调剂、盘点和处置的原则及程序应当有明确的规定。 第二章职责分工与授权批准 第四条公司应当建立存货业务的岗位责任制,明确相关部门和岗位的职责权限,确保办理存货业务的各岗位相互分离、制约和监督。采购部、仓储部、生产部、销售部负责对在

库物资的采购、保管、搬运、防护、交接、销售、处置等管理工作。部分半成品库房在车间的,由各车间负责保管及收发。公司不得由同一部门或个人办理存货的全过程业务。第五条公司应当配备具备良好的职业道德和业务素质的合格人员办理存货业务。建立存货业务的授权批准制度,负责存货采购的部门应明确授权批准的方式、程序和相关控制措施,采购人员应按照生产计划按时编制公司物资采购计划,年度物资采购计划要由部门领导及主管副总经理审批,并经相关部门会签后总经理审批。季度和月度采购计划原则上根据年度生产计划安排,由部门领导审批后执行。严禁未经授权的部门或人员办理存货业务。 第六条审批人应当根据存货授权批准制度的规定,在授权范围内进行审批,不得超越审批权限。经办人应当在职责范围内,按照审批人的批准意见办理存货业务。对于审批人超越授权范围审批的存货业务,经办人有权拒绝办理,并及时向审批人的上级授权部门报告。 第七条对存货的管理和控制通知公司ERP管理系统实现,严格按照系统程序进行管理。综合部应注意ERP系统的有效性、可靠性和安全性,定期检查运行程序,并制定防范意外事项的有效措施。 第三章请购与采购控制 第八条公司采购部应当按照公司采购控制程序文件,根据仓储计划、资金筹措计划等制定采购计划,对存货的采购实行预算管理,合理确定库存存货的结构和数量。仓储部应制定合理的存储定额,保证经济合理的物资储备数量标准,以减少资金浪费。

单片机中空间和堆栈的意义

单片机中空间和堆栈的意义 关于单片机的知识,体积庞大且结构复杂。初学者很容易陷入困境,最终 失去对单片机的兴趣。因此在学习单片机时一定要对基础知识进行特别的巩固。在本文中,小编将为大家介绍单片机地址空间以及堆栈的相关知识,下面大家 就随小编来一起看一看吧。 Data:可寻址片内ram0x00-0x7f Bdata:可位寻址片内ram Idata:可寻址片内ram,允许访问全部内部ram0x00-0xff Padata:分页寻址访问片外ram Xdata:可寻址片外ram0x0000-0xffff code--程序存储区单片机存储器分ROM跟RAM之分,RAM存放中间结果,数据和经常变换的代码,ROM存放code。51单片机采用的是哈弗结构,即数 据跟代码拥有单独的地址空间。存储器可以分为程序存储器(eerom,flash之类),内部数据存储器(ram),SFR,位地址空间和外部数据存储器。内部数据存储器 在物理上分为内部SRAM和特殊功能寄存器,而内部分为低(0x00-0x7f)和 (0x80-0xff),高128字节地址重复,需要不同的访问方式。SFR用直接寻址方式,SRAM需要间接。这里SFR是寄存器,硬件上是中央处理器的内部组成部分,访问速度很快。在低128B的SRAM,0x00-0x1f是4个通用工作寄存器, 每组有R0-R7。使用哪一组,可以通过PSW中的RS1,RS0来配置。位寻址是在0x20-0x2f。 程序内存可以分为几个区,栈区(stack)、堆区(Heap)、全局区(static)、文字常亮区、程序代码区。程序编译之后,全局变量,静态变量已经分配好内存空间,在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数

库存管理操作手册

库存管理 一、仓库档案的建立 【菜单路径】:〔基础设置〕—〔基础档案〕—〔业务〕—〔仓库档案〕; 选“移动平均法”,仓库属性有根据情况选择。

二、入库业务 1、采购入库单 采购入库单是根据采购到货签收的实收数量填制的单据。 【菜单路径】:〔业务工作〕—〔供应链〕—〔库存管理〕—〔采购入库〕—〔采购入库单〕 【操作说明】: 1)、采购入库单可以手工增加,也可以参照采购订单、采购到货单(到货退回单)、委外订单、委外到货单(到货退回单)生成。 2)、采购入库单可以修改、删除、审核、弃审。

3)、采购入库单如果是手工新增的,则需要输入单价;如果是参照到货单生成的,不需要对单价维护。 2、产成品入库单: a.产成品入库单(蓝字) 填制产成品入库单时,一般只有数量,没有单价和金额。 【菜单路径】:〔业务工作〕—〔供应链〕—〔库存管理〕—〔生产入库〕—〔产成品入库单〕 【操作说明】: 1、产成品入库单可以手工增加,也可以参照生产订单生成,点击“生单”,根据生产订单入库。(注:半成品入库时,也在此界面进行) 2、产成品入库单可以修改、删除、审核、弃审。 3、根据修改现存量时点设置,产成品入库单保存或审核后更新现存量。 4、与生产订单关联的产成品入库单保存时,如果有倒冲料则系统自动生成材料出库单。 5、对于检验不合格的产品可以用红字的产成品入库单退还给相关入库部门。

b.产成品入库单红字(退库单) 1)、成品入库单(红字)一般指产成品验收入库后由于某种原因需要退回入库部门所填制的单据。【菜单路径】:〔业务工作〕—〔供应链〕—〔库存管理〕—〔生产入库〕—〔产成品入库单〕 【操作说明】: 2)、对已入库的生产订单先取消关闭。 3)、产成品入库单(红字),可以手工增加;也可以参照生产订单生成,点击“生单”,在下拉菜单中选中“生产订单(红字)”;在出现的过滤界面中,对“执行完未关闭的订单”里选“是”,过滤订单;选中后在入库单(红字)的界面中可对要退库的数量做修改,后保存。 4)、产成品入库单(红字)可以修改、删除、审核、弃审。 5)、根据修改现存量时点设置,产成品入库单(红字)保存或审核后更新现存量。 3、其它入库单 其它入库单是指除采购入库、产成品入库之外的其它入库业务,如调拨入库、盘盈入库、等业务形成的入库单。其它入库单一般由系统根据其它业务单据自动生成,也可手工填制。 【菜单路径】:〔业务工作〕—〔供应链〕—〔库存管理〕—〔其他入库〕—〔其它入库单〕

单片机课后答案(C语言)

第二章习题参考答案 一、填空题: 1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。 2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。 3、当使用8751且EA=1,程序存储器地址小于 1000H 时,访问的是片内ROM。 4、MCS-51系统中,当PSEN信号有效时,表示CPU要从外部程序存储器读取信息。 5、MCS-51有4组工作寄存器,它们的地址范围是 00H~1FH 。 6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。 7、PSW中RS1 RS0=10时,R2的地址为 12H 。 8、PSW中RS1 RS0=11时,R2的地址为 1AH 。 9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第 0 组,8个寄存器的单元地址为 00H ~ 07H 。 10、PC复位后为 0000H 。 11、一个机器周期= 12 个振荡周期= 6 个时钟周期。 12、PC的内容为将要执行的的指令地址。 13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 2us 。 14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为 26H 。 15、若A中的内容为63H,那么,P标志位的值为 0 。 16、8051单片机复位后,R4所对应的存储单元的地址为 04H ,因上电时PSW= 00H 。这时当前的工作寄存器区是第 0 工作寄存器区。 17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。 18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区 和用户RAM区。 19、通过堆栈操作实现子程序调用,首先就要把 PC 的内容入栈,以进行断点保护。 调用返回时,再进行出栈保护,把保护的断点送回到 PC 。 20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS -51的PC是16位的,因此其寻址的范围为 64 KB。 21、MCS-51单片机片内RAM的寄存器共有 32 个单元,分为 4 组寄存器,每组 8 个单元,以R0~R7作为寄存器名称。 22、但单片机的型号为8031/8032时,其芯片引线EA一定要接低电平。 二、选择题: 1、当MCS-51复位时,下面说法正确的是( A )。 A、 PC=0000H B、 SP=00H C、 SBUF=00H D、 P0=00H 2、PSW=18H时,则当前工作寄存器是( D )。 A、 0组 B、 1组 C、 2组 D、 3组 3、MCS-51上电复位后,SP的内容应是( B )。 A、 00H B、 07H C、 60H D、 70H 4、当ALE信号有效时,表示( B )。 A、从ROM中读取数据 B、从P0口可靠地送出低8位地址 C、从P0口送出数据 D、从RAM中读取数据 5、MCS—51单片机的CPU主要的组成部分为( A )。 A、运算器、控制器 B、加法器、寄存器 C、运算器、加法器 D、运算器、译码器 6、单片机上电复位后,PC的内容和SP的内容为(B)。

51单片机基础知识及期末复习

51单片机简答题部分(经典) 1、什么叫堆栈? 答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。 2、进位和溢出? 答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。 3、在单片机中,片内ROM的配置有几种形式?各有什么特点? 答:单片机片内程序存储器的配置形式主要有以下几种形式:(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固 化,用户不能修改ROM中的程序。掩膜ROM单片机适合于 大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法 将程序制作在芯片的ROM。 (2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM 中,也可以将EPROM中的信息全部擦除。擦去信息的芯片 还可以再次写入新的程序,允许反复改写。 (3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。 无ROM型单片机价格低廉,用户可根据程序的大小来选择外接 程序存储器的容量。这种单片机扩展灵活,但系统结构较复 杂。 (4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。该类型目前比较常用 (5)OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程 序存储器中,程序写入后不能再改写。这种芯片的价格也较 低。 4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周

库存管理及存货核算操作手册

目录

1.库存管理及存货核算系统整体流程图 2.各操作节点详细说明 库存管理系统参数设置 功能路径: 【成本管理】->【存货核算】->【参数设置】->【存货核算系统参数】 参数也称为业务处理控制参数,是指在企业业务处理过程中所使用的各种控制参数,系统参数的设置将决定用户使用系统的业务模式、业务流程、数据流向。 用户在进行选项设置之前,一定要详细了解选项开关对业务处理流程的影响,并结合企业的实际业务需要进行设置。由于有些选项在日常业务开始后不能随意更改,用户最好在业务开始前进行全盘考虑,尤其一些对其他系统有影响的选项设置更要考虑清楚。 参数说明 库存更新方式1、按组织设定。一旦组织下存在更新库存的单据,参数不再允许修改; 2、单选,提供2个选项; 设置保存时,则库存单据保存、删除、作废时更新库存; 设置为审核时,则库存单据审核、反审核时更新库存。 批号拣货规则1、按组织设定,可随时修改; 2、此参数针对启用批号管理或同时启用批号管理和保质期的物料有效; 3、提供选项:顺序出库-批号顺序、顺序出库-入库日期、近效期先出、手工指定。 顺序出库-批号顺序:按照批号排序的顺序,依次出库; 顺序出库-入库日期:按批号入库日期先进先出,相同入库日期的按批号顺序出库。 近效期先出:按保质期中有效期至的先后顺序,相同保质期、批号不同时,再按批号入库 入库日期先进先出; 手工指定:系统不做任何处理,用户手工指定批号出库。 保质期拣货规则1、按组织设定,可随时修改; 2、此参数针对只启用保质期管理的物料有效。 3、提供选项:手工指定、近效期先出、先进先出。 近效期先出:按保质期中有效期至的先后顺序,依次出库;先进先出:按生产日期从小到大的顺序,依次出库; 手工指定:系统不做任何处理,用户手工指定保质期出库。 库存异常检查检查项包括: 1、基本单位库存量与辅单位库存量为一正一负;

仓库存货管理制度

存货管理制度 第一章总则 第一条为使存货管理工作规范化,保证仓库和库存物资的安全完整,更好地为公司经营管理服务,结合本公司的具体情况,特制订本规定。 第二条存货管理工作的任务: (一)根据本制度做好物资出库和入库工作,并使物资储存、供应、销售各环节平衡衔接。 (二)做好物资的保管工作,据实登记仓库实物帐,及时编报库存报表,经常清查、盘点库存物资,做到帐、卡、物相符。 (三)积极开展废旧物资的回收、整理、利用工作。协助做好呆滞物资的处理工作。 (四)做好仓库安全保卫、防火及卫生工作,确保仓库和物资的安全,保持库容整洁。 第三条公司各部门所购一切物资材料,严格履行先入库、后领用的规定,如属直提使用部门或场所,亦必须事后及时补办出、入库手续。 第四条本规定适用于公司所有库管部门及库管部门工作人员。 第二章入库管理规定 第五条采购物资抵库后,库管员要按照已核准的“订货单”或“采购申请单”和“送货单”仔细核对物资的品名、规格、型号、数量及外包装是否完好无损。核对无误后将到货日期及实收数量填记于“订货单”或“采购申请单”,同时开具“入库单”办理入库手续。 第六条如发现单货不符、外包装破损或其他质量问题,要及时向上级反映,同时通知售后服务部门、采购部门和厂家代表(如有),共同现场鉴定,必要时拍照记录。原则上单货不符的物资不得接受,如采购部门要收下该物资时,库管员要告知上级,并于单据上注明实际收货情况,并会签采购部门。 第七条物资抵库但库管部门尚未收到“订货单”或“采购申请单”时,库管员应先洽询采购部门,确认无误后始得办理入库手续。 第八条发生退库或退货产品时要认真审核“退货单”或有关凭证,核查批准手续是否齐全,认真记录退库或退货产品数量、质量状况。退库或退货产品要单独存放,如可重新销售应优先出库。对于使用单位退回的物资,库管员要依据退库原因,研判处理对策,如原因系由于供应商所造成的,要立即通知采购部门。第九条入库时要认真查抄入库号码,填写入库号码单。每日业务终了,及时将入库号码单报至统计员处输入计算机。 第三章出库管理规定 第十条办理出库时要认真审核“出库单”或“领用单”,核查出库批准手续(特别是有无财会部门收讫、转讫戳记)是否齐全,严格依据所列项目办理出库,并核签有关单据。发现计算有误时要立即通知开票人员更正后发货。 第十一条发放物资时要坚持“推陈储新、先进先出、按规定供应、节约”的原则,发货坚持一盘底、二核对、三发货、四减数。同时坚持单货不符不出库、包装破损不出库、残损变形不出库、手续不全不出库。对贪图方便,违反发货原则造成物资变质、大料小用、优材劣用以及差错等损失,库管员负经济责任。 第十二条优先保证自提商品,及时准确交给货主并当面点清。

T6库存模块

库 存 模 块 一、仓库基础资料 1.1 存货信息

点击“基础设置”->“基础档案”->“存货”->“存货分类”、“计量单位”和“存货档案”。 1.1.1存货分类: 说明(以下功能通用): :打印的页面设置。 :对当前页面进行打印。 :对当前页面进行打印预览。 :对当前的页面进行输出,包括输出成excel文件。 :对当前的分类进行增加。 :对当前的分类进行修改。 :对当前的分类进行删除。 :放弃对当前页面编辑,不保存。 :保存当前编辑。 :帮助。 1.1.2计量单位:

点击“分组”:设置“无换算率”,“固定换算率”,“浮动换算率”。 录完分组后,,再点击“单位”:设置对应分组里面的单位信息。

点击“增加”,录入“计量单位编码”,“计量单位名称”,然后保存。 1.1.3存货档案: 说明: :对当前页面重新按条件查询。 :对当前页面的信息进行条件的过滤。 :对当前的页面进行栏目的查看与设置。包括对应的字段的显示与隐藏。 :按条件对当前信息进行批量修改。 点击“增加”,出现存货档案增加页面:

录入“存货编码”,“存货名称”,“存货分类”,“计量单位组”,“主计量单位”,“存货属性”等信息,然后保存。 1.2 仓库信息 点击“基础设置”->“基础档案”->“业务”->“仓库档案”。 点击增加,录入“仓库编码”,“仓库名称”,“计价方式”,“仓库属性”,等信息,然后保存。

注意:日用品总公司建立仓库档案时,要另外勾上“货位管理” 1.3期初数量结存 点击“业务工作”->“供应链”->“库存管理”->“初始设置”->“期初数据”->“期初结存”。 点击选择按钮,在前方块内打√后会自动带出所有库存,然后录入相应的数量

什么是堆栈,51单片机堆栈指针SP的使用举例

什么是堆栈,51单片机堆栈指针SP的使用举例 SP:堆栈指针。(专用于指出堆栈顶部数据的地址。)堆栈介绍:日常这样的现象,家里洗的样的现象,家里洗的碗,一只一只摞起来,最晚放上去的放在最上面,而最早放上去的则放在最下面,在取的时候正好相反,先从最上面取,这种现象我们用一句话来概括:先进后出,后进先出。请大家想想,还有什么地方有这种现象?其实比比皆是,建筑工地上堆放的砖头、材料,仓库里放的货物,都是先进后出,后进先出,这实际是一种存取物品的规则,我们称之为堆栈。在单片机中,我们也能在RAM中构造这样一个区域,用来存放数据,这个区域存放数据的规则就是先进后出,后进先出,我们称之为堆栈。为什么需要这样来存放数据呢?存储器本身不是能按地址来存放数据吗?对,知道了地址的确就能知道里面的内容,但如果我们需要存放的是一批数据,每一个数据都需要知道地址那不是麻烦吗?如果我们让数据一个接一个地放置,那么我们只要知道第一个数据所在地址单元就能了(看图2)如果第一个数据在27H,那么第二、三个就在28H、29H了。所以利用堆栈这种办法来放数据能简化操作那么51中堆栈什么地方呢?单片机中能存放数据的区域有限,我们不能够专门分配一块地方做堆栈,所以就在内存(RAM)中开辟一块地方,用于堆栈,但是用内存的哪一块呢?还是不好定,因为51是一种通用的单片机,各人的实际需求各不相同,有人需要多一些堆栈,而有人则不需要那么多,所以怎么分配都不合适,怎样来解决这个问题?分不好干脆就不分了,把分的权利给用户(编程者),根据自已的需要去定吧,所以51单片机中堆栈的位置是能变化的。而这种变化就体现在SP中值的变化,看图2,SP中的值等于27H 不就相当于是一个指针指向27H单元吗?当然在真正的51机中,开始指针所指的位置并非就是数据存放的位置,而是数据存放的前一个位置,比如一开始

仓库存货储存管理制度

仓库存货的储存管理制度 存货是指公司为销售和在生产经营过程中的耗用而储存的资产,包括原材料、辅助材料、燃料、自制半成品、产成品、包装物及低值易耗品等。 1、仓库设置材料、产品数量明细保管帐,材料、产品入库和出库时按要求登记 保管明细帐。 2、材料、产品按规格、型号、品名堆放,并建立数量卡片,以控制各堆垛的材 料、产品、数量增减变化,随时结出库存数量。保管员对仓库分管的产品、材料要做到心中有数。 3、保管员要经常对仓库管理范围的物资进行维护和检查,发生破损、霉变要及 时向领导汇报,采取措施,尽量减少损失。 4、仓库每月要进行库存物资盘点,每季组织财务、仓库人员进行集体盘点按品 种逐个进行。对发生的溢余、短缺、损耗要找出原因及时汇报,按要求进行帐务处理。在盘点的同时,应注意库存结构,如不合理,应建议领导采取措施,调整库存结构。 5、材料、产品的入库、出库要严把手续关。凡是办理入库手续,保管员一定做 到过磅点数、认真复核原始发票、数量与实物是否相符、外观质量是否符合要求、有无损坏等后,方可开列一式三联验收入库单,以实物量填写,保管员一联,另两联转给会计。如果实物与原始单据不相符,保管员应拒签验收单。(特殊情况附有说明) 如果外购材料入库,无原始发票,必须办理估价入帐验收单,经审计部门签字送交材料会计。 材料、产品的出库分为内部领料和销售两部分,凡是内部领料,必须按照公司规定的领料手续由部门经办人签字后,过磅点数方可出库,出库程序按照先进先出的原则,确保财产的保持时间,避免造成损失。 对外销售的材料、产品出库时,必须持财务加盖交款专章的提货单,方可出库。 外购材料,已经入库手续,如果发现质量有问题,需要退货给厂家,保管员必须开列一式三联,红验收入库单,先通知财务部查帐面是否押款,经

单片机的堆栈

堆栈是一种数据结构。一直以为堆栈是一个寄存器,惭愧!教科书定义:所谓堆栈,就是只允许在其一端进行数据插入和数据删除的线性表。51单片机的单片机的堆栈是在内部RAM中开辟的。这句话表明了堆栈的位置。 那么堆栈到底有什么作用? 堆栈主要是为子程序调用和中断操作而设立的,因此对应有两项功能:保护断点和保护现场。 单片机的程序归根结底是个死循环,反复在执行Main函数(主程序),你可以只写一个函数Main,那么你这个函数随着功能的增多而变得异常大,而且非常不具备可读,这个时候就需要子函数(子程序)了。主函数在调用完子函数后会返回到主函数中,这样就可以调用其它函数并且继续这个死循环。在计算机去执行子函数或者中断服务函数,如何确保程序能够正确地返回到主函数中并且继续正确执行后面的内容?因为在执行子函数或者中断服务函数时,很有可能会破坏寄存器单元的内容,但这些寄存器单元在子函数必须要用到?这个问题看起来比较难解决了。这个时候就要用到断点保护和现场保护了。 保护断点:在调用子程序和堆栈时,将返回地址(执行完子程序或者中断后要执行的下一个指令的的地址(PC 寄存器值)) 送入堆栈,程序返回时,这个值自动弹回PC。这种方式是自动使用堆栈的,程序中一般无需理会。在这个过程中,地址送入堆栈时,堆栈指针SP+2,因为51的寻址范围是64KB,再查看RAM中堆栈单元就可以发现这个时候已经变成了PC的值,在返回的时候SP-2,但是堆栈中的内容在下一次堆栈操作之前不会发生变化。来看下面的仿真图:

程序初始化将SP设置为0x07,这个时候RAM中全部被清零。单步运行。 这个时候SP的值已经变为0x30,但是内容依旧没有改变。 运行到断点。

u8存货属性

u8存货属性 销售:具有该属性的存货可用于销售。发货单、发票、销售出库单等与销售有关的单据参照存货时,参照的都是具有销售属性的存货。开在发货单或发票上的应税劳务,也应设置为销售属性,否则开发货单或发票时无法参照。 外购:具有该属性的存货可用于采购。到货单、采购发票、采购入库单等与采购有关的单据参照存货时,参照的都是具有外购属性的存货。开在采购专用发票、普通发票、运费发票等票据上的采购费用,也应设置为外购属性,否则开具采购发票时无法参照。 生产耗用:具有该属性的存货可用于生产耗用。如生产产品耗用的原材料、辅助材料等。具有该属性的存货可用于材料的领用,材料出库单参照存货时,参照的都是具有生产耗用属性的存货。 自制:具有该属性的存货可由企业生产自制。如工业企业生产的产成品、半成品等存货。具有该属性的存货可用于产成品或半成品的入库,产成品入库单参照存货时,参照的都是具有自制属性的存货。 应税劳务:指开具在采购发票上的运费费用、包装费等采购费用或开具在销售发票或发货单上的应税劳务。应税劳务属性应与"自制"、"在制"、"生产耗用"属性互斥。 计划品:具有该属性的存货主要用于生产制造中的业务单据,以及对存货的参照过滤。计划品代表一个产品系列的物料类型,其物料清单中包含子件物料和子件计划百分比。可以使用计划物料清单来帮助执行主生产计划和物料需求计划。与"存货"所有属性互斥。属于虚拟件。 委外:具有该属性的存货主要用于委外管理。委外订单、委外到货单、委外发票、委外入库单等与委外有关的单据参照存货时,参照的都是具有委外属性的存货。 ATO:指面向订单装配,即接受客户订单后方可下达生产装配。ATO在接受客户订单之前虽可预测,但目的在于事先提前准备其子件供应,ATO件本身则需按客户订单下达生产。本系统中,ATO一定同时为自制件属性。若ATO与模型属性共存,则是指在客户订购该物料时,其物料清单可列出其可选用的子件物料,即在销售管理或出口贸易系统中可以按客户要求订购不同的产品配置。ATO模型与PTO模型的区别在于,ATO模型需选配后下达生产订单组装完成再出货,PTO 模型则按选配子件直接出货。组装成产品。(服务器) 选项类:是ATO模型或PTO模型物料清单上,对可选子件的一个分类。选项类作为一个物料,成为模型物料清单中的一层。属于虚拟件。 PTO:指面向订单挑选出库。本系统中,PTO一定同时为模型属性,是指在客户订购该物料时,其物料清单可列出其可选用的子件物料,即在销售管理或出口贸易系统中可以按客户要求订购不同的产品配置。ATO模型与PTO模型的区别在于,ATO模型需选配后下达生产订单组装完成再出货,PTO模型则按选配子件直接出货。按订单出货,销售散件,不组装产品,但一定是一整套!

单片机复位时 堆栈指针sp pc psw tmod scon p0_单片机测试题1

单片机测试题1 一、填空题(每题1分,共10分) 1.MCS-51是指单片机的()号,8031、8051是指单片机的()号。 2.MCS-51共有()条指令,可分为几种不同的寻址方式。如:MOV A,@Ri 属于()寻址方式,MOV C, bit 属于()寻址方式。 3.单片机(计算机)在进行()运算的情况下应使用补码。 4.在程序状态字寄存器PSW中,CY与OV标志的状态可反应指令运算的结果,其中CY 为进位(借位)标志,被用于()符号数加(减)运算;OV为溢出标志,被用于()符号数加(减)运算。 5.转移指令与调用指令的相同点是两种指令都是通过改变程序计数器PC的内容来实现转移的;不同点是,当执行调用指令时,它不仅能转移到某一指定地址处,而且当子程序执行到()指令后,它能自动返回到()指令处,而普通转移指令()能返回。 6.8031有两个16位可编程定时/计数器,其中定时作用是指对单片机()脉冲进行计数,而计数器作用是指对单片机()脉冲进行计数。7.当P1口做输入口输入数据时,必须先向该端口的锁存器写入(),否则输入数据可能出错。 8.堆栈指针SP的内容将始终指示(),当单步执行了调用指令LCALL addr16后SP的内容将()改变。 9.完成不同数制间的转换:(10100101)二=()十;(11000011)二=()十六;(01010111)BCD =()十;(58)十 = )BCD; 10.中断源的优先级别被分为高级和低级两大级别,各中断源的中断请求是属于什么级别是由()寄存器的内容决确定的。 二、选择题(每空2分,共40分) 1.判断是否溢出时用PSW的()标志位,判断是否有进位时用PSW的()标志位。 A.CY B.OV C.P D.RS0 E.RS1 2、调用子程序、中断响应过程及转移指令的共同特点是()。

(精品仓库管理)存货属性设置仓库

(精品仓库管理)存货属 性设置仓库

2009-06-2210:35星期一 存货属性 存货档案MPS/MRP 如果是工业账套,则需要显示并输入存货档案MPS/MRP页的相关信息资料。 ?成本相关:表示该物料是否包含在物料清单中其母件的成本累计中。在存货档案中该栏位值,成为物料清单维护中子件设定为是否成本累计的默认值。 ?是否切除尾数:一种计划修正手段,说明由MRP/MPS系统计算物料需求时,是否需要对计划订单数量进行取整。 选择"是"时,系统会对数量进行向上进位取整,(切除尾数的例子:计算出的数量为3.4,选择切除尾数后,MPS/MRP 会把此数量修正为4) ?是否令单合并:当供需政策为LP时,可选择同一销售订单(相同行号)的净需求是否予以合并。 ?例如:有两个产品A及F,其物料清单如下,括号内为全部提前期。 ?销售订单#1订购A,另一销售订单#2订购F,在B、C、E的不同提前天数之下,B会有4个不同需求日期,假设如下: ?(1)7月20日100件销售订单#1 ?(2)7月15日150件销售订单#1 ?(3)7月12日80件销售订单#2 ?(4)7月8日200件销售订单#2 ?(1)若B的供需政策为LP,并选择令单合并,则上述4项需求并成二:7月15日250件、7月8日280件。 ?(2)若B的供需政策为LP,而不选择令单合并,则上述4项需求维持不变。 ?(3)若B的供需政策为PE,而供应期间为10天,则上述4项需求并成二:7月8日430件、7月20日100件。 ?(4)若B的供需政策为PE,而供应期间为5天,则上述4项需求并成三:7月8日280件、7月15日150件、7月20日100件。 ?是否重复计划:表示此存货按重复计划方式还是按离散的任务方式进行计划与生产管理:选择"是"时,MPS/MRP 将重复的日产量方式编制计划和管理生产订单。若不选择此选项,系统则以传统的离散计划方式来管理。只有自制件才可以设置为重复计划。 ?MPS件:本栏位用于区分此物料是MPS件还是MRP件,供主生产计划系统和物料需求计划之用,可选或不选择。 若选择,则表明此存货为主生产计划对象,称为MPS件(MPSItems)。列入MPS件范围的,通常为销售品、关键零组件、供应提前期较长或占用产能负荷多或作为预测对象的存货等。MPS件的选择可按各阶段需要而调整,以求适量。若不选择,则不列为主生产计划对象,即为MRP展开对象,也称为非MPS件。未启用主生产计划系统之前,可将全部存货定为非MPS件,即将全部存货列为MRP计算对象。在启用主生产计划或需求规划系统之前,本栏位可不理会。 ?预测展开:可选择是/否。选项类、PTO模型属性的存货默认为是不可改,ATO模型、计划品属性的存货默认为是可改,其它属性的存货默认为否不可改。设置为是的存货,在产品预测订单按计划、模型或选项类物料清单执行预测展开时,将视为被展开对象。关于产品预测展开,详细请参照《主生产计划》或《需求规划》中"产品预测订单输入"说明。 ?允许BOM母件:如果存货属性为'计划品、ATO、PTO、选项类、自制、委外件'时,该属性默认为'是'可改,如果该存货为'外购件',则该属性默认为'否'可改,其它存货属性一律为'否'不可改。 ?允许BOM子件:'计划品、ATO、PTO、选项类、自制、委外件、外购件'默认为'是'可改,其它存货属性一律为'否'不可改。 ?允许生产订单:'自制'属性默认为'是'可改;'委外、外购'属性默认为'否'可改;其它存货属性一律为'否'不可改。 ?关键物料:是指在交期模拟计算时是否考虑该物料。

如何优化单片机C程序及堆栈溢出、RAM空间优化

如何优化单片机中的C程序 堆栈溢出:在调试程序的时候有事会碰到堆栈溢出的情况,堆栈为什么会溢出呢,个人总结主要有以下几点: a、是否有修改堆栈指针; c语言编写者一般不会主动修改堆栈指针的,除非在特殊情况下才会涉及到与此相关的操作,如在扩展区独立开辟一段存储空间用于压栈时数据的存储区。 b、是否嵌套的数据保护的内容超过堆栈; 此种情况发生的几率比较多,个人估计占到80%左右,这种情况就是RAM本就不是很充足,此时又发生了中断嵌套,上一个中断占用的现场保护空间还没有释放,另一个中断又要重新占用大量空间进行现场数据的保存。这样可定会造成空间不够用,堆栈溢出是很显然的。建议避免中断嵌套(方法1:可以再优先级低的中断中先关掉优先级高的中断,这或许会影响程序的执行效果。方法2:换用RAM 比较大的IC或扩展RAM,这种方法要提高成本。) c、程序中进行的算术运算比较多 计算机最擅长的运算就是加法运算,在程序中弄了好多浮点运算、求余运算、除法运算,而且数据量很大,运算过程中是要占用很多空

间的,建议能优化算术运算的尽量优化,下面介绍如何优化程序,个人总结加上网上搜索。 优化程序: 1、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。 数组与指针语句具有十分密码的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。但是在Keil中则相反,使用数组比使用的指针生成的代码更短。 2、使用尽量小的数据类型 能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不

相关文档
最新文档