欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7060|回復: 26
收起左側

如何讓單片機程序里一段代碼就運行一次,以后重啟都不會再執行了

  [復制鏈接]
ID:709761 發表于 2021-7-6 12:09 | 顯示全部樓層 |閱讀模式
如題
回復

使用道具 舉報

ID:716656 發表于 2021-7-6 13:51 | 顯示全部樓層
變量為1,判斷第一次進入運行過以后,變量減一,為0,寫入flash,下一次進入if(0)就不執行了。。。不知道可行不
回復

使用道具 舉報

ID:660851 發表于 2021-7-6 15:06 | 顯示全部樓層
做一個數據存儲到單片機flash(掉電不會丟失數據)存儲中,運行那段代碼之后就改變存儲數據,程序上電讀取該數據,判斷是否是設定值
回復

使用道具 舉報

ID:798631 發表于 2021-7-6 17:20 | 顯示全部樓層
設定一個標志數據 進行硬件存儲  軟件修改標志數據的值 判斷數值后執行相應代碼就可以,執行1次 執行1年這樣類似這樣的功能這樣的實現最方便
回復

使用道具 舉報

ID:415064 發表于 2021-7-6 18:31 | 顯示全部樓層
第一次執行后,把flag寫入flash。以后每次讀取flag來不執行
回復

使用道具 舉報

ID:88256 發表于 2021-7-6 19:03 | 顯示全部樓層
壓著我頭發啦 發表于 2021-7-6 13:51
變量為1,判斷第一次進入運行過以后,變量減一,為0,寫入flash,下一次進入if(0)就不執行了。。。不知道 ...

只有0和1,容易出錯,要像板凳說的那樣寫入一個指定的字節比如 55H 然后判斷,要求高的多寫幾個不同的字節
回復

使用道具 舉報

ID:452950 發表于 2021-7-6 20:39 | 顯示全部樓層
關鍵在于如何判斷是否第一次通電,所以只要用一個標志來表示是否已執行過此段程序就可以了,這就需要掉電記憶功能,可以用單片機的flash,也可以用外置的存儲芯片來儲存這個標志。
回復

使用道具 舉報

ID:81196 發表于 2021-7-7 08:56 | 顯示全部樓層
帶記憶性的得寫到存儲里邊才可以方便下一次的斷電重啟后的再次判斷.可以判斷具體標志,常規是寫0x5A或0xA5這種特殊的數據來做標記.
回復

使用道具 舉報

ID:716656 發表于 2021-7-7 09:59 | 顯示全部樓層
hhdsdy 發表于 2021-7-6 19:03
只有0和1,容易出錯,要像板凳說的那樣寫入一個指定的字節比如 55H 然后判斷,要求高的多寫幾個不同的字 ...

謝謝,穴道了
回復

使用道具 舉報

ID:709761 發表于 2021-7-8 07:57 | 顯示全部樓層
如果FLASH壞了,或者讀出數據錯誤,怎么辦
回復

使用道具 舉報

ID:709761 發表于 2021-7-8 08:00 | 顯示全部樓層
用硬件的方法可靠,運行一次,再把單片機引腳焊接拉低為0,判斷引腳電平
回復

使用道具 舉報

12#
無效樓層,該帖已經被刪除
ID:88256 發表于 2021-7-8 09:40 | 顯示全部樓層
李冬 發表于 2021-7-8 07:57
如果FLASH壞了,或者讀出數據錯誤,怎么辦

FLASH那么容易壞嗎?你怎么不問單片機壞了怎么辦?在調試正常程序時序沒問題并且FLASH不壞的情況下,讀出數據出錯的情況極少(比如被干擾了,有這份擔心就要做好軟硬件抗干擾措施)。
回復

使用道具 舉報

ID:88256 發表于 2021-7-8 09:44 | 顯示全部樓層
李冬 發表于 2021-7-8 08:00
用硬件的方法可靠,運行一次,再把單片機引腳焊接拉低為0,判斷引腳電平

運行一次后再焊接引腳不覺得麻煩嗎?STC單片機自帶斷電保存的寄存器,能用軟件解決的為什么還要動手用軟硬件結合的方法?
回復

使用道具 舉報

ID:531720 發表于 2021-7-8 15:19 | 顯示全部樓層

可以用
int  status = 1;
#if  status
      里面是你需要執行一次的語句
#end if
status = 0;
回復

使用道具 舉報

ID:709761 發表于 2021-7-9 11:19 | 顯示全部樓層
胖球 發表于 2021-7-8 15:19
可以用
int  status = 1;
#if  status

下次重啟又運行了
回復

使用道具 舉報

ID:176854 發表于 2021-7-9 18:01 | 顯示全部樓層
本帖最后由 jjjjjjir 于 2021-7-9 20:01 編輯






回復

使用道具 舉報

ID:88256 發表于 2021-7-9 23:11 | 顯示全部樓層
李冬 發表于 2021-7-9 11:19
下次重啟又運行了

你會看程序嗎?單片機每次上電,status都賦值為1一次,然后執行一次里面的程序,再次循環(不是斷電上電))才跳過這個程序,根本就不符合你的要求,反而上面帖子那么多建議你用斷電存儲器保存狀態的正確建議置之不理
回復

使用道具 舉報

ID:709761 發表于 2021-7-10 08:26 | 顯示全部樓層
hhdsdy 發表于 2021-7-9 23:11
你會看程序嗎?單片機每次上電,status都賦值為1一次,然后執行一次里面的程序,再次循環(不是斷電上電 ...

我的意思是斷電重啟會再次運行。斷電存儲器有使用壽命,不保險,想找找更好的辦法。
回復

使用道具 舉報

ID:88256 發表于 2021-7-10 09:07 | 顯示全部樓層
李冬 發表于 2021-7-10 08:26
我的意思是斷電重啟會再次運行。斷電存儲器有使用壽命,不保險,想找找更好的辦法。

隨意的一款斷電存儲器,讀寫的壽命都不會低于10萬次,你一天會寫入幾次壽命有多少可以自己算,更何況這個只需要寫入一次(以后重啟只要判斷有數據并且正確,不會執行寫操作,你不會認為不管對錯每次都必須重寫數據吧?),剩下的都是讀取數據了,讀取數據不影響存儲器的壽命,你擔心什么?
回復

使用道具 舉報

ID:854029 發表于 2021-7-10 11:03 | 顯示全部樓層
有EEROM的單片機很容易,沒有EEROM的做不了。
回復

使用道具 舉報

ID:641314 發表于 2021-7-10 15:32 | 顯示全部樓層
設定一個標準位 只有第一次的運行的時候標志位是0 運行完之后將標志位寫到flash 切記每次開機先從flash將數據讀出來
回復

使用道具 舉報

ID:451718 發表于 2021-7-10 17:33 | 顯示全部樓層
VCC5v就夠了,FU 是個 50ma保險絲。   P1.1給一次高電平,  保險絲熔斷。   保險絲熔斷前,P1.2始終是高電平,當保險熔斷后,P1.2就始終是低電平了。  這個可以滿足你的要求,而且是純硬件,可靠性高。   不過,打死我也不會這么用。
aaa.jpg
回復

使用道具 舉報

ID:689247 發表于 2021-7-10 17:46 | 顯示全部樓層
robinsonlin 發表于 2021-7-10 17:33
VCC5v就夠了,FU 是個 50ma保險絲。   P1.1給一次高電平,  保險絲熔斷。   保險絲熔斷前,P1.2始終是高電 ...

老哥這個想法絕了
回復

使用道具 舉報

ID:342822 發表于 2021-7-10 18:00 | 顯示全部樓層
呵呵~~bascom avr 是有這一功能的。在按下復位鍵到向SRAM寫0期間加入命令$NORAMCLEAR禁止清除,
就可以保留復位前的變量值也就保留了標志位。
回復

使用道具 舉報

ID:250637 發表于 2021-7-12 14:04 | 顯示全部樓層

這個方法就牛皮了
回復

使用道具 舉報

ID:642999 發表于 2021-7-16 17:03 | 顯示全部樓層
寫個程序給你看一下:

u8 i;//i是全局變量
void main(){
u8 i;
while(1){
讀取(i);
if(i==0){
led=1;
i=1;
存入(i);
}
}
}
回復

使用道具 舉報

ID:342822 發表于 2021-7-16 20:49 | 顯示全部樓層
7777.gif
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表