7.19 学习日志 孙文铉

今日学习任务:

今天学习的中断,包括外部中断,定时计数器中断。了解了中断的工作方式以及中断函数的编写。

定时计数器中断有四种工作方式,有13位、16位、8位。方式0方式1需要重置初始值,方式2不需要。

今日任务完成情况:

一、外部中断实现LED的关闭,数码管的点亮

#include<reg51.h>
int main()
{
    EA = 1;
    EX1 = 1;
    EX0 = 1;

    while(1)
    {
        P2 = 0xff;
        P0 = 0x00;
    }
    return 0;
}

                                                                                                 


void inter_0() interrupt 0  //外部中断处理函数
{
    P0 = 0xff;    
}


void inter_1() interrupt 2  //外部中断处理函数
{
    P2 = 0xfe;
    P1 = 0xff;
        
}
 

二、在数码管上实现计数,从0到999。

#include<reg51.h>

unsigned char code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit LED1 = P0^0;
int flag = 0,dispaly_flag = 0;
int i = 0,count = 0;
int miao = 0,num = 0;
void delay()
{
    int x = 100,i;
    while(x--)
    {
        for(i = 0;i < 40;i++);
    }
}


void display(int m,int n)
{
    if(dispaly_flag%3 == 0)
    {
        P2 = 0xfe;
        P1 = table[m];    
    }    
    if(dispaly_flag%3 == 1)
    {
        P2 = 0xfd;
        P1 = table[n/10];
    }
    if(dispaly_flag%3 == 2)
    {
        P2 = 0xfb;
        P1 = table[n%10];
    }
}


int main()
{
    EA = 1;
    ET0 = 1;
    TMOD = 0x01;
    TH0 = (65535-5000)/256;    //高八位
    TL0 = (65535-5000)%256;     //低八位
    TR0 = 1;

    while(1)
    {

         if(flag == 2)
        {
            num++;
            dispaly_flag++;
            if(num == 100)
            {
                miao++;
                
                num = 0;
            }
            if(miao == 10)
            {
                miao = 0;
            }
            flag = 0;
            
        } 
         display(miao,num);
                                 
    }


    return 0;
}

void timer_0() interrupt 1
{
    //重装初值
    TH0 = (65535-5000)/256;    
    TL0 = (65535-5000)%256;  
    flag++;
}
 

今日开发中出现的问题汇总:

计数时,计数时长和动态显示的间隔时长的问题。

TH0和TL0的初始化

今日未解决问题:

今日开发收获:

深入了解了定时计数器的工作方式,会一些基本的中断操作。

自我评价:

今日所讲的内容基本理解,老师布置的任务也基本完成。

其他:

猜你喜欢

转载自blog.csdn.net/swx747915740/article/details/81123522