找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2716|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

求助啊,51單片機的中斷實驗,一點思路沒有,這個匯編程序應(yīng)該寫啥啊。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:630813 發(fā)表于 2019-11-28 11:52 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
30黑幣
利用單脈沖源(KEY8)產(chǎn)生外部中斷請求信號/INT1,在中斷服務(wù)子程序中讀入4個
撥碼開關(guān)(SW1~SW4)設(shè)定的數(shù)據(jù),輸出到4個LED發(fā)光二極管(LED1~LED4)
。
根據(jù)下面這個電路圖,由于剛開始接觸單片機,實在寫不出來,求各位大神幫忙。

Screenshot_2019-11-28-11-47-59.png (135.4 KB, 下載次數(shù): 88)

Screenshot_2019-11-28-11-47-59.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:687418 發(fā)表于 2020-2-12 13:51 | 只看該作者
首先要設(shè)置EX1=1,EA=1,然后0013H處調(diào)用中斷子程序。

中斷子程序中,讀入P1口,屏蔽低四位,然后高低字節(jié)交換,再送回P1口,然后返回。

這樣描述不知道清楚嗎?
回復(fù)

使用道具 舉報

板凳
ID:140644 發(fā)表于 2020-2-12 16:06 | 只看該作者
下載一個STCISP軟件,里面有例程。
回復(fù)

使用道具 舉報

地板
ID:235200 發(fā)表于 2020-2-12 23:57 | 只看該作者
ORG 0000H
JMP  MAIN
            ORG 0013H      ;中斷入口地址
            JMP  ZHDU

            ORG  0050H
            MOV  IE,#84H       ;設(shè)置外部中斷1允許
            SETB  IE1             ;下降沿觸發(fā)
            JMP   $
ZHDU:  MOV  A,P1        ;讀P1口開關(guān)狀態(tài)
           SWAP  A           ;交換
           MOV   P1,A       ;根據(jù)開關(guān)狀態(tài)點亮LED
           RETI

           END

           
回復(fù)

使用道具 舉報

5#
ID:235200 發(fā)表于 2020-2-13 00:05 | 只看該作者
上面程序其思路就是:首先要設(shè)置外部中斷1能產(chǎn)生中斷,還要考慮中斷觸發(fā)方式,然后產(chǎn)生中斷時要讀出P1口高4位的編碼開關(guān)狀態(tài)(接通時狀態(tài)為0),因LED與開關(guān)接在同一端口,所以考慮高4位與低4位交換即可,而且開關(guān)導(dǎo)通時狀態(tài)為0,可直接輸出至P1口控制LED
回復(fù)

使用道具 舉報

6#
ID:673128 發(fā)表于 2020-2-13 10:19 | 只看該作者
#include<reg51.h>
#include<intrins.h>
#define u8 unsigned char
sbit key8=P3^3;
u8 x;

void Delay10ms()                //@12.000MHz
{
        unsigned char i, j;

        i = 20;
        j = 113;
        do
        {
                while (--j);
        } while (--i);
}

void main()
{
    INT1=1;
    EX1=1;
    EA=1;
   while(1);
}

void INT1() interrupt 2 //看自己板子外部中斷1的中斷向量號
{
   Delay10ms();
  if(!key8)
{
     x=P1;       //讀取P1端口值,不要直接對端口操作
     x>>=4;    //將端口值的高四位右移到低四位
     x|=0xf0;   //將端口數(shù)值的高四位置一,為下一次讀取做準(zhǔn)備
    P1=x;        //將端口數(shù)值賦給端口
}
while(!key8);  //如果你要按著按鍵,燈是不會亮的,解決方法就是將這句程序規(guī)定時間退出。
}

剛學(xué),只會用C編寫,如果不需要看思路就行了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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