苏嵌学习日志8

学习日志

姓名:唐小玲 日期:2018.7.19

 

 

 

今日学习任务

 

  1. 中断
  2. 中断优先级
  3. 与中断相关的寄存器
  4. 使用中断处理函数实现LED的亮灭及数码管的显示
  5. 定时/计数器的工作方式及相关寄存器

 

日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

  1. 中断的定义
  2. 中断的分类
  3. 中断处理函数的使用
  4. 编写利用中断处理函数点亮熄灭LED的程序
  5. 编写利用中断处理函数使数码管显示的程序
  6. 定时/计数器的使用

 

日开发中出现的问题汇总

 

个人单片机这一部分知识点学的不好,掌握程度不够,编写程序的时候有很多问题,需要重新多加练习编写代码。

 

日未解决问题

 

依旧不会独立编写难度稍高的代码。

 

 

日开发收获

 

1.中断定义

CPU在执行一个程序时,对系统发生的某个事件(程序自身或外界的原因)作出的一种反应:CPU暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序。(如有必要,被中断的程序可以在后来某时间恢复,继续执行。)

2.与中断有关的寄存器

中断允许控制寄存器IE

定时器控制寄存器TCON

定时器工作方式控制寄存器TMOD

定时器初值赋予寄存器(TH0/TH1,TL0/TL1)

3.利用定时器及中断使三个数码管的数字以10ms的间隔增长

#include<reg51.h>

 

unsigned char code table[] = {0x3f, 0x06 ,

0x5b , 0x4f , 0x66 , 0x6d, 0x7d ,

0x07 , 0x7f  , 0x6f };

 

int flag = 0, display_flag = 0;

 

void display(int m, int n)

{

if(display_flag % 3 == 0)

{

P2 = 0xfe;

  P1 = table[m];

}

else if(display_flag % 3 == 1)

{

P2 = 0xfd;

  P1 = table[n / 10];

}

else if(display_flag % 3 == 2)

{

P2 = 0xfb;

  P1 = table[n % 10];

}

}

 

int main()

{

int miao = 0, num = 0;

EA = 1;

ET0 = 1;

TMOD = 0x01;

TH0 = (65535 - 5000) / 256;

TL0 = (65535 - 5000) % 256;

TR0 = 1;

 

while(1)

{

if(flag == 2)

{

num++;

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;

display_flag++;

flag++;

}

 

自我评价

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

一些简单的练习能够做出,但是有一些小知识点遗忘了,不够熟练,需要多多实践练习!

 

 

作业

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_36974603/article/details/81121739
今日推荐