码迷,mamicode.com
首页 > 其他好文 > 详细

51单片机实现外部中断00H-FFH、000-255、0000-1023

时间:2018-01-10 21:43:28      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:interrupt   clu   post   gpo   fine   size   splay   外部中断   init   

外部中断00H-FFH

#include< reg51.h>
#define uint unsigned int
#define uchar unsigned char
sfr P0M0 = 0x94;
sfr P0M1 = 0x93;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
uchar count;
uchar i;
uchar code leddata[]={
    0xC0,  //"0"
    0xF9,  //"1"
    0xA4,  //"2"
    0xB0,  //"3"
    0x99,  //"4"
    0x92,  //"5"
    0x82,  //"6"
    0xF8,  //"7"
    0x80,  //"8"
    0x90,  //"9"
    0x88,  //"A"
    0x83,  //"B"
    0xC6,  //"C"
    0xA1,  //"D"
    0x86,  //"E"
    0x8E,  //"F"
    0x89,  //"H"
    0xC7,  //"L"
    0xC8,  //"n"
    0xC1,  //"u"
    0x8C,  //"P"
    0xA3,  //"o"
    0xBF,  //"-"
};
uchar code ledwei[]={
    0x01,0x02,0x04,0x08,
    0x10,0x20,0x40,0x80   
};
void delay(uint ms){
    uint i,j;
    for(i = 0;i < ms; i++)
    for(j = 0;j < 121; j++);
}
void init(){
    EX0 = 1;       
    IT0 = 1;      
    EA = 1;           
}
void display(){       
         while(1){
                P2 = ~ledwei[0];
                P0 = leddata[i];
            delay(50);
            P2 = ~ledwei[1];
            P0 = leddata[count];
            delay(50);
            P2 = ~ledwei[2];
            P0 = leddata[16];
            delay(50);
        }        
}
void main(){
    P0M0 = 0x00;
    P0M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;

    init();       
    while(1){
        display();       
    }
}
void int0() interrupt 2{
    count++;
    if(count == 16){
        count = 0;
        i++;
        if(i == 16){
            i = 0;
        }
    }
}

外部终端实现数码管000-255

#include< reg51.h>
#define uint unsigned int
#define uchar unsigned char
sfr P0M0 = 0x94;
sfr P0M1 = 0x93;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
uchar count;
uchar i,j,m;
uchar code leddata[]={
    0xC0,  //"0"
    0xF9,  //"1"
    0xA4,  //"2"
    0xB0,  //"3"
    0x99,  //"4"
    0x92,  //"5"
    0x82,  //"6"
    0xF8,  //"7"
    0x80,  //"8"
    0x90,  //"9"
    0x88,  //"A"
    0x83,  //"B"
    0xC6,  //"C"
    0xA1,  //"D"
    0x86,  //"E"
    0x8E,  //"F"
    0x89,  //"H"
    0xC7,  //"L"
    0xC8,  //"n"
    0xC1,  //"u"
    0x8C,  //"P"
    0xA3,  //"o"
    0xBF,  //"-"
    0xFF,  //??
    0xFF  //???
};
uchar code ledwei[]={
    0x01,0x02,0x04,0x08,
    0x10,0x20,0x40,0x80   
};
void delay(uint ms){
    uint i,j;
    for(i = 0;i < ms; i++)
    for(j = 0;j < 121; j++);
}
void init(){
    EX0 = 1;      
    IT0 = 1;      
    EA = 1;         
}
void display(){        

        while(1){
            P2 = ~ledwei[0];
            P0 = leddata[j];
            delay(50);
            P2 = ~ledwei[1];
            P0 = leddata[i];
            delay(50);
            P2 = ~ledwei[2];
            P0 = leddata[count];
            delay(50);
        }        
}
void main(){
    P0M0 = 0x00;
    P0M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;

    init();       
    while(1)
    {
        display();       
    }
}
void int0() interrupt 2{
    count++;
    m++;
    if(m == 256){
        m = 0;
        count = 0;
        i = 0;
        j = 0;
    }
    if(count == 10){
        count = 0;
        i++;
        if(i == 10){
            i = 0;
            j++;
            if(j == 3){
                j = 0;
            }
        }
    }

}

0000-1023

#include< reg51.h>
#define uint unsigned int
#define uchar unsigned char
sfr P0M0 = 0x94;
sfr P0M1 = 0x93;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
uchar count;
uchar i,j,m,n;
uchar code leddata[]={
    0xC0,  //"0"
    0xF9,  //"1"
    0xA4,  //"2"
    0xB0,  //"3"
    0x99,  //"4"
    0x92,  //"5"
    0x82,  //"6"
    0xF8,  //"7"
    0x80,  //"8"
    0x90,  //"9"
    0x88,  //"A"
    0x83,  //"B"
    0xC6,  //"C"
    0xA1,  //"D"
    0x86,  //"E"
    0x8E,  //"F"
    0x89,  //"H"
    0xC7,  //"L"
    0xC8,  //"n"
    0xC1,  //"u"
    0x8C,  //"P"
    0xA3,  //"o"
    0xBF,  //"-"
    0xFF,  //??
};
uchar code ledwei[]={
    0x01,0x02,0x04,0x08,
    0x10,0x20,0x40,0x80   
};
void delay(uint ms){
    uint i,j;
    for(i = 0;i < ms; i++)
    for(j = 0;j < 121; j++);
}
void init(){
    EX1 = 1;       
    IT1 = 1;       
    EA = 1;            
}
void display(){        

        while(1){
            P2 = ~ledwei[0];
            P0 = leddata[n];
            delay(20);
            P2 = ~ledwei[1];
            P0 = leddata[j];
            delay(20);
            P2 = ~ledwei[2];
            P0 = leddata[i];
            delay(20);
            P2 = ~ledwei[3];
            P0 = leddata[count];
            delay(20);
        }        
}
void main(){
    P0M0 = 0x00;
    P0M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;

    init();        
    while(1) {
        display();        
    }
}
void int0() interrupt 2{
    count++;
    m++;
    if(m == 1024){
        m = 0;
        count = 0;
        i = 0;
        j = 0;
    }
    if(count == 10){
        count = 0;
        i++;
        if(i == 10){
            i = 0;
            j++;
            if(j == 10){
                j = 0;
                n++;
                if(n == 2){
                    n = 0;
                }
            }
        }
    }

 

51单片机实现外部中断00H-FFH、000-255、0000-1023

标签:interrupt   clu   post   gpo   fine   size   splay   外部中断   init   

原文地址:https://www.cnblogs.com/weimin1314/p/8260564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!