51单片机code的问题(RAM和ROM)+50

51单片机code的问题(RAM和ROM)+50,第1张

1,把段码放在code里,是为了节省RAM。如果放在前256字节内,查表时只要八位地址即可,所以会快些。ROM读取不会慢。单片机执行的每一条指令都是从ROM区读取的。

ROM区的内容是只读的,所以你不能将改变(程序运行中改变)的数组放进去。

2,单片机源程序首先要经过编译,生成机器码,下载到单片机中才可以运行,编译C程序时,从main()开始编译,如果main()程序中用到main()前面的程序,就会编译进去。然后下载到单片机ROM区。也就是烧到ROM区,在单片机运行中用到的变量,会放在RAM区。

3,局部就量或全局就量,都是放在RAM区的,因为RAM区可以读写,这样才可以保存临时数据。for(i=1;i<9;i++)前面肯定会有定义i,如 char i;单片机碰到char i;就会在RAM区分配一个字节,8bit给i用。然后再执行for(i=1;i<9;i++),这时i是可变的,因为执行的是RAM区的i地址内放的数据。

4,你理解的对,补充一下。全局变量一般占用RAM区较高位,如从32H开始,根据编译器不同而不同。且所占用RAM一直占用。局部变量一般临时存放在REGISTER中,执行速度较快。且当子程序执行完毕,资源回收。

上例是那个for循环就是用的局部变量,存放在寄存器中的,子程序执行完毕,寄存器可用作他用。

希望能回答你的问题。

CNC系统是一个专用的实时多任务计算机系统,在它的控制软件中融合了当今计算机软件技术中的许多先进技术,其中最突出的是多任务并行处理和多重实时中断。下面分别加以介绍。

1、多任务并行处理

(1) CNC系统的多任务性。CNC系统通常作为一个独立的过程控制单元用于工业自动化生产中,因此它的系统软件必须完成管理和控制两大任务。系统的管理部分包括输入、I/O处理、显示和诊断。系统的控制部分包括译码、刀具补偿、速度处理、插补和位置控制。在许多情况下,管理和控制的某些工作必须同时进行。例如,当CNC系统工作在加工控制状态时,为了使 *** 作人员能及时地了解CNC系统的工作状态,管理软件中的显示模块必须与控制软件同时运行。当CNC系统工作在NC加工方式时,管理软件中的零件程序输入模块必须与控制软件同时运行。而当控制软件运行时,其本身的一些处理模块也必须同时运行。例如,为了保证加工过程的连续性,即刀具在各程序段之间不停刀,译码、刀具补偿和速度处理模块必须与插补模块同时运行,而插补又必须与位置控制同时进行。

下面给出CNC系统的任务分解图(图3-10(a))和任务并行处理关系图(图3-10(b))。在图3-10(b)中,双向箭头表示两个模块之间有并行处理关系。

(2) 并行处理的概念。并行处理是指计算机在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不相同的工作。并行处理最显著的优点是提高了运算速度。拿n位串行运算和n位并行运算来比较,在元件处理速度相同的情况下,后者运算速度几乎提高为前者的n倍。这是一种资源重复的并行处理方法,它是根据“以数量取胜”的原则大幅度提高运算速度的。但是并行处理还不止于设备的简单重复,它还有更多的含义。如时间重叠和资源共享。所谓时间重叠是根据流水线处理技术,使多个处理过程在时间上相互错开,轮流使用同一套设备的几个部分。而资源共享则是根据“分时共享”的原则,使多个用户按时间顺序使用同一套设备

目前在CNC系统的硬件设计中,已广泛使用资源重复的并行处理方法,如采用多CPU的系统体系结构来提高系统的速度。而在CNC系统的软件设计中则主要采用资源分时共享和资源重叠的流水线处理技术。

(3) 资源分时共享。在单CPU的CNC系统中,主要采用CPU分时共享的原则来解决多任务的同时运行。一般来讲,在使用分时共享并行处理的计算机系统中,首先要解决的问题是各任务占用CPU时间的分配原则,这里面有两方面的含义:其一是各任务何时占用CPU;其二是允许各任务占用CPU的时间长短。

在CNC系统中,对各任务使用CPU是用循环轮流和中断优先相结合的方法来解决。图3-10(c)是一个典型CNC系统各任务分时共享CPU的时间分配图。

系统在完成初始化以后自动进入时间分配环中,在环中依次轮流处理各任务。而对于系统中一些实时性很强的任务则按优先级排队,分别放在不同中断优先级上,环外的任务可以随时中断环内各任务的执行。

每个任务允许占有CPU的时间受到一定限制,通常是这样处理的,对于某些占有CPU时间比较多的任务,如插补准备,可以在其中的某些地方设置断点,当程序运行到断点处时,自动让出CPU,待到下一个运行时间里自动跳到断点处继续执行。

(4) 资源重叠流水处理。当CNC系统处在NC工作方式时,其数据的转换过程将由零件程序输入、插补准备(包括译码、刀具补偿和速度处理)、插补、位置控制4个子过程组成。如果每个子过程的处理时间分别为 ,那么一个零件程序段的数据转换时间将是

如果以顺序方式处理每个零件程序段,即第一个零件程序段处理完以后再处理第二个程序段,依此类推,这种顺序处理时的时间空间关系如图3-11(a)所示。从图上可以看出,如果等到第一个程序段处理完之后才开始对第二个程序段进行处理,那么在两个程序段的输出之间将有一个时间长度为t的间隔。同样在第二个程序段与第三个程序段的输出之间也会有时间间隔,依此类推。这种时间间隔反映在电机上就是电机的时转时停,反映在刀具上就是刀具的时走时停。不管这种时间间隔多么小,这种时走时停在加工工艺上都是不允许的。消除这种间隔的方法是用流水处理技术。采用流水处理后的时间空间关系如图3-11(b)所示。

流水处理的关键是时间重叠,即在一段时间间隔内不是处理一个子过程,而是处理两个或更多的子过程。从图3-11(b)可以看出,经过流水处理后从时间开始,每个程序段的输出之间不再有间隔,从而保证了电机转动和刀具移动的连续性。

从图3-11(b)中可以看出,流水处理要求没一个处理子程序的运算时间相等。而在CNC系统中每一个子程序所需的处理时间都是不相等的,解决的办法是取最长的子程序处理时间为处理时间间隔。这样当处理时间较短的子程序时,处理完成之后就进入等待状态。

(a) 顺序处理

(b) 流水处理

图3-11 资源重叠流水处理

在单CPU的CNC装置中,流水处理的时间重叠只有宏观的意义,即在一段时间内,CPU处理多个子程序,但从微观上看,各子程序分时占用CPU时间。

2、实时中断处理

CNC系统控制软件的另一个重要特征是实时中断处理。CNC系统的多任务性和实时性决定了系统中断成为整个系统必不可少的重要组成部分。CNC系统的中断管理主要靠硬件完成,而系统的中断结构决定了系统软件的结构。其中断类型有外部中断、内部定时中断、硬件故障中断以及程序性中断等。

(1) 外部中断。主要有纸带光电阅读机读孔中断、外部监控中断(如紧急停、量仪到位等)和键盘 *** 作面板输入中断。前两种中断的实时性要求很高,通常把这两种中断放在较高的优先级上,而键盘和 *** 作面板输入中断则放在较低的中断优先级上。在有些系统中,甚至用查询的方式来处理它。

(2) 内部定时中断。主要有插补周期定时中断和位置采样定时中断。在有些系统中,这两种定时中断合二为一。但在处理时,总是先处理位置控制,然后处理插补运算。

(3) 硬件故障中断。它是各种硬件故障检测装置发出的中断,如存储器出错、定时器出错、插补运算超时等。

(4) 程序性中断。它是程序中出现的各种异常情况的报警中断,如各种溢出、清零等

计算机数控系统(ComputeNumericalContr01)简称CNC系统,是一种用计算机通过执行其存储器内的程序来实现数控功能,并配有接口电路和伺服驱动装置的专用计算机系统。数控机床在CNC系统的控制下,自动地按给定的加工程序加工出工件。所以,计算机数控系统是一种包含计算机在内的数字控制系统。---专业CNC维修

自1952年出现第一台数控铣床以来,一直采用硬件数控装置对机床进行控制,简称NC装置。经过大约二十年时间,到1971年开始引入了计算机控制。一开始CNC系统中采用小型计算机取代传统的硬件数控(NC),但随着计算机技术的发展,现代数控机床大都采用成本低、功能强和可靠性高的微型计算机,取代小型计算机进行机床数字控制,简称MNC,但是大家习惯上仍称它们是CNC。采用计算机控制和采用微型计算机控制的工作原理基本相同。

CNC系统是一种位置控制系统。其控制过程是根据输入的信息(加工程序),进行数据处理、插补运算,获得理想的运动轨迹信息,然后输出到执行部件,加工出所需要的工件。CNC系统的核心是CNC装置。由于采用了计算机,使CNC装置的性能和可靠性提高,促使CNC系统迅速发展。

主要硬件元部件功能

CNC装置的硬件组成一般有:CPU及总线、存储器、输入设备接口、I/O电路接口、位置控制器、显示设备接口,以及通信网络接口等。下面对主要元部件做一简单介绍。

CPU与总线

1.CPU概述

CPU是CNC装置的核心,具有执行计算的能力和控制能力。CPU主要由控制单元、算术逻辑单元和一些暂存寄存器组成。CPU在CNC装置中工作时,其控制单元从存储器中依次取出组成程序的指令,进行译码后,向CNC装置的各部分按顺序发出执行 *** 作的控制信号;同时接收执行部件发出的反馈信号,与程序中的指令信号比较后,决定下一步应执行的 *** 作。

2.总线

总线是计算机系统内部各独立模块之间传递各种信号的渠道。计算机系统中,各种功能模块通过总线有机地连接起来,通过总线实现相互间的信息传送和通信。

总线通常可以分为片总线、内总线和外总线。

片总线为元件级总线,是组成一个小系统或CPU插件各芯片间的连接总线。片总线包括地址总线、数据总线和控制总线,即所谓三总线结构。

内总线又称系统总线,为板级总线,甩于CNC装置中各插件板之间的连接和通信。如S—100总线、PC总线、Multi总线,STD、IBM—AT、标准总线等。

外总线又称通信总线,它用于系统与系统之间的通信。这类总线有RS—232C、RS—422、IEEE—488等。

实际应用和理论分析证明,STD总线是一种比较好的工业总线,在国际上获得广泛应用,也是国内优选重点发展的工业标准机总线。

STD总线的CPU模板几乎可以包容所有的8位和16位微处理器,如Z80、8080、68—00、8086、8088、80286,以及单片机8031、8098等,并且可以与各种通用的存储器和I/O接口模块匹配。

STD总线的工业接口板可以与控制现场的各种机电设备直接连接,可以驱动各种功率的交流电动机、直流电动机、步进电动机,各种继电器、接触器等。减少了中间环节,不仅降低成本,也提高了系统的可靠性,并且简化了系统设计。

STD总线的显著特点是模块化和高可靠性,可以简要地归纳如下:

(1)板结构,功能单一 STD产品采用小板结构,标准尺寸165mmXll4mm’一块模板通常只有一种功能,用户可以根据需要灵活地组成自己的实用系统。

(2)标准布局,安全可靠 各种模板都是按标准布局设计的,模板上的布局基本是由总线驱动,经过功能模块,连到I/O接口。这种结构设计,具有最短的路径,降低各种信号相互干扰,模块的可靠性提高。

产品配套,功能齐全 STD总线产品在国际上已有近千种模板,有许多家公司供货,可以提供多种STD总线的功能模块。

union

{

//这个是共用体,定义的这两个成员共用内存中的一块区域

uchar

fc[2];

uint

fi;

}frecy;//定义了一个共用体变量frecy,定义时要特别注意末尾的分号

//定义测频率的函数,返回数据类型为uint,C语言中无此数据类型,有可能是你用#define自定义的

uint

freq(void)

{

ulint

f;

TR0=1;

//启动T0

TR1=1;

while(cnt<20);

cnt=0;

TR0=0;

TR1=0;

frecyfc[0]=TH1;//为共用体变量frecy中的成员数组赋值fc[0]是此数组的第一个元素

frecyfc[1]=TL1;//同上,fc[1]是此数组的第二个元素

f=frecyfi;//把frecyfi的值赋值给f变量,由于这里是共用体,所以frecyfi的值会是recyfc[0]、recyfc[1]的组合,具体是怎样的,得要看uchar、uint数据类型占用内存字节的情况

TH0=-(46802/256);//除法运算后取相反数

TL0=-(46802%256);//未余运算后取相反数

TH1=0x00;//赋值 *** 作,0x00是十六进制数

TL1=0x00;

return

f;//返回值

}

//如还有疑问可以给我留言,发详细的完整代码我们来讨论

子程序调用指令CALL的编号为FNC01。 *** 作数为P0~P127,此指令占用3个程序步。

子程序返回指令SRET的编号为FNC02。无 *** 作数,占用1个程序步。

如果X0接通,则转到标号P10处去执行子程序。当执行SRET指令时,返回到CALL指令的下一步执行。

使用子程序调用与返回指令时应注意:

1)转移标号不能重复,也不可与跳转指令的标号重复;

2)子程序可以嵌套调用,最多可5级嵌套。

在上面已经说明如何放置子程序,放在最后面。如果有多个子程序,有P0,P1,---P63只能最多63个个,如果使用GXDeveloper的话,直接在一行的最左边输入“P0”即可。

没有严格的上限,但会严重消耗CPU资源。亲自测试结果:

1、普通配置个人电脑,2~4个全速的并行循环,CPU占用率达到100%;

2、普通配置个人电脑,在每个循环体中添加1ms以上的时间延迟,同时运行20+个循环完全没问题;

3、与电脑配置相关,尤其是CPU配置,高配能运行的数量更多。

以上就是关于51单片机code的问题(RAM和ROM)+50全部的内容,包括:51单片机code的问题(RAM和ROM)+50、在CNC系统中,控制软件的结构主要有、求解这个C语言子程序什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9656677.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存