89C52单片机的内存8K不够用了怎么办? 单片机程序超过8K怎么办?

STC89C52\u5355\u7247\u673a\u53ea\u80fd\u50a8\u5b588K\u7684\u6587\u4ef6\uff0c\u90a3\u6211\u5199\u51e0\u53e5\u4ee3\u7801\u5c31\u8d85\u8fc78K\u4e86\uff0c\u5c31\u4e0d\u80fd\u70e7\u5f55\u8fdb\u53bb\u4e86\uff0c\u90a3\u8fd8\u6709\u4ec0\u4e48\u7528\uff1f

\u4f60\u51998K\u4ee3\u7801\uff0c\u4f60\u77e5\u90538K\u7684HEX\u6587\u4ef6\u6709\u591a\u5c11\u884c\u4ee3\u7801\u4e0d\uff1f\u4f60\u7684\u90a3\u51e0\u53e5\u4ee3\u7801\u592a\u5927\u4e86\uff0c\u67098K ? \u4ee3\u7801\u7684\u591a\u5c11\u4e0d\u662f\u770b\u4f60\u7684txt\u6216\u8005.C\u6216\u8005.H\u6587\u4ef6\u7684\u5b57\u8282\u6570\uff0c\u800c\u662f\u770b\u4f60\u7684keil\u8f6f\u4ef6\u7f16\u8bd1\u4e4b\u540e\u751f\u6210\u7684\u4ee3\u7801\uff0c\u4e0e.C\u6587\u4ef6\u662f\u4e0d\u540c\u7684\uff01\u5b9e\u73b0\u540c\u6837\u7684\u529f\u80fd\uff0cC\u8bed\u8a00\u7f16\u5199\u7684\u65b9\u5f0f\u4e0d\u540c\uff0c\u5b9e\u73b0\u65b9\u6cd5\u4e0d\u540c\uff0c\u53ef\u80fd\u4f60\u751f\u4ea7\u7684\u4ee3\u7801\u5927\u5c0f\u5c31\u4e0d\u540c\u4e86\uff0c\u8fd9\u5c31\u662f\u6240\u8c13\u7684\u4ee3\u7801\u4f18\u5316\u3002

\u6362\u4e00\u4e2a\u82af\u7247\uff0c\u4f8b\u598289C55\u3002

\u6216\u8005\u6362STC\u7684STC89C58\u90fd\u53ef\u4ee5\u3002
\u6216\u8005\u628a\u4ee3\u7801\u4f18\u5316\u8bbe\u7f6e\u4e00\u4e0b\uff0c\u7f16\u8bd1\u540e\u4f1a\u5c0f\u4e00\u4e9b\u3002

1.可不可以用24C0*2系列呢?那程序要怎么写了(有关些读一整个函数的),比如我现在有要把温控程序和时钟程序放到52外部,计算器程序放到内部,同时可以使52正常工作,扫描完内部后继续扫描内部。
答:不行.
2.如果用扩展外部存储芯片,那芯片型号是什么,程序又怎么写?
答:可以扩展.典型的并行存储芯片一般都可.电路非常经典.程序设计上做配合,参考Keil的Band模式.
另外,要不直接扩一个足够大的外部程序芯片算了.

3.如果改用大内存的单片机芯片,那程序又不一样了吧?
答:只要单片机还是51系列的,程序基本不会大变动,甚至不用变动.

价格方面不要贵啊,我只会52的C程序的(我是菜鸟),所以要完全兼容的,不需要太大,再有8K或4K就OK。那又怎么办?跪求,献上我的大部分分,搞定了可以追加。内存确实不够了。。。

答:简单啊,直接扩带16k/32K/64k Flash程序空间的51芯片就行了.

都不用那么麻烦的。。清楚不管是还是 ,RAM不够 。如果只是普通RAM不够用可以用 xdata 定义RAM变量。。若ROM也不够。。。那就只要换个更大容量的单片机就好了,比如89C54 就有16K ROM空间了,或者更大容量的,这都是51单片机,程序都是一样通用的。也就换个芯片的.h文件就好了,自己写的那些直接添加进工程就好了。不懂的可以问身边的同学。
24C0*2 iic通讯的只适合存普通数据 ,存放掉电需要保存的数据,不能用来存程序的。
外扩存储程序的一般都是外加一个flash芯片,电路需要添加,程序需要相应设置。比换个大容量芯片麻烦的。

1、24C02这种没记错应该是串行的吧。如果说你用51内核的话,程序扩展到串行ROM上不是很方便哦。一般来说89C52的话需要扩展并口的ROM,例如27C64这种。具体接法你找找课本应该是有的。然后EA接高电平,就可以读完内部读外部了。
2、52建议用并行的27C64。
3、可以改用STC生产的单片机,有64K的。程序的话,要改,注意选择并设置单片机IO口的工作模式,还有定时器中断时间的问题(52是1T,但STC12C2051是12T,速度快了12倍)
其实,更重要的就是优化算法了,有些东西,你应该先算好给他,例如计算SIN(x),正常来说是迈克劳林展开x+x³/(2*3)+……,好像要去到11次方项才能较为准确的算出整个周期的SIN,但对于单片机来说,就应该现将SIN分255段算出来,乘255,制成数表用于查表(这种查表就可以放在你刚才说的24C02里面了,只是查表指令要改。还有就是,例如我要计算x*12*5,你编程应该写成x*60,这个很重要。还有一个吧,空间不够,有些函数能省则省吧,有些可以通过外接芯片提供,就让外接芯片去办好了。

89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。89C52内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
89C52供应商:拍明芯城
功能特性
· 标准MCS-51内核和指令系统
· 片内8kROM(可扩充64kB外部存储器)
· 32个双向I/O口
· 256x8bit内部RAM(可扩充64kB外部存储器)
· 3个16位可编程定时/计数器
· 时钟频率3.5-12/24/33MHz
· 向上或向下定时计数器
· 改进型快速编程脉冲算法
· 6个中断源
· 5.0V工作电压
· 全双工串行通信口
· 布尔处理器
—帧错误侦测
· 4层优先级中断结构
—自动地址识别
· 兼容TTL和CMOS逻辑电平
· 空闲和掉电节省模式
· PDIP(40)和PLCC(44)封装形式
管脚说明
VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P0口的管脚第一次写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0 口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(计时器0外部输入)
P3.5 T1(计时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的底位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
振荡器
外接石英晶体或者陶瓷谐振器以及电容C1、C2接在放大器的反馈回路(AT89C52内部有一个用于构成内部振荡器的高增益反相放大电路,XTAL1、XTAL2分别是该放大器的输入和输出端)中构成并联振荡电路。
为了使装置能够被外部时钟信号激活,XATL1应该有效,而XTAL2应该被悬空。由于输入到内部的时钟信号电路通过了一个二分频的信号,外部信号的工作周期比没有别的要求,但是最大值和最小值的大小可以在数据表上观察出来。
当正常工作时,外部振荡器可以计算出XTAL1上的电容,最大可达到100pF。这是由于振荡器电容和反馈电容之间的相互作用。当外部信号是标准高电平或者低电平时,电容不会超过20pF.
空置模式
用户的软件都可以调用空置模式。当单片机处于这种模式,耗能就会自然降低。特殊功能端和板子上的随机存储器在空置状态保持各自的电平。但是处理器阻止装置执行指令。空置模式会被激活如果端口处于复位状态或者中断系统有效。
结构特点
n 互补高性能金属氧化物半导体结构可擦可
编程只读存储器/只读存储器/中央处理器
n 12/24/33MHz操作
n 三个16位的定时器/计数器
n 可编程的时钟输出
n Up/Down定时器/计数器
n 三级程序锁定系统
n 8K/16K/32K片内程序存储器
n 256字节片内RAM
n 改进的快速脉冲编程算法
n 布尔处理器
n 32根可编程的输入/输出线
n 六个中断源
n 可编程的串行通道带有:——帧错误检测
——自动地址识别
n TTL和CMOS兼容逻辑电平
n 64K片外程序存储空间
n 64K片外数据存储空间
n MCS51单片机可兼容指令集
n 闲置节能和掉电模式
n ONCE(On-Circuit仿真)模式
n 四级中断优先级
n 扩展温度范围(﹣40℃到﹢85℃)

你指ROM 是8K 不够用吗,那你程序还是有点大咯,你可以选同类型,但ROM更大的,比如89C54 89C58 89C516 引脚排列和功能都一样的,你去找找相同类弄的买个更大的就完事了。
如果是RAM的话,那你的程序写法可能有很大的优化空间了,可以把一些常量直接放到ROM中去,如果ROM还够用的话,这样是最省时省事的方法,扩展RAM芯片,个人建议没必要了,如果确实需要的话,直接换芯片比如STM32 STM8 相对来说RAM还是很大的。

  • 89C52鍗曠墖鏈虹殑鍐呭瓨8K涓嶅鐢浜嗘庝箞鍔?
    绛旓細绛:鍙鍗曠墖鏈杩樻槸51绯诲垪鐨,绋嬪簭鍩烘湰涓嶄細澶у彉鍔,鐢氳嚦涓嶇敤鍙樺姩.浠锋牸鏂归潰涓嶈璐靛晩锛屾垜鍙細52鐨凜绋嬪簭鐨勶紙鎴戞槸鑿滈笩锛夛紝鎵浠ヨ瀹屽叏鍏煎鐨勶紝涓嶉渶瑕佸お澶э紝鍐嶆湁8K鎴4K灏監K銆傞偅鍙堟庝箞鍔烇紵璺眰锛岀尞涓婃垜鐨勫ぇ閮ㄥ垎鍒嗭紝鎼炲畾浜嗗彲浠ヨ拷鍔犮鍐呭瓨纭疄涓嶅浜嗐傘傘傜瓟:绠鍗曞晩,鐩存帴鎵╁甫16k/32K/64k Flash绋嬪簭绌洪棿鐨51...
  • 89c52 鐗囧唴8kROM(鍙墿鍏64kB澶栭儴瀛樺偍鍣) 浠涔堟剰鎬 ?鍦╧eil涓鍐欏灏戣...
    绛旓細1.89c52鍐呴儴鑷繁甯︽湁8K鐨凴OM锛濡傛灉涓嶅鐨勮瘽涔熷彲浠ュ湪澶栬竟鎵╁睍锛岄氳繃EA寮曡剼鎺у埗涓婄數浠庡唴閮≧OM鎵ц绋嬪簭锛岃繕鏄粠澶栨墿鐨勬墽琛锛2.杩欎釜涓嶄竴瀹氱殑锛屼竴鑸垜浠啓閮藉啓涓嶄簡閭d箞澶氱殑锛屼綘鍐欎釜鍗佸嚑KB锛岀粡杩囩紪璇戜互鍚庝及璁′篃鑳芥斁杩涘幓銆備竴鑸槸澶熺敤寰椼
  • 89c52鐨绋嬪簭瀛樺偍鍖烘槸澶氬ぇ?
    绛旓細89C52鐨勭▼搴忓瓨鍌ㄧ┖闂存槸8K鐨剘~濡傛灉鐢ㄧ殑鏄疜EIL缂栬瘧鐨勮瘽锛屼綘鍙互鐪嬩竴涓嬩綘鏄笉鏄 瀵逛簡鍗曠墖鏈虹殑鍨嬪彿銆
  • 89C52鍗曠墖鏈纭欢闂
    绛旓細char绫诲瀷鍗犵敤涓涓瓧鑺傚彧鏈8浣嶏紱unsigned鏄棤绗﹀彿锛沜ode纭畾瀛樺偍鍣ㄧ被鍨嬫槸绋嬪簭瀛樺偍鍣ㄣ89C52 鍐呭瓨澶у皬涓8K 锛屽彲鎵╁睍鍒64K銆傜敤code unsigned char瀹氫箟涓涓彉閲忥紝瀹冪殑鍙栧艰寖鍥存槸0~255锛堝崄杩涘埗锛夛紱
  • 鍗曠墖鏈89c51涓89c52鐨鍖哄埆鏄粈涔?
    绛旓細绗竴锛孯OM89c51鏄4K锛屼絾89c52鏄8K銆傜浜岋紝RAM89c51鏄128瀛楄妭锛屼絾89c52256瀛楄妭\x0d\x0a\x0d\x0a灏辩紪绋嬫潵璇村尯鍒笉澶э紝涓昏鏄‖浠惰祫婧愮殑鍖哄埆銆俓x0d\x0a鍖哄埆濡備笅锛歕x0d\x0a1銆丷AM绌洪棿澧炲ぇ锛欰T89C51鏈128瀛楄妭鐨勫唴閮≧AM锛孉T89C52鐨勫唴閮≧AM鎵╁睍涓256瀛楄妭锛沑x0d\x0a2銆佸唴閮‵LASH鍙樺ぇ锛欰T89C51鏈...
  • STC89C52 8K ROM 鍙槸鎴戠紪璇戝嚭鏉ョ殑HEX鏂囦欢鏄9KB
    绛旓細HEX 鏂囦欢9KB 鍙槸鍦ㄧ數鑴戜笂鏄剧ず鐨9KB 瀹為檯涓婁及璁″彧鏈2锛3KB 鐪熸瑕佸啓涓8KB 鐨凥EX鍑烘潵 绋嬪簭浼氬緢澶 鎴15KB 鐨凥EX 閮戒竴鏍疯兘璺
  • 89C51鍜89C52鍗曠墖鏈虹殑鍐呴儴RAM鍜孯OM鍒嗗埆鏄灏戝瓧鑺?
    绛旓細AT89C51, RAM=128B, ROM=4KB AT89C52,RAM=256B锛孯OM=8KB, 楂樼殑128瀛楄妭RAM鍙兘闂存帴瀵诲潃锛屽鏋滅敤C缂栬瘧鍣ㄨ繕濂斤紝濡傛灉鐢ㄦ眹缂栬瑷浣跨敤楂128瀛楄妭楹荤儲浜涖
  • STC89c52涓51绯诲垪鐨鍗曠墖鏈鐩告瘮,鏈夌偣鏄粈涔?灏介噺鍏蜂綋銆
    绛旓細绗竴锛孯OM 89c51鏄4K锛屼絾89c52鏄8K銆傜浜岋紝RAM89c51鏄128瀛楄妭锛屼絾89c52鏄256瀛楄妭 绗笁锛宑51鍙湁2涓畾鏃跺櫒锛宑52鏈3涓畾鏃跺櫒锛屽浜嗕釜T2瀹氭椂鍣紝鐩稿簲鐨勫鍔犱簡瀹氭椂鍣2涓柇銆 銆佸鍔犱簡鏈夊叧瀹氭椂鍣2鐨勭壒娈婂姛鑳藉瘎瀛樺櫒T2MOD銆乀2CON銆丷CAP2L銆丷CAP2H銆乀H2銆乀L2绛夛紝杩樻湁璇稿T2銆丒T2绛夋帶鍒朵綅 鍏跺畠鏂归潰鍧囦笌51...
  • 鐢89C52鍗曠墖鏈鍋氳璁,闇瑕佺敤EEPROM鎵╁睍绋嬪簭瀛樺偍鍣ㄥ悧?
    绛旓細涓鑸笉闇瑕佺殑锛岃繖涓昏鐪嬩綘鐨勭▼搴忓鏉傜▼搴︼紝涔熷氨鏄锛岀▼搴忕紪璇戝悗鏈夊澶э紝瓒呰繃8K鍚庡氨涓嶅緱涓嶆墿灞曠▼搴忓瓨鍌ㄥ櫒浜
  • 璇烽棶52鍗曠墖鏈,鏈澶氬彲浠ヨ兘鍐欏叆澶氬ぇ绋嬪簭?
    绛旓細鏈澶氬彲浠ュ啓鍏8KB, STC89C52RC鍏舵爣璇嗚В閲婂涓嬶細STC---鍓嶇紑锛岃〃绀轰负STC鍏徃鐢熶骇鐨勪骇鍝侊紝鍏朵粬鍓嶇紑鏈夊锛孉T,I,Winbond锛孲ST绛.8---浠h〃璇ヨ姱鐗囦负8051鐨勫唴鏍歌姱鐗囥9---浠h〃鍐呴儴鍚獸lashE2PROM瀛樺偍鍣ㄣ侰---浠h〃璇ュ櫒浠朵负CMOS浜у搧锛5---鍥哄畾涓嶅彉銆1---琛ㄧず璇ヨ姱鐗囩▼搴忓瓨鍌ㄧ┖闂寸殑澶у皬銆1涓4KB锛2涓8KB...
  • 扩展阅读:内存条型号对照表 ... vivo12+512内存的手机 ... at89c52单片机参数 ... y9000p最高支持多大内存 ... oppo128g改成256g要多少钱 ... 内存条是8+8还是8+16好 ... 8+32内存非对称双通道 ... 8十128g内存多大 ... 2288h v5内存插法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网