Ⅰ 請問單片機復位到底是什麼意思
想用stm32驅動一個tft lcd屏 用的網上常式 但是就是怎麼都不能顯示 屏的資料上說大多因為復位不正確 屏上的rst引腳應該怎麼接啊 復位具體是幹嘛
你這個問題問的不得要領,題目是「請問單片機復位到底是什麼意思」?
敘述中說」屏的資料上說大多因為復位不正確「,好在我還能理解。
乾脆兩個一起答,讓你一次就明白,解決問題才是根本不是?
單片機復位就是讓單片機所有必要寄存器(個別寄存器復位狀態不確定或某些位不確定但肯定不影響正常工作)、外設恢復到原始狀態,程序從啟動地址開始執行。
屏的資料上說大多因為復位不正確,那就有可能是真的,引起的原因有二,一是硬體復位脈沖電平不正確或者寬度不夠,二是復位尚未完成單片機就操作液晶屏了。
解決辦法也是兩個:一、使用單片機IO口給屏提供復位信號,並保證復位脈沖寬度。二、開機啟動後,經過足夠延時時間(手冊上會有)後再對屏進行操作。
Ⅱ 單片機里的數據被誤刪可以恢復數據嗎
那要看這個「誤刪」是什麼層級的了。
如果有文件系統,那麼一般刪除操作只是將文件索引表中的文件標記為已刪除。掃描索引表找到這個文件還是可以恢復的。就跟計算機一樣。
如果無文件系統、
直接操作
存儲器,那麼是不能恢復的。
Ⅲ 一旦單片機處於混亂狀態,那種信號可以有效讓它瞬間恢復到最初
接一個看門狗電路。一旦單片機的程序跑飛,電路會給單片機一個復位信號
Ⅳ 單片機復位是什麼概念
單片機復位的概念:
單片機復位電路就好比電腦的重啟部分,當電腦在使用中出現死機,按下重啟按鈕電腦內的程序從頭開始執行。
單片機也一樣,當單片機系統在運行中,受到環境干擾出現程序跑飛的時候,按下復位按鈕內部的程序自動從頭開始執行。
Ⅳ 51單片機恢復之前狀態語句
你這個要求寫的不清楚,按一下1鍵,與2鍵互鎖。
你說的互鎖是什麼意思呢?1鍵按一下以後,2鍵就不起作用?
那什麼時候解鎖呢?
我只能按照我猜測的功能來默認以下的條件
1、默認你1鍵按一下以後,2鍵不起作用,直到按一下6鍵,才清除互鎖。
2、默認你按鍵按下時,IO口狀態為低電平。
3、默認5鍵按一下燈5亮,再按一下燈5滅。
4、默認IO口為高電平時,LED亮起
根據默認的情況
大概程序如下,沒有編譯調試過,你自己調試吧,別忘了給分.....
#include"reg51.h"
sbit led1 = P1^0; //定義LED的埠
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit key1 = P2^0; //定義按鍵的埠
sbit key2 = P2^1;
sbit key3 = P2^2;
sbit key4 = P2^3;
sbit key5 = P2^4;
sbit key6 = P2^5;
bit key1_flag = 0; //定義按鍵標志位,當按鍵按下時,按鍵標志置1
bit key2_flag = 0;
bit key3_flag = 0;
bit key4_flag = 0;
bit key5_flag = 0;
bit key6_flag = 0;
//定義按鍵使能標志位
bit key1_en = 0;//1:1鍵有效; 0:1鍵無效
bit key2_en = 0;//1:2鍵有效; 1:2鍵無效
bit key3_en = 0;
bit key4_en = 0;
bit key5_en = 0;
void delay(int t)
{
int i;
for(;t>0;t--)
for(i=200;i>0;i--);
}
void key1_process(void)
{
if((key1 == 0)&&(key1_flag ==0))
{
key1_flag = 1;
if(key2_en == 0 ) //1鍵無效時,2鍵才起作用
key1_en = 1;
}
else if(key1 == 1)
key1_flag = 0;
}
void key2_process(void)
{
if((key2 == 0)&&(key2flag == 0)
{
key2_flag = 1;
if(key1_en == 0 ) //1鍵無效時,2鍵才起作用
key2_en = 1;
}
else if(key2 == 1)
key2_flag = 0;
}
void key3_process(void)
{
if(key3 == 0)&&(key3flag == 0) //3鍵作用
{
key3flag = 1;
key3_en = 1;
}
else if(key3 == 1)
{
key3_flag = 0;
key3_en = 0;
}
}
void key4_process(void)
{
if(key4 == 0)&&(key4flag == 0)//4鍵作用
{
key4flag = 1;
key4_en = 1;
}
else if(key4 == 1)
{
key4_en = 0;
key4_flag = 0;
}
}
void key5_process(void)
{
if(key5 == 0)&&(key5flag == 0)//5鍵,狀態反轉
{
key5flag = 1;
key5_en =~key5_en ;
}
else if(key5 == 1)
key5_flag = 0;
}
void key6_process(void)
{
if(key6 == 0)&&(key6flag == 0)//六鍵,取消所有狀態,滅掉所有燈
{
key6flag = 1;
key1_en = 0;
key2_en = 0;
key5_en = 0;
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 0;
}
else if(key6 == 1)
key6_flag = 0;
}
void key_process(void)
{
P1 = 0xff;
if(P1 != 0xff)
{
delay(20);//按鍵延時消抖
if(P1 != 0xff)
{
key1_process();
key2_process();
key3_process();
key4_process();
key5_process();
key6_process();
}
}
}
void led_process(void)
{
if(key1_en == 1) //按鍵1有效
{
led1 = 1;
led3 = 1;
}
if(key1_en == 0)//按鍵1無效
{
led1 = 0;
led3 = 0;
}
if(key2_en == 1) //按鍵2有效
{
led2 = 1;
led4 = 1;
}
if(key2_en == 0) //按鍵2無效
{
led2 = 0;
led4 = 0;
}
if(key3_en == 1) //按鍵3按下
{
if(led1_en == 1)
led1 = 0;
if(led2_en == 1)
led2 = 0;
}
if(key3_en == 0) //按鍵3彈起
{
if(led1_en == 1)
led1 = 1;
if(led2_en == 1)
led2 = 1;
}
if(key4_en == 1) //按鍵4按下
{
if(led1_en == 1)
led3 = 0;
if(led2_en == 1)
led4 = 0;
}
if(key4_en == 0) //按鍵4彈起
{
if(led1_en == 1)
led3 = 0;
if(led2_en == 1)
led4 = 0;
}
led5 = key5_en;
}
void sys_init(void) //系統初始化,滅掉所有燈,清所有狀態
{
key1_en = 0;
key2_en = 0;
key3_en = 0;
key4_en = 0;
key5_en = 0;
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 0;
key1_flag = 0;
key2_flag = 0;
key3_flag = 0;
key4_flag = 0;
key5_flag = 0;
key6_flag = 0;
}
void main(void)
{
sys_init(); //初始化
while(1)
{
key_process(); //按鍵處理
led_process(); //LED處理
}
}
Ⅵ 單片機保護、恢復現場為什麼必須由中斷服務子程序處理而不設計成硬體自動完成
不同程序現場不一樣,有的現場只有累加器A,有的現場就多了,有A、DPL、 DPH、B、R0,R1,PSW等,用匯流排結構時,可能還有P0口要保護,多了去了。如果用硬體自動完成,那都是誰需要保護呢,單片機根本不知道,無法具體保護,即使實現了也增加晶元的設計難度。
所以應該由程序來實現現場保護,和現場回復,這就靈活多了,需要保護的保護,不需要保護的不管。
另外你再看看Keil C 編譯的現場保護吧,一進入中斷,入棧一大堆,好多都沒用,純粹浪費時間和空間,因為他不知道要保護誰,多以一般的都保護起來
Ⅶ 51單片機中如何通過一個按鍵實現暫停與恢復需要一個編程的思想
1、創建項目文件。
Ⅷ 如何在單片機中暫停程序 並且恢復
暫停和恢復可以用一個按鍵加一個while循環來實現,比如:
sbit key=P1^0;
......
while(key);
Ⅸ 在單片機中,保護現場和恢復現場分別是什麼意思
在 單片機 運行程序 進入中斷程序 時需要保護現場 在退出中斷程序時要恢復現場,
因為 在單片機運行程序時 一般要用到 多個寄存器,特別是 累加器,狀態寄存器 等等,中斷程序 是屬於一種處理 突發性 事件的程序,在正常運行程序任意時刻 都可以 插入進來的 程序。
所有 在進入中斷程序時 可能 如 累加器保存 著數據,這時中斷程序 也要用累加器,如果不保存 到退出中斷時 原來的數據已經變了,這樣就不知會發生什麼狀況。
保護現場 就是 進入中斷程序 保存 需要用到的 寄存器 的 數據,
恢復現場 就是 退出中斷程序 恢復 保存 寄存器 的 數據,
Ⅹ 單片機如何復位
單片機復位就兩種方式,一個是硬體復位,一個是軟體復位。
硬體復位就是靠外部的硬體強行把復位管教置為低電平,例如上電的時候,還有按鍵。
上電之所以要復位是因為在接通電源的一瞬間,給單片機的電壓是不穩定的,電壓不穩定就會導致程序跑飛,從而出現意想不到的情況。而常用的阻容復位(就是一個電阻和電容串聯,電阻接VCC,電容接地,復位管教接中間的那種。),當上電的時候,電源經電阻向電容充電,電容看作短路,所以復位管教為低電平,使得單片機在這段時間內不停的復位。當電源穩定後,電容已經充電完成,相當於開路,復位管教為高電平,單片機正常運行程序。
軟體復位就是利用單片機內部的看門狗來防止程序跑飛,看門狗就是個定時器,每個機器周期,它就加一,當它記滿時,就會讓單片機復位。所以要要定時重裝看門狗。正常情況下,不能讓他溢出。這叫喂狗。當單片機受到外界的干擾,使得程序跑飛,跑出while(1)大循環的時候,由於無法執行喂狗的動作,單片機就會復位,從而不會出現單片機死機的情況。