注册 登录
编程论坛 单片机编程

单片机关于中断的具体C语言编程实现

the_second 发布于 2015-10-16 22:58, 4646 次点击
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
    EA=1;//开总中断
    EX0=1;//开外部中断0
    //IT0=1;
    TCON=0x01;
    wela=1;//11101010
    P0=0xea;
    wela=0;
    while(1)
    {
        for(num=0;num<16;num++)
            {
                d1=1;
                dula=1;
                P0=table[num];
                dula=0;
                delay(1000);   
            }
    }
}

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

void exter0() interrupt 0
{
    d1=0;   
}
6 回复
#2
the_second2015-10-16 23:02
我刚学单片机,关于单片机中断
void exter0() interrupt 0
{
    d1=0;   
}

这个函数在前面不但没声明而且主函数里也没出现,那具体实现的时候是怎么判断是否中断并且进入子函数里的
求大神
多谢
#3
Spy0012015-10-17 01:12
我最近也学习单片机,下面是我最近网上看过的,你看看对你有没有用....
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED=P0^0;
sbit LED1=P0^1;
void delay1ms (uint z)
{
 uint x,y;
 for (x=z;x>0;x--)
 for (y=110;y>0;y--);
}
void exter() interrupt 2
{
 delay1ms(600);
 LED=0;
 delay1ms(200);
 LED=1;
}
void exter0() interrupt 0
{
 delay1ms(600);
 LED1=1;
 delay1ms(200);
 LED1=0;
}
main()
{
 EA=1; //开总中断
 EX1=1; //开外部中断1
 EX0=1; //开外部中断0
 IT1=0; //外部中断边沿触发,下降沿触发
 IT0=0; //外部中断0边沿触发,下降沿触发
}
#4
the_second2015-10-17 17:04
IT1=0; //外部中断边沿触发,下降沿触发
IT0=0; //外部中断0边沿触发,下降沿触发

是这里进入中断吗
#5
qiong鹰2016-01-03 12:05
IT1=0; //外部中断边沿触发,下降沿触发
IT0=0; //外部中断0边沿触发,下降沿触发
这只是触发方式,如果外部有触发符合条件就会发送中断,进入中断子程序
#6
lijunmeng072016-01-11 22:25
回复 2楼 the_second
在单片机中中断函数是不需要声明的,中断和其他程序相当于两个并行的系统。
#7
lijunmeng072016-01-11 22:26
回复 4楼 the_second
这不是打开中断,只是在定义中断的触发方式
1