找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1999|回復(fù): 1
收起左側(cè)

51單片機(jī)中斷函數(shù)調(diào)用子函數(shù),子函數(shù)的局部變量無法控制

[復(fù)制鏈接]
ID:886945 發(fā)表于 2021-2-27 22:54 | 顯示全部樓層 |閱讀模式
如果將顯示函數(shù)放在主函數(shù)的while里,里邊的5個(gè)變量全是局部變量,但是其功能也正常使用。
但當(dāng)我將顯示函數(shù)放在中斷里進(jìn)行掃描時(shí),發(fā)現(xiàn)顯示函數(shù)里邊的5個(gè)局部變量只有第一個(gè)調(diào)用的變量是正常的,其他幾個(gè)局部變量一直保持0x00無法操作,功能不正常。
然后我試著將局部變量都定義程序全局變量或者靜態(tài)變量,功能又正常了...最后又按上圖中的樣子,將digit定義單獨(dú)定義成靜態(tài),其他保持局部變量,功能也是正常的.....其他幾個(gè)uchar的變量沒有飛...
然后當(dāng)我直接用行參來進(jìn)行算數(shù)操作時(shí),功能也是不對(duì)的..只有把行參放到靜態(tài)變量里,再計(jì)算才正確.
還有我軟件調(diào)試的時(shí)候發(fā)現(xiàn),digit的值和實(shí)參是一致的,但是行參的值一直在亂跳,是調(diào)用并結(jié)束函數(shù)之后釋放了嗎
求各位大佬解惑....為啥用定時(shí)器調(diào)用這顯示函數(shù)就必須將其內(nèi)部變量設(shè)置為靜態(tài)或者全局,而在主函數(shù)的while中就沒遇到過這種問題.為什么不能直接調(diào)用行參,而需要先賦值...
1.png 51hei.png
回復(fù)

使用道具 舉報(bào)

ID:886945 發(fā)表于 2021-2-27 23:00 | 顯示全部樓層
51hei.png
大概找打答案了?.233....我把定時(shí)中斷的工作寄存器組改回去默認(rèn)就正常了

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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