找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1697|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

一個數(shù)組影響指示燈的閃爍是什么原因

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:95375 發(fā)表于 2022-8-8 23:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 liyago 于 2022-8-9 00:16 編輯

#include "STC15Fxxxx.h"
#include "intrins.h"
#define uint unsigned int


sbit lamp=P3^7; //指示燈
uint i,k=0;
uint led_pinlu=50;//
uint  remotedata[800];//這個數(shù)組設(shè)900以上就不閃燈了
void Timer1Init(void);


/******主函數(shù)****/                                                                                                                                                                        
void main()
{  
                Timer1Init();
                EA=1; //開總中斷
                while(1)
                {
                                if(k>led_pinlu)//上電正常慢閃燈,計數(shù)大于頻率和頻率不等于0是閃
                                {        
                                                k=0;
                                                lamp=!lamp;
                                }
                }
}


void Timer1Init(void)               
{
        AUXR &= 0x7F;                //定時器時鐘12T模式
        TMOD &= 0xF0;                //設(shè)置定時器模式
        TH0=(65535-9000)/256;        //10毫秒一次
        TL0=(65535-9000)%256;
        ET0=1;//開T0中斷
        TR0 = 1;                //定時器0開始計時               
        
}

void time0()interrupt 1
{
        k++;
}


全部程序如上,當(dāng)定義數(shù)組uint  remotedata[800];為800以下時程序運行后LED燈閃,當(dāng)定義數(shù)組為900以上時LED燈就不閃了,求各位大俠指點迷津,謝謝了!�。�
用的芯片型號 : STC15F2K08S2


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:95375 發(fā)表于 2022-8-9 00:16 | 只看該作者
用的芯片型號 : STC15F2K08S2
回復(fù)

使用道具 舉報

板凳
ID:213173 發(fā)表于 2022-8-9 06:38 | 只看該作者
內(nèi)存容量有限,remotedata[ ];雖然沒有被使用,但它把茅坑占滿了,別人無處拉便便
回復(fù)

使用道具 舉報

地板
ID:624769 發(fā)表于 2022-8-9 08:23 來自觸屏版 | 只看該作者
不用900,只有896以上就出問題了吧?溢出了!

評分

參與人數(shù) 1黑幣 +15 收起 理由
wpppmlah + 15 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:161164 發(fā)表于 2022-8-9 09:02 | 只看該作者
liyago 發(fā)表于 2022-8-9 00:16
用的芯片型號 : STC15F2K08S2

此芯片有2048Byte SRAM
其中128Byte是data
下128Byte是idata
最后的1792Byte是xdata
900個uint 有1800個Byte
內(nèi)存溢出了

評分

參與人數(shù) 1黑幣 +15 收起 理由
wpppmlah + 15 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:509408 發(fā)表于 2022-8-9 09:20 | 只看該作者
RAM不夠了唄! 這個芯片只有2kRAM, 減去固定idata256字節(jié)  排外RAM區(qū)還有1800字節(jié)不到 那個數(shù)組i是nt型數(shù)據(jù)占了1800字節(jié) 你編譯器應(yīng)該也已經(jīng)警告過你了

評分

參與人數(shù) 1黑幣 +15 收起 理由
wpppmlah + 15 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

7#
ID:509408 發(fā)表于 2022-8-9 09:27 | 只看該作者
如果只是固定不變的數(shù)據(jù)就存放在ROM區(qū),用const code修飾。如非有必要存儲那么大的數(shù)字 可以把數(shù)組類型改為unsigned char型,否則只有更換更大ram型號芯片了
回復(fù)

使用道具 舉報

8#
ID:248705 發(fā)表于 2022-8-9 09:48 | 只看該作者
一共2k sram,900*2=1800差不多到臨界了,可能是sram用超了?編譯器沒報啥警告嗎

評分

參與人數(shù) 1黑幣 +15 收起 理由
wpppmlah + 15 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

9#
ID:123289 發(fā)表于 2022-8-9 09:49 | 只看該作者
你有對數(shù)組操作嗎?
程序中沒有看到對數(shù)組的操作的部分。
回復(fù)

使用道具 舉報

10#
ID:1034262 發(fā)表于 2022-8-9 09:53 | 只看該作者
數(shù)組定義沒有加xdata,你看看是不是這個問題?
回復(fù)

使用道具 舉報

11#
ID:203661 發(fā)表于 2022-8-9 11:18 | 只看該作者
溢出了
回復(fù)

使用道具 舉報

12#
ID:95375 發(fā)表于 2022-8-9 11:55 | 只看該作者
wulin 發(fā)表于 2022-8-9 06:38
內(nèi)存容量有限,remotedata[ ];雖然沒有被使用,但它把茅坑占滿了,別人無處拉便便

一直沒留意內(nèi)存的影響,謝謝了!
回復(fù)

使用道具 舉報

13#
ID:95375 發(fā)表于 2022-8-9 11:57 | 只看該作者
188610329 發(fā)表于 2022-8-9 08:23
不用900,只有896以上就出問題了吧?溢出了!

實測是887就不行了,真是內(nèi)存小的問題
回復(fù)

使用道具 舉報

14#
ID:95375 發(fā)表于 2022-8-9 12:07 | 只看該作者
lkc8210 發(fā)表于 2022-8-9 09:02
此芯片有2048Byte SRAM
其中128Byte是data
下128Byte是idata

謝謝了,一直沒注意這方面的問題。
回復(fù)

使用道具 舉報

15#
ID:95375 發(fā)表于 2022-8-9 12:12 | 只看該作者
tzs233 發(fā)表于 2022-8-9 09:20
RAM不夠了唄! 這個芯片只有2kRAM, 減去固定idata256字節(jié)  排外RAM區(qū)還有1800字節(jié)不到 那個數(shù)組i是nt型數(shù)據(jù) ...



STC15Fxx.7z (2.17 KB, 下載次數(shù): 3)

STC15Fxxxx.7z (7.38 KB, 下載次數(shù): 2)

用STC15Fxx.H會出現(xiàn)警告,用STC15Fxxxx.H就算數(shù)組是幾萬都不警告。

回復(fù)

使用道具 舉報

16#
ID:95375 發(fā)表于 2022-8-9 12:14 | 只看該作者
tzs233 發(fā)表于 2022-8-9 09:27
如果只是固定不變的數(shù)據(jù)就存放在ROM區(qū),用const code修飾。如非有必要存儲那么大的數(shù)字 可以把數(shù)組類型改為 ...

這個數(shù)組要寫入數(shù)據(jù)的,unsigned char不是比unsigned int還小嗎?
回復(fù)

使用道具 舉報

17#
ID:95375 發(fā)表于 2022-8-9 12:15 | 只看該作者
祖國的花朵 發(fā)表于 2022-8-9 09:48
一共2k sram,900*2=1800差不多到臨界了,可能是sram用超了?編譯器沒報啥警告嗎

是超了,用錯了頭文件。
回復(fù)

使用道具 舉報

18#
ID:95375 發(fā)表于 2022-8-9 12:20 | 只看該作者
yzwzfyz 發(fā)表于 2022-8-9 09:49
你有對數(shù)組操作嗎?
程序中沒有看到對數(shù)組的操作的部分。

這里數(shù)組沒操作,純屬占坑的,所以沒考慮運行內(nèi)存,STC15F2K08S2程序空間有8K都不行,換STC15F2K32S2有32K程序空間也是一樣,所以還是SRAM小的問題。
回復(fù)

使用道具 舉報

19#
ID:95375 發(fā)表于 2022-8-9 12:24 | 只看該作者
coody_sz 發(fā)表于 2022-8-9 09:53
數(shù)組定義沒有加xdata,你看看是不是這個問題?

加xdata也不行
回復(fù)

使用道具 舉報

20#
ID:95375 發(fā)表于 2022-8-9 12:53 | 只看該作者
SOP28封裝的沒有比這更大內(nèi)存的了
回復(fù)

使用道具 舉報

21#
ID:624769 發(fā)表于 2022-8-9 19:25 | 只看該作者
liyago 發(fā)表于 2022-8-9 12:12
用STC15Fxx.H會出現(xiàn)警告,用STC15Fxxxx.H就算數(shù)組是幾萬都不警告。

你沒出警告,不是頭文件的問題,是你KEIL設(shè)置問題。
KEIL 如下,選擇正確的芯片型號,并且在 XRAM 這里打勾,超出了就會出警告了。反之則不會警告。


回復(fù)

使用道具 舉報

22#
ID:95375 發(fā)表于 2022-8-10 18:34 | 只看該作者
188610329 發(fā)表于 2022-8-9 19:25
你沒出警告,不是頭文件的問題,是你KEIL設(shè)置問題。
KEIL 如下,選擇正確的芯片型號,并且在 XRAM 這里 ...

確實是這樣,編譯器有好多坑是平時不留意的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表