找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機keil工程碼 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:370267 發(fā)表于 2018-7-21 20:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
請問用這個圖編寫keil工程代碼,使用外部中斷和定時器知識,實現(xiàn)gif圖中的功能:按鍵第一次按下,數(shù)碼管數(shù)值自動每秒加一(按16進制從0加到F),加到F自動清零。用按鍵接到外部中斷0的引腳(P3^2),用外部中斷控制計數(shù)開啟/停止。另外,在計數(shù)時,LED亮,計數(shù)停止時LED滅。
有點問題,哪位好心人幫我改一改!
#include"reg51.h"
#define m P0
typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;
u8 i=0,k=0,j=0,T;
sbit led=P2^5;
sbit anjian=P3^2;
u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

void delay1ms()   //誤差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void  display()
{
        led=0;
        while(j<16)
        {
                P0=smgduan[j];
                delay1ms();
                if(i==15)
                        {
                                i=0;
                                j++;
                        }
        }
//        delay1ms();
}
void kk()
{
        if(anjian==0)
        {
                delay1ms();
                if(anjian==0)
                {
                        TR0=!TR0;
                        while(anjian==0)
                                display();
                }
        }
}
void zhongduan()
{
        TMOD=0x01;
    TH0=0x3c;
    TL0=0xb0;    //定時50ms
        //設(shè)置INT0
//        IT0=1;//跳變沿出發(fā)方式(下降沿)
//        EX0=1;//打開INT0的中斷允許。
        
        //設(shè)置INT1
        TR1=1;
        ET1=1;        
        EA=1;//打開總中斷        

}
/*
void Int0()        interrupt 0                //外部中斷0的中斷函數(shù)
{
        delay1ms();         //延時消抖
        while(1)
        {
                kk();
        }
}
*/
void main()
{
        zhongduan();
        P0=smgduan[0];
        while(1)
        {
        //        display();
                kk();

        }
}

void timer_0() interrupt 1         //定時器中斷函數(shù)  
{
    TH0=0x3c;
    TL0=0xb0;    //定時50ms         
        k++;
        if(k==20)
        {
                i++;
                k=0;
        }
}

215720p47nuoz0073yw243.png (90.45 KB, 下載次數(shù): 24)

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

使用道具 舉報

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

本版積分規(guī)則

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

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

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