找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

寫了個(gè)按鍵外部中斷的小程序,遇到點(diǎn)問(wèn)題,各位看客進(jìn)來(lái)瞧瞧

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80732 發(fā)表于 2015-7-29 11:16 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
函數(shù)功能:數(shù)碼管(P2口)不斷顯示0~9,按K1(P3^2)暫停,K2(P3^3)繼續(xù)。


問(wèn)題有二:
(1)第一次按K1,暫停,K2開(kāi)始。之后兩個(gè)鍵均失效;
(2)按理說(shuō)暫停-開(kāi)始后數(shù)碼管應(yīng)該從暫停前的那個(gè)數(shù)繼續(xù)顯示,可實(shí)際上是從0重新開(kāi)始計(jì)數(shù)。
請(qǐng)各位賜教,不勝感激。


代碼和preteus圖如下。
#include <reg52.h>
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管共陽(yáng)編碼
bit button=1;
bit jumpout=0;//低優(yōu)先級(jí)中斷跳出標(biāo)志,用于暫停
void delay(int time)
{
    uchar i,j;
    for(i=0;i<time;i++)
        for(j=0;j<i;j++);
}

void int1()interrupt 1
{               
    jumpout=1;//低優(yōu)先級(jí)跳出   
}
void int0()interrupt 0
{
    while(jumpout==0)//在此循環(huán)
    {
    }
    jumpout=0;//重新賦值,下次中斷依然可以暫停循環(huán)   
}
void init()
{
    EA=1;
    IT0=0;//低電平沿觸發(fā)
       EX0=1;
    PX0=0;//低優(yōu)先級(jí)
    IT1=0;
    EX1=1;   
    PX1=1;//高優(yōu)先級(jí)
}   
void main()
{
    uchar i;   
    init();
    while(1)
    {      
        //if(button==1)
        {
            for(i=0;i<10;i++)
            {
                P2=table[i];
                delay(250);
            }
        }
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

地板
ID:79544 發(fā)表于 2015-7-29 12:59 | 只看該作者
劉武豪 發(fā)表于 2015-7-29 12:32
解決了,自己粗心把外中斷1寫成了interrupt 1,應(yīng)該是interrupt 2

外部中斷1的向量號(hào)錯(cuò)誤,應(yīng)該是2.
回復(fù)

使用道具 舉報(bào)

板凳
ID:80732 發(fā)表于 2015-7-29 12:32 | 只看該作者
解決了,自己粗心把外中斷1寫成了interrupt 1,應(yīng)該是interrupt 2
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:80732 發(fā)表于 2015-7-29 11:17 | 只看該作者
電路圖,P0的數(shù)碼管可忽略。

QQ截圖20150729111651.png (10.89 KB, 下載次數(shù): 91)

QQ截圖20150729111651.png
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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