
c语言实验报告心得
c语言实验心得:1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。
2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。
3、常量放到code区,如字库、修正系数。
4、逻辑标志变量可以定义到bdata中。
在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。
这样可以大大降低内存占用空间。
定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。
5、data区内最好放局部变量。
因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。
当然静态局部变量除外,其内存使用方式与全局变量相同;6、确保程序中没有未调用的函数。
在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。
函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。
这一点Keil做得很愚蠢,但也没办法。
7、如果想节省data空间就必须用large模式。
将未定义内存位置的变量全放到xdata区。
当然最好对所有变量都要指定内存类型。
8、使用指针时,要指定指针指向的内存类型。
在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。
如指针p是指向data区,则应定义为: char data *p;。
还可指定指针本身的存放内存类型,如:char data * xdata p;。
其含义是指针p指向data区变量,而其本身存放在xdata区。
以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。
与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。
在51系列中data,idata,xdata,pdata的区别data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。
idata是用类似C中的指针方式访问的。
汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好) xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。
pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。
这个比较特殊,而且C51好象有对此BUG,建议少用。
但也有他的优点,具体用法属于中级问题,这里不提。
三、有关单片机ALE引脚的问题 单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1\\\/6.每当访问外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲.这句话是不是有毛病.我觉得按这种说法,应该丢失3个ALE脉冲才对,我一直想不通是怎么回事,希望大虾们帮帮我.小弟感激涕零.答:其他所有指令每6个机器周期发出一个ALE,而MOVX指令占用12个机器周期只发出一个ALE 四、如何将一个INT型数据转换成2个CHAR型数据
经keil优化后,char1=int1\\\/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一样的。
五、在KEIL C51上仿真完了,怎样生成HEX文件去烧写
右键点项目中Target 1,选第二个,在OUTPUT中选中CREAT HEX 六、typedef 和 #define 有何不同?? typedef 和 #define 有何不同》》》 如typedef unsigned char UCHAR ;#define unsigned char UCHAR ;typedef命名一个新的数据类型,但实际上这个新的数据类型是已经存在的,只不过是定义了一个新的名字.#define只是一个标号的定义.你举的例子两者没有区别,但是#define还可以这样用#define MAX 100#define FUN(x) 100-(x)#define LABEL等等,这些情况下是不能用typedef定义的 七、请问如何设定KELC51的仿真工作频(时钟) 用右键点击左边的的target 1,然后在xtal一栏输入 八、不同模块怎样共享sbit变量,extern不行? 把SBIT定义单独放到一个.H中,每个模块都包含这个.h文件 九、C51中对于Px.x的访问必须自己定义吗
是的。
如sbit P17 = 0x97;即可定义对P1.7的访问 十、SWITCH( )语句中表达式不可以是位变量对吗
可以用位变量:#include#includevoid main(){bit flag;flag=0;switch(flag){case '0':{printf(0\\\ );break;}case '1':{printf(1\\\ );break;}default:break; }}bit 变量只有两种状态,if 语句足够啦,!!! 十一、const常数声明占不占内存 const 只是用来定义“常量”,所占用空间与你的定义有关,如:const code cstStr[] = {abc};占用代码空间;而如:const char data cstStr[] = {abc};当然占用内存空间。
另外,#define 之定义似乎不占用空间。
十二、philips的单片机P89C51RD+的扩展RAM在C51中如何使用
试一试将auxr.1清0,然后在c语言中直接声明xdata类型的变量 十三、BUG of Keil C51 程序中用如下语句:const unsigned char strArr[] = {数学};结果发现strArr[] 内容为 {0xCA,0xD1,0xA7},真奇怪
凡是有0xfd,则会通通不见了,所以只能手工输入内码了,例如 uchar strArr[]={0xCA,0xfd,0xd1,0xa7}(用Ultraedit会很方便)。
十四、Keil C51中如何实现代码优化
菜单Project下Option for target Simulator的C51.看到Code optimization了吗
十五、请教c的
和 ~ 符号有甚区别
是逻辑取反,~是按位取反。
十六、c51编程,读端口,还要不要先输出1
我怎么看到有的要,有的不要,请高手给讲讲,到底咋回事
谢了要输出1的,除非你能保证之前已经是1,而中间没有输出过其他值。
十七、当定时器1(T1)用于产生波特率时,P3^5还是否可以用作正常的I\\\/O口呢
p3.5完全可以当普通的io使用 十八、C51中 INT 转换为 2个CHAR
各位高手:C51中 INT 转换为 CHAR 如何转换诸如:X = LOW(Z);Y = HIGH(Z);答: x=(char)z;y=(char)(z>>8); 十九、如果我想使2EH的第7位置1的话,用位操作可以吗
现在对位操作指令我一些不太明白请各位多多指教:如 SETB 07H 表示的是20H.7置1,对吗
(我在一本书上是这么看到的)那么如果我想使2EH的第7位置1的话,象我举的这个例子怎么表示呢
谢谢
SETB 77Hsetb (2eh-20h)*8+7 20h-2fh每字节有8个可位操作(00h-7fh),其它RAM不可位直接操作 二十、char *addr=0xc000 和char xdata *addr=0xc000有何区别
char *addr=0xc000;char xdata *addr=0xc000;除了在内存中占用的字节不同外,还有别的区别吗?char *addr=0xc000; 是通用定义,指针变量 addr 可指向任何内存空间的值;char xdata *addr=0xc000; 指定该指针变量只能指向 xdata 中的值;后一种定义中该指针变量(addr)将少占用一个存储字节。
uchar xdata *addr=0xc000;指针指向外ram;如果:data uchar xdata *addr=0xc000;指针指向外ram但指针本身存在于内ram(data)中以此类推可以idata uchar xdata *addr=0xc000;pdata uchar xdata *addr=0xc000;data uchar idata *addr=0xa0;......... 二十一、while(p1_0)的执行时间
假设,P1_0为单片机P1口的第一脚,请问,while(P1_0){P1_0=0;}while(!P1_0){P1_0=1;}以上代码,在KEIL C中,需要多长时间,执行完。
能具体说明while(P1_0)的执行时间吗
仿真运行看看就知道了,我仿真了试了一下,约14个周期 二十二、怎样编写C51的watchdog程序
各位大虾,我用KEIL C51 编写了一个带外部开门狗的程序,可程序无法运行起来,经过查找,发现程序在经过C51编译后,在MAIN()函数的前部增加了一端初始化程序,等到进入主程序设置开门狗时,开门狗已经时间到,将我的程序复位了,请问我怎样才能修改这一端初始花程序,使他一运行,就设置开门狗
可以在startup.a51中加入看门狗刷新指令,当然用汇编,然后重新编译startup.a51,将他和你的程序连接即可。
新的startup.a51会自动代替系统默认的启动模块。
二十三、keil C51 怎样把修改的startup.a51 加到工程文件中 直接加入即可注意不要改动?STACK,?C_START,?C_STARTUP等符号。
startup.a51直接加入项目,不用修改也可。
可在内面自己修改汇编的一些限制或堆栈指针。
二十四、关于波特率的设置 我在设定串口波特率时发现一个问题:在晶体震荡器为11.0592MHz时,若设9600BPS的话,TH1=0XFD,TL1=0XFD,而要设19200BPS的话,TH1、TL1有否变化,如果没变,为什么
如果变了,又为什么
(因为我看书上俩个是一样的),希望大家点拨。
答:当电源控制寄存器(PCON)第BIT7(SMOD)为1时波特率加倍。
TH1和TL1的值不变. 二十五、如何在C中声明保留这部分RAM区不被C使用
我不知道在C源程序中怎么控制这个,但在汇编程序中加入下面一段就行:DSEG AT 20HAA: DS 10这样C51就不会占用20H--29H了或者在c51里这样定义:uchar data asm_buff[10] _at_ 0x20; 二十六、问浮点运算问题 我在用C51时发现它对传递浮点参数的个数有限制,请问:1)参数是以全局变量的形式传递的,请问以全局变量的形式传递的参数也有限制吗
2)这种传递浮点参数的限制有多少呢
3)float*float的结果是float类型还是double类型?能否直接赋值给float类型的变量
答:由于KEIL C51的参数传递是通过R0-R7来传递的,所以会有限制。
不过KEIL提供了一个编译参数,可以支持更多参数的传递。
具体的内容见KEIL的PDF文档。
我建议你把多个要传递的参数定义到指针或结构体中去,传递参数通过指针或结构进行,这样好一些。
第3个问题回答是YES,你自己试试不就知道了。
二十七、如何在某一个地址定义ram 用_at_ 命令,这样可以定位灵活一点的地址uchar xdata dis_buff[16] _at_ 0x6020 ;\\\/\\\/定位RAM将dis_buff[16]定位在0x6020开始的16个字节 二十八、keil c中,用什么函数可以得到奇偶校验位
例如32位数据,将四个字节相互异或后检查P即可,若耽心P被改变,可用内嵌汇编。
#include unsigned char parity(unsigned char x){x^=x;if(P)return(1);else return(0);}unsigned char parity2(unsigned int x){#pragma asmmov a,r7xrl ar6,a#pragma endasmif(P)return(1);else return(0);}
求P1口亮灯实验,要求有电路图。
静下心来看datasheet,一定会成功的,很多书也就是它的翻译
关于动态规划算法,哪位可以讲一下自己心得体会
微型计算机的总线结构 Bub(总线) Interface(接口) Socket(插座) Slot(插槽) Port(端口)总线——是一组能为多个部件服务的公共信息传送线路,是计算机各部件之间的传送数据、地址和控制信息的公共通路,它能分时地发送与接收各部件的信息。
采用结构在系统设计、生产、使用和维护上有很多优越性: (1)采用结构设计方法,简化了系统设计。
(2)便于生产与之兼容的硬件板卡和软件。
(3)便于系统的扩充和升级。
(4)便于故障诊断和维护,也降低了成本。
总线的主要参数总线分类: 数据总线(Data Bus)-用于传输数据的。
地址总线(Address Bus)-用于传输地址信息的。
控制总线(Contron Bus)-用于传输控制信号、时钟信号的状态信息的。
1、总线的带宽(MB\\\/s) ——指的是单位时间内总线上可传送的数据量,即每秒传送多少MB字节的最大稳态数据传输率。
2、总线的位宽(bit) ——指的是总线一次能同时传送的数据位数,即常说的32位、64位等总线宽度。
总线位宽越大传输率越大。
3、总线的工作时钟频率 ——总线分为:CPU内部使用的内部总线和CPU对外联系的外部总线。
外部总线又称为系统总线。
众多的功能部件要正常的动作,必须有一个统一的指挥,这个就是时钟信号。
控制总线的时钟信号频率称为总线的工作时钟频率。
内部总线频率就是常说的内频,而外部总线频率就是外频。
总线带宽=总线位宽*总线工作频率\\\/8 注:(总线带宽、总线位宽、总线工作时钟频率的关系,就像速公路上的车流量、公路车道数目、车辆行驶速度的关系)实验1 进程管理1. 实验目的(1) 加深对进程概念的理解,明确进程和程序的区别。
(2) 进一步认识并发执行的实质。
(3) 分析进程争用资源的现象,学习解决进程互斥的方法。
(4) 了解Linux系统中进行通信的基本原理。
2. 实验预备内容(1) 阅读Linux的sched.d源码文件,加深对进程管理的理解。
(2) 阅读Linux的fork.c源码文件,分析进程的创建过程。
3. 实验内容(1) 进程的创建编写一段程序,使用系统调用fork()创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符;父进程显示字符a,子进程分别显示b和c。
试观察记录屏幕上的显示结果,并分析原因。
〈程序〉#include〈stdio.h〉Main(){int p1,p2;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 == 0) \\\/*子进程创建成功*\\\/putchar('b');else{while((p2 == fork())) == -1); \\\/*创建子进程p2*\\\/if (p2 == 0) \\\/*子进程创建成功*\\\/putchar('c'); \\\/*父进程执行*\\\/else putchar('a');}}〈运行结果〉bca(有时出现bac等)分析:从进程并发执行来看,输出bac,acb等情况都有可能。
原因:fork()创建进程所需的时间要多于输出一个字符的时间,因此在主进程创建进程2的同时,进程1就输出了'b',而进程2和主程序的输出次序是有随机性的,所以会出现上述结果。
(2) 进程的控制修改已编写的程序,将每个进程的输出有单个字符改为一句话,在观察程序执行时屏幕上出现的现象,并分析其原因。
如果在程序中使用系统调用lockf()来给每个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
〈程序1〉#include〈stdio.h〉main(){int p1,p2,i;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 == 0) \\\/*子进程创建成功*\\\/for(i=0;iprintf(sun %d\\\/n,i);else{while((p2 == fork())) == -1); \\\/*创建子进程p2*\\\/if (p2 == 0) \\\/*子进程创建成功*\\\/for(i=0;iprintf(earth %d\\\/n,i);elsefor(i=0;iprintf(moon %d\\\/n,i);}}〈运行结果〉sun...earth...moon...moon...或sun...earth...sun...earth...moon...等分析:由于函数printf()输出的字符串之间不会被中断,因此,字符串内部的字符顺序输出时不变。
但是,由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。
这类似打印单字符的结果。
〈程序2〉#include〈stdio.h〉main(){int p1,p2,i;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 == 0){lockf(1,1,0);for(i=0;iprintf(sun %d\\\/n,i);lockf(1,0,0);}else{while((p2 == fork())) == -1);if (p2 == 0){lockf(1,1,0);for(i=0;iprintf(earth %d\\\/n,i);lockf(1,0,0);}else{lockf(1,1,0);for(i=0;iprintf(moon %d\\\/n,i);lockf(1,1,,0);}}}〈运行结果〉sun...earth...moon...moon...或sun...earth...sun...earth...moon...等与未上锁的情况大致相同,也是随着执行时间的不同,输出结果的顺序有所不同。
分析:因为上述程序执行时,不同进程之间不存在共享临界资源问题,所以,加锁与不加锁效果相同。
(3) 软中断通信编制一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程扑捉键盘上来的中断信号(即按Del键),当扑捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程扑捉到信号后,分别输出下列信息后终止:child process 1 is killed by parent!child process 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止:parent process is killed!〈程序〉#include〈stdio.h〉#include〈signal.h〉#include〈unistd.h〉void waiting(),stop();int wait_mark;main(){int p1,p2,i;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 > 0){while((p1 == fork == -1);if(p2 > 0){wait_mark = -1;signal(SIGINT,stop); \\\/*接收'Del'信号,并转stop*\\\/waiting(0);kill(p1,16); \\\/*向p1发中断信号16*\\\/kill(p2,17); \\\/*向p1发中断信号17*\\\/wait(0); \\\/*同步*\\\/wait(0);printf(parent process is killed! \\\ );exit(0);}else{wait_mark = -1;signal(17,stop);waiting();lockf(stdout,1,0);printf(child process 2 is killed by parent! \\\ );lockf(stdout,0,0);exit(0);}}else{wait_mark = -1;signal(16,stop);waiting();lockf(stdout,1,0);printf(child process 1 is killed by parent! \\\ );lockf(stdout,0,0);exit(0);}}void waiting(){while (wait_mark != 0);}void stop(){wait_mark = 0;}〈运行结果〉child process 1 is killed by parent!child process 2 is killed by parent!parent process is killed!分析:上述程序中,使用函数signal()都放在一段程序的前面部位,而不是在其他接收信号处。
只是因为signal()的执行只是为进程指定信号量16或17的作用,以及分配相应的与stop()过程链接的指针。
从而,signal()函数必须在程序前面部分执行。
ERP沙盘模拟大赛中P1产品可直接生产吗
第一年生产P1,研发P2,市场全开。
合理吗
第一年第一年规划:第一年,我们在保证权益为正、现金流不中断的基础上尽量扩大产能,这样重要的地位,有利于今后几年的发展。
由于第一年还没有生产线,所以我们暂不购买原材料。
而起始的100现金使我们不会去选择短贷和高利贷。
年初因为不准备建半自动生产线,所以第一年不会有成品,只能放弃订单。
而又不得不投广告费,所以本地P1投1M。
选择放弃订单。
第一为了避开第一年折旧,第一季度不投资生产线。
只做P2产品研发。
到第二年第二季度研发完。
为了节约现金和控制前几年的权益,暂不研发P3,第四年在开始生产,所以第二年第三季度再开始研发。
第二季度开始投资生产线,投资一条全自动生产线生产P1。
继续P2产品研发。
第三季度再投生产线继续P2产品研发。
第四季度生产P1的生产线在明年第一季度建成,所以现在要下2个P1原料订单。
为了明年第三季度开始生产P2,现在建一条生产P2的全自动生产线,同时再投P1的全自动生产线。
继续P2产品研发。
年末避免年末交A厂房租金,现在购买A厂房。
更新长贷,申请60M的长贷投资所有新市场和ISO认证。
第一年结束——关帐第一年末盘面第二年年初根据盘面信息,看出第二年可以生产3个P1,1个P2.为了尽量多买产品,提高自己选单轮次。
广告费在本地市场P1投1M,区域P1投1M 。
拿到两张P1的订单,分别为2个P1和1个P1。
第一季度再投生产线,现在一条P1生产线已建成。
继续P2产品研发投资第二季度由于第三季度一条P2生产线也将建成,所以第二季度要下2个P1和1个P2的原材料。
再投生产线再在厂房A中建一条生产P2的全自动的生产线有1个P1成品,可以交货。
选中进行交货。
继续P2产品研发,P2已研发完毕,下一季度可以生产。
第三季度下原料订单2个R1,1个R2再投生产线,1条P2已建成。
开始研发P3.第四季度第二年结束后权益将降至10以下,所以在今年第四季度贷桶短贷,这样可以确保下一年现金流不中断。
下原料订单3个R1,2个R2再投生产线2个P2交货给客户继续P3的产品研发投入 年末继续国内、亚洲、国际市场的开拓和ISO9000与14000的认证投资第三年年初打广告,P1本地、区域和国内各1M;P2本地、区域、国内分别3M、1M、3M第一季度下原料订单3个R1,2个R2再投资生产P2的全自动生产线 交货给客户1个P1,2个P2继续P3的产品研发投资第二季度申请短贷20M下原材料订单3个R1,2个R2在A厂房里投资一条生产P3的全自动生产线交货给客户1个P1,2个P2继续P3的产品研发投资第三季度下原料订单3个R1,2个R2再投生产线交货给客户2个P2继续 P3的产品研发投资第四季度下一季度将建成一条P3生产线。
下原料订单3个R1,4个R2,1个R3再投生产线交货给客户2个P1,1个P2继续P3的产品研发投资年末继续亚洲、国际市场的开拓和ISO14000的认证投资第四年年初4P1、9P2、3P3打广告,P1本地、区域、国内和亚洲分别0、1M、1M、0P2本地、区域、国内和亚洲分别3M、1M、1M、1MP3本地、区域、国内和亚洲分别1M、0、0、1M第一季度应收账款贴现7M下原料订单3个R1,4个R2,1个R3 再投生产线在进行应收账款贴现7M交货给客户1个P2,2个P2第二季度申请高利贷20M申请短贷20M下原料订单3个R1,4个R2,1个R3第三季度下原料订单3个R1,4个R2,1个R3第四季度下原料订单3个R1,4个R2,1个R3交货给客户3个P2,2个P1年末继续国际市场的开拓和ISO14000的认证投资第五年年初打广告,P1本地、区域、国内、亚洲和国际分别0、1M、0、0、1MP2本地、区域、国内、亚洲和国际都是1MP3本地、区域、国内、亚洲和国际分别 1M、1M、1M、3M、0第一季度申请短贷20M下原料订单3个R1,4个R2,1个R3交货给客户第二季度申请短贷40M下原料订单3个R1,4个R2,1个R3投资新生产线,厂房C里生产P3的全自动线一条交货给客户,2个P2,1个P3第三季度下原料订单3个R1,4个R2,1个R3再投生产线交货给客户,2个P2,2个P1第四季度下原料订单3个R1,6个R2,2个R3 再投生产线交货给客户,2个P2,2个P3年末购买B、C厂房第六年年初 打广告,P1本地、区域、国内、亚洲和国际分别0、1M、1M、0、3MP2本地、区域、国内、亚洲和国际都是1M、1M、2M、0、1MP3本地、区域、国内、亚洲和国际分别3M、2M、1M、3M、1M第一季度申请短贷40M下原料订单3个R1,6个R2,2个R3再投生产线交货给客户,1个P2,1个P1,1个P2第二季度申请短贷40M下原料订单3个 R1,6个R2,2个R3交货给客户,2个P1,2个P3第三季度下原料订单3个R1,6个R2,2个R3交货给客户第四季度申请短贷40M下原料订单3个R1,6个R2,2个R3交货给客户
急求单片机学习心得一份悬赏20
很多网友的空间里面写的都是自己的心得。
以关键词心得 读书笔记 体会 等等在百度里面搜
陈鹤琴的教育内育观点主要有哪些
经过一周的模拟学习,经过小组全体成员的努力,我们F公司成为六个模拟公司中成绩最好的一个而顺利出线,取得了不小的成绩:在才在产品研发上,我成功开发了P2和P3产品(由于市场原因,我们的P2始终没有投入生产),在市场开拓上,使公司从原来单纯的本地市场成功进军国内,亚洲和国际时常,生产线的更新与改进上,由当初的三条手工生产线和一条半自动生产线更新为一条手工生产线一条半自动生产线和四条全自动生产线,使得我们公司的生产能力一跃成为六个公司第一,在财务问题上,我们犯了不少的错误,但最终到第六年,我的所有者权益增长到75M,比起初开始经营时增加9M。
一、企业盈利: 我们应该明白,企业经营的本质是股东权益最大化,即盈利。
而从企业利润表中可以看出,盈利的主要途径一是扩大销售,二是控制成本。
扩大销售:利润主要来源于销售收入,而销售收入由销售数量和产品单价两个因素决定。
提高销售数量有以下方式: 1.扩张现有市场,开拓新市场; 2.研发新产品; 3.扩建或改造生产设施,提高产能; 4.合理加大广告投放力度,进行品牌宣传。
5.提高产品单价受很多因素制约,但企业可以选择单价较高的产品进行生产。
6.控制成本:产品成本分为直接成本和间接成本。
直接成本主要包括构成产品的原料费和人工费。
在ERP沙盘模拟中,原料费由产品的BOM结构决定,在不考虑替代材料的情况下没有降低的空间;用不同的生产线生产同一产品的加工费用也是相同的,因此在ERP沙盘模拟中,产品的直接成本是固定的。
从节约成本的角度看,我们把间接成本区分为投资性支出和费用性支出两大类。
投资性支出包括购买厂房、投资新生产线等,这些投资是为了企业的生产能力而必须发生的。
费用性支出包括营销广告、贷款利息等,通过有效筹划是可以节约一部分的。
下面是我们F公司的广告投放图: 需要说明的是,此图中数据从第四年开始含有部分ISO9000及ISO14000国际认证的投入,且随着生产产品品种的增加和销售市场的不断扩大,六年的广告投放量并不具有可比性,本图的目的在于更加直观的看出每年广告投放的数量。
第一年我们投出了15M的广告,赢得了本地市场的老大地位,拿到了最大的订单,当然获利也是最大的,但是由于是3Q的账期,导致现金的周转困难,不得不在以后的经营中频繁的借贷并背负了沉重的利息。
在第二年到第四年,我们顺利研发出了P2和P3产品,但是鉴于市场竞争的严峻性,我们毅然决定放弃P2,直接打P3产品的广告,依托P1,把P3产品做大做强。
所以并不需要很大的广告费便可以接到合适的订单。
从图上可以看出,我们广告的投资相对是很少的。
然而到第五年和第六年,随着市场的不断扩大,以及市场的要求提高,广告费中的ISO9000和ISO14000的认证费用是必要支出,所以广告费有所增加。
其中,第四年的广告由于失误,没有争取到足够的订单,所以最后的所有者权益出现负数,导致公司破产。
不得已的情况下,我们将厂房售以及一系列的融资手段,为企业赢得了重生的机会。
下面对融资贷款与贴现的分析: 资金是企业的血液,是企业任何活动的支撑,在ERP沙盘模拟中,企业尚未上市,因此其融资渠道只能是向银行借款、高利贷和应收账款贴现。
但无论是长期贷款、短期贷款还是高利贷均以20M为基本贷款单位。
长期贷款的最长期限是5年,短期贷款和高利贷的期限为一年,不足一年的按一年计息,贷款到期后返还。
应收账款贴现随时可以进行,金额必须是7的倍数,不考虑应收账款的账期,没7M的应收款交纳1M的贴现费用,其余6M作为现金放入现金库。
在企业资金不足的情况下,企业应该考虑到贷款和体现的实际需要。
长期贷款是有条件的,即:上年所有者权益×2-已长期贷款,所以在企业经营之初,首先考虑到的应该是长期贷款,利息低且使用时间长。
最好将长期贷款一次借足,因为如果经营不善,你以后想贷都没有机会了。
如果你的企业已经到了这一步,应该根据企业自身情况计算短期贷款、高利贷与贴现那个更为合算。
从下图可以看出我们公司在经过第四年这个转折点后企业的经营状况。
根据本图可以看出,从起始年所有者权益的66M我们开始第一年的经营,第一年到第四年,我们一直处于下降状态,到第四年为-5M,导致我们F公司不可避免的面临了破产的结果,经过我们的讨论决定,将厂房出售,所有未到期资金贴现来维持公司的经营,背水一战。
从而使得第五年,我们开始扭亏为盈,到第六年,我我们公司的所有者权益超过起始年的66M,达到75M。
二、企业经营 计划是每个企业在年初,CEO带领各个成员制订销售计划、投资改造计划、生产计划、资金计划、市场开发计划及产品研发计划等。
一个好的销售计划一定是符合企业自身的特点,适用于本企业发展现状的计划。
设备投资与改造是提高产能,保障企业持续发展的策略之一。
企业进行设备投资时需要考虑以下因素: 1、市场上对各种产品的需求状况; 2、企业目前的产能; 3、新产品的研发过程; 4、设备5、投资分析; 6、新设备7、用于生产何种产品
资金来源以及安装地点。
8、设备9、上线的具体时间及所需物料储备10、。
三、其他方面 我们认为,“选单”也是企业经营的关键之一,对企业的资金回笼有关键的作用,定单的回收期长短直接影响企业的资金的流动性,对于新市场的开拓,新产品的开发等,都有重要的影响。
下面是我们我们F公司六年在订货会上取得的订单统计: 经过六年的经营我们发现,订单的多少,是企业生产的目的,是企业利益的来源。
然而企业的生产能力是接受订单多少的关键。
所以每年要提前预算本年度的产能,才能在定货会上争取适度的订单。
订单少,企业不能充分的运作,利润也会减少,当然,当订单由于某种原因接少的时候,切记不可停产,依然要全线的投入生产,以备有相当的成品库存,为下一年做准备。
我们会想到JIT准时制生产,但是我们发现,在沙盘的模拟经营中,这种生产方式是行不通的,反而当你有库存的时候,你可以在下一年争取到更多的订单或部分加急订单,提前交货也是企业获取利润的一个很好的方式。
需要注意的是,我们的模拟经营是有期限的,也就是说,当第六年的时候,只需要完成订单需求量即可,不必有大量库存占用资金。
ERP沙盘模拟实训,系统将一个企业整个经营和内部管理及人员分工整体的展现在我们面前,一个企业的运营从采购、生产、销售等都由我们来共同完成。
是我们概括性的了解了一个企业的运营情况,也同样让我们看到了一个企业在市场上为生存而竞争的状况,为我以后走出校园,走向社会有一定的启示。
大学物理实验 :空气比热容比的测定的相关思考题
1.控制温度和压强的变化。
减小实验误差。
2.不能,除了放气影响压强外,温度的变化也可能影响压强的变化3.放气不充分,所得的值偏大,放弃不充分,Po、P1不变,P2变大,分母变小,所以r变大。
4.这个问题不太清楚。



