標(biāo)題: 本人剛學(xué),中斷學(xué)不好,做不出來 [打印本頁]

作者: 123haha    時間: 2017-1-24 14:41
標(biāo)題: 本人剛學(xué),中斷學(xué)不好,做不出來
功能:用定時器0的方式1實現(xiàn)第一個發(fā)光二極管以 200ms間隔閃爍,用定時器1的方式1實現(xiàn)6位數(shù)碼管的前兩位59S循環(huán)計時的proteus仿真電路圖和程序怎么弄?

作者: fx283    時間: 2017-1-24 20:00
#include <reg51.h>
unsigned char i;
sbit led=P1^0;                                  //定義led的IO接口
void InitTimer0(void)                  //定時器0,工作方式1,定時2ms
{
    TMOD = 0x01;
    TH0 = 0x0F8;
    TL0 = 0x30;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

void main(void)
{
    InitTimer0();
        while(1);                           //等待中斷發(fā)生
}

void Timer0Interrupt(void) interrupt 1
{
    TH0 = 0x0F8;
    TL0 = 0x30;
    i++;
        if(i>=100)                                   //經(jīng)過100個2ms(200ms),led燈取反一次,實現(xiàn)200ms交替閃爍
        {
                i=0;
                led=~led;                               
        }
}


我也是新手,希望可以幫到你。
作者: Sawardeakar    時間: 2019-2-2 05:17
用兩個定時中斷寫法與設(shè)置定時都一個樣,到不如一個定時中斷解決
void Timer0Interrupt(void) interrupt 1
{
    uchar j;
    TH0 = 0x0F8;
    TL0 = 0x30;
    i++;
        if(i>=100) //經(jīng)過100個2ms(200ms),led燈取反一次,實現(xiàn)200ms交替閃爍
        {
                i=0;
                j++;
                led=~led;                                
        }
       
        if(j>=5)//1秒
        {
                j=0;
                k++//秒加  k要設(shè)全局變量       
        }
        if(k>=60)k=0;
}
后面就是將K的值拆分放到數(shù)碼管顯示函數(shù)中......略




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1