找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

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

正文摘要:

利用單脈沖源(KEY8)產(chǎn)生外部中斷請求信號/INT1,在中斷服務(wù)子程序中讀入4個 撥碼開關(guān)(SW1~SW4)設(shè)定的數(shù)據(jù),輸出到4個LED發(fā)光二極管(LED1~LED4) 。 根據(jù)下面這個電路圖,由于剛開始接觸單片機(jī),實在寫不出 ...

回復(fù)

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編寫,如果不需要看思路就行了。
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
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

           
ID:140644 發(fā)表于 2020-2-12 16:06
下載一個STCISP軟件,里面有例程。
ID:687418 發(fā)表于 2020-2-12 13:51
首先要設(shè)置EX1=1,EA=1,然后0013H處調(diào)用中斷子程序。

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

這樣描述不知道清楚嗎?

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

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

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