找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

求助一個比較簡單的關(guān)于單片機(jī)外部中斷的問題

查看數(shù): 2061 | 評論數(shù): 8 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2021-11-4 22:53

正文摘要:

單片機(jī)P3.2外部中斷0接按鍵,P1.4-P1.7接小燈,0電平點(diǎn)亮,P1.0-P1.3接開關(guān),合上是0電平接地,開關(guān)狀態(tài)反映到二級管上,用C51編程實(shí)現(xiàn)每中斷一次,發(fā)光二極管顯示開關(guān)狀態(tài)。 我想的是這樣的: 讀p1口 然后左移4 ...

回復(fù)

ID:910079 發(fā)表于 2021-11-5 22:28
謝謝各位的解答,我明白了
ID:123289 發(fā)表于 2021-11-5 16:56
要點(diǎn):讀鍵值時,要先置1,如果清0,則讀到的0是不是按鍵造成的,就分不清了。
將讀到的鍵值直接送顯,是可取的,但不要忘了,下次讀鍵值之前,要重新置1。
ID:624769 發(fā)表于 2021-11-5 15:26
你網(wǎng)上找的修改,和你原來的其實(shí)差不多,你看不明白么?

你原來的代碼其實(shí)2個地方錯,你改完應(yīng)該就明白了。
首先  i=i<<4   來源不明,
其次,i=i||0x0f  符號錯誤,改一下應(yīng)該是這樣:

i=P1;
i=i<<4;
i=i|0x0f;
P1=i;

基于你原程序修改,這樣你能看懂了么?
ID:213173 發(fā)表于 2021-11-5 11:53
1843647506 發(fā)表于 2021-11-5 11:46
低四位賦1,是為了檢測端口嗎?我不太明白為什么低四位要賦1這個原理

就是為了能夠正常檢測按鍵端口
ID:910079 發(fā)表于 2021-11-5 11:46

低四位賦1,是為了檢測端口嗎?我不太明白為什么低四位要賦1這個原理
ID:213173 發(fā)表于 2021-11-5 06:25
1843647506 發(fā)表于 2021-11-5 00:24
我根據(jù)網(wǎng)上的代碼修改好了,但是我有一點(diǎn)沒看懂,就是P1=0X0f;,,為什么P1要賦這句話,我嘗試改成0x00或者 ...
  1. #include<reg51.h>

  2. void main()
  3. {
  4.         IT0 = 1;
  5.         EX0 = 1;
  6.         EA = 1;
  7.         while(1);
  8. }

  9. void INT_0(void) interrupt 0
  10. {
  11.         P1=P1<<4|0x0f;//P1<<4后低4位自動補(bǔ)0,|0x0f是低4位還原1。
  12. }
復(fù)制代碼

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

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

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