单片机的程序存储器有哪些类型?

单片机的程序存储器有哪些类型?,第1张

单片机的程序存储器是专门用来存放程序和常数的,有掩模ROM、OTPROM、EPROM、FlashROM等类型。

掩模这种形式的程序存储器适用于成熟、大批量生产的产品,如彩色电视机等家电产品中的单片机。用户把应用程序代码交给半导体制造厂家,单片机在生产时,程序就被固化到芯片中,因此芯片一旦生产出来,程戚喊序就无法改变了。

采用EPROM的单片机具有可以灵活修改程序的优点,但存在需要紫外线擦除、较费时间的缺点。

在自己做试验或样机的研发阶段,推荐使用Flash单片机,它有电写入、电擦除的优点,使得修改程序很方便,可以提高开发速度。

对于初具规模的产好宴品可选用0TP单片机,它不但能免去较长的产品掩膜时间,加高袜野快产品的上市时间,而且方便程序的修改,能够对产品进行及时的调整和升级。

程序存储器的容量可根据程序的大小确定。8位单片机片内程序存储器的最大容量能达到64KB,不够时还可以扩展。

在C语言中,对变量的存储类型说明有以下四种:

1、auto  自动变量

2、register  寄存器变量

3、extern  外部变量

4、static  静态变量

所谓存储类型是指变量占用内存空间的方式,也称为存储方式。

变量的存储方式可分为“静态存储”和“动态存储”两种。

1、静态存储变量通常是在变量定义时就在存储单元并一直保持不变,直至整个程序结束。

2、动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。

如果一个函数被多次调用,则反复地分配、释放形参变量的存储单元。从以上分析可知,静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。

扩展资料:

变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

一、从作用域看:

1、全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可雹缓以作用于所有的源文件。当然,橘肆轮其他不包含全局变量的定义的源文件需要用extern关键字再次声明这个全局变量。

2、静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束一直存在,它和全局变量的区别在于全局变量对所有函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

3、局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

4、静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两圆信个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

二、从分配空间看:

全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间。

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一个源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。

1、静态变量会放在程序的静态数据存储区(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。

2、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

参考资料来源:百度百科-变量-存储类型


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

原文地址: https://outofmemory.cn/yw/8270195.html

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

发表评论

登录后才能评论

评论列表(0条)

保存