找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 945|回復: 0
打印 上一主題 下一主題
收起左側

單片機中斷和按鍵結合控制數碼管 程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:1007138 發(fā)表于 2022-3-6 12:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
為什么我輕輕一碰電源第一個計分會變化啊,是我電源的問題還是中斷的問題?

單片機源程序如下:
#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int  uint;

sbit K1 = P3^4;

uint point1 = 0,point2 = 0;
uchar code duan[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar disp[8] = {0,0,0,0x40,0x40,0,0,0};

void delay(uint z) {
        uint y;
        for (;z>0;z--)
                for (y = 0; y < 110; y++);
}

void Display() {
        uchar i = 0;

        disp[0] = duan[point1 / 100];
        disp[1] = duan[point1 % 100 / 10];
        disp[2] = duan[point1 % 10];

        disp[5] = duan[point2 / 100];
        disp[6] = duan[point2 % 100 / 10];
        disp[7] = duan[point2 % 10];

        for (i = 0; i < 8; i++) {
                P0 = 0x00;
                P1 &= 0xf8;
                P1 |= i;
                P0 = disp[ i];
                delay(1);
        }
}

void main() {           //觸碰電源時第一個計分會變動,這是為什么?
        IT1 = 1;
        IT0 = 1;
        PX0 = 1;
          IE = 0x85;

        while (1) {
                if (!K1) point1 = 0,point2 = 0;
                Display();
        }               
}

void EX_INT0() interrupt 0 {
        //EA = 0;
        delay(10);
        point1++;
        //EA = 1;
}

void EX_INT1() interrupt 2 {
        //EA = 0;
        delay(10);
        point2++;
        //EA = 1;
}


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表