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的初始化

 

今日未解决问题:

 

今日开发收获:

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

 

自我评价:

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

 

其他:

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值