![]() |
發布時間: 2021-9-11 14:14
正文摘要:遙控器是控制燈的 15f104w單片機芯片 程序是通過反編譯改過來的 怎么加入掉電喚醒模式 我試了很多次都沒成功 程序里有一段不加入(如圖) 遙控成功率就降低很多 ... |
不是軟件問題! 1、檢測出掉電。(電源輸入通道上,設置一個電壓檢測電路) 2、通知到CPU。(例如,使用INT0) 3、對應中斷響應后,退出休眠。(大多是自然,退出) |
紅外遙控喚醒掉電模式,紅外接收我接外部中斷0腳,進入掉進模式后,喚醒首先是進入外部中斷0中斷程序關閉該IO口的外部中斷,這樣該腳就能接收紅外解碼的功能了,還有將掉電模式標志清0,開機就不會再進入掉電模式。 按關機的話,標志位置1,先打開外部中斷0允許中斷,再進入掉電模式 |
418854190 發表于 2021-9-11 21:59 對呀,這所謂的"向量地址"就是中斷的地址,中斷被觸發后,程序就會跳轉到這個地址,執行完中斷之后,由RETI返回之前的代碼,但不跳過的話,匯編是一條一條指令執行下來,那就是直接進入中斷了,雖然說中斷不開啟,但執行的結果是"未知"的 |
Y_G_G 發表于 2021-9-11 21:17 官方提供的INT4中斷入口是ORG 0083H 是不是在主程序前加的比它大就行 |
418854190 發表于 2021-9-11 20:12 你要去看一下這個單片機的中斷向量最高地址是多少,不跳過的話,程序一執行就進入中斷,進入中斷之后就亂,后果不可知,ORH 100H是一個大概值,反正空間有的是 用匯編要很了解硬件的,而且代碼量是很大的,像你這種直接復制的,估計過一段時間再看,基本就是什么思路都找不著了 |
Y_G_G 發表于 2021-9-11 19:04 不習慣用官方的計算器 加了ORG 100H掉電喚醒正常了之前沒加 喚醒后就死機了 現在INT0 INT1 INT2 INT3 INT4都可以喚醒了 沒專門學過編程 都是自己沒事琢磨玩的 C語言改不明白 一改就錯 匯編還能改改編編 |
用什么"單片機小精靈"呀,STC下載器那有,官方的它不行嗎? MOV PCON,#02H就是掉電了 想要喚醒是要開啟中斷的,你想要哪個喚醒就開啟哪個中斷 比如,你要外部中斷INT0喚醒, 那就: CLR EI0;這個要先清除 SETB EX0; SETB EA; 然后,當外部中斷觸發之后,就會進入中斷程序 還有,ORG 0000H前面不要有指令,main標號前面也要有一個ORG 100H,要跳過中斷向量區的 你這程序太亂了...............你應該用C,沒事別亂玩匯編 |
418854190 發表于 2021-9-11 17:11 不是…… 掉電喚醒的定義,你理解么? 你先讓單片機關機(自主掉電 PowerDown),然后通過中斷觸發,單片機又開機,這個過程叫掉電喚醒。掉電喚醒一般是沒有程序的,只要開了外部中斷,當你執行了ShutDown指令之后,就能通過外部中斷喚醒,換句話說,大多的掉電喚醒,都是只有看到關機指令通常是: MOV PCON,#02H , 而沒有喚醒指令的,所以,你說你加掉電喚醒“源程序”,啥程序? |
188610329 發表于 2021-9-11 15:54 我發的是沒加掉電喚醒的源程序 我試著加掉電喚醒只是led亮了 看電流沒有發射就死機了 不知道應該怎么加 |
粗看了一遍你的代碼, C01C4: LCALL keyscan; //鍵值掃描 JNB keyflag,C01C4 //若有按鍵按下 CLR LED; LCALL DELAY20MS; LCALL DELAY20MS; LCALL ir_send; //發送紅外編碼 JNB KA,$; JNB KB,$; LCALL DELAY20MS; JNB KA,$; JNB KB,$; CLR keyflag; //按鍵標志清零 SETB LED; SJMP C01C4 這里構成了死循環, 單片機會一直周而復始復始的反復執行這段代碼. 你LCALL出去的分支,也都有RET回來。也沒有找到 類似 MOV PCON,#02H 這類關機指令; 那么,你為什么需要掉電喚醒呢? 不存在掉電,何來喚醒? |