51单片机!大佬们求助啊,按下K1灯从上往下依次亮,按下K2全部灯闪烁

51单片机!大佬们求助啊,按下K1灯从上往下依次亮,按下K2全部灯闪烁,第1张

TMOD=|0x20;//定时器1工作方式2,8位自动重装,TH1是重装值,TL1是初值 //初始化外部中断

TH1=0x00; //重载值 2^8=256 us

TL1=0x00; //初始化值

ET1=1; //开中断

TR1=1; //开定时器1

IT0 = 1; //指定外部中断0下降沿触发,INT0 (P32) //初始化定时器

EX0 = 1; //使能外部中断

EA = 1; //开总中断

外部中断和定时器中断互补干涉,你的51单片机外部中断1和外部中断0都被使用了,不会对你使用定时器中断产生影响的,设置很简单,程序代码附后,要想是定时器中断1的优先级低于外部中断,你可以将外部中断优先级设置为高优先级,而定时器中断设置为低优先级。这样就可以了。初始化程序为:

init()

{

    TMOD=0x10;

    EX0=1;

    EX1=1;

    IT0=1;

    IT1=1;

    PX0=1;

    PX1=1;

    PT1=0;

    TR1=1;

    ET1=1;

    TH1=xxxxx;

    TL1=xxxxx;

    EA=1;

}

#include<reg51h>

#include<intrinsh>

#define uchar unsigned char

uchar keyval;

uchar led1=0xfe;

uchar led2=0x00;

void delay(uchar a)

{

uchar i;

while(a--)for(i=0;i<120;i++);

}

void ext0() interrupt 0

{

keyval=1;

}

void ext1() interrupt 2

{

keyval=2;

}

main()

{

EX0=1;

EX1=1;

IT0=1;

IT1=1;

EA=1;

while(1)

    {

    if(keyval==1)

        {

        P0=led1;

        delay(100);

        led1=_corl_(led1,1);

        }

    if(keyval==1)

        {

        P0=led2;

        delay(100);

        led2=~led2;

        }

    }

}

以上就是关于单片机定时器参数全部的内容,包括:单片机定时器参数、51单片机外部中断1和0都被使用了,但是还需要使用一个定时器中断,请问该怎么设置呢、51单片机!大佬们求助啊,按下K1灯从上往下依次亮,按下K2全部灯闪烁等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8882228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存