zoukankan      html  css  js  c++  java
  • lesson3 数码管静态显示及定时器和中断应用

    1、电容帮助晶振起振。

    2、发光二极管LED(Light Emitting Diode),液晶LCD(Liquid Crystal Display)。

    3、数码管原理:

     

    4、中断系统:中断发生——中断响应和中断服务——中断返回。(中断嵌套)

    5、优点:1.分时操作;2.实时响应;3.可靠性高。

    6、80C51单片机的中断优先级有三条原则:CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。

    正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。

    正在进行的低优先级中断服务,能被高优先级中断请求所中断。

    为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。

    7、中断响应条件:1.中断源有中断请求;2.次中断源的中断允许为1;3.CPU开中断(EA=1)。

    8、定时/计数器:一、定时/计数器的结构

    定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

    View Code
     1 #include<reg52.h>
    2 #include<intrins.h>
    3 unsigned char code shu[]={0x3f,0x06,0x5b,0x4f,0x66,
    4 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示数0123456789ABCDEF
    5 unsigned int tt0,tt1,i,j,a;

    6 unsigned char code hello[]={0x76,0x79,0x38,0x38,0x3f,};//显示HELLO
    7 /*void qd0()
    8 {
    9 TMOD=0X01;//设置定时器0为工作方式1
    10 TH0=(65536-50000)/256;
    11 TL0=(65536-50000)%256;
    12 ET0=1;//开定时器0
    13 TR0=1;//启动定时器0
    14 } */

    15 void qd1()
    16 {
    17 TMOD=0X11;
    18 TH1=(65536-50000)/256;
    19 TL1=(65536-50000)%256;
    20 ET1=1;
    21 TR1=1;
    22 }
    23 /*void liushui(unsigned char temp)
    24 {
    25 P1=_crol_(temp,1);
    26 } */

    27 void delay(unsigned int b)
    28 {
    29 while(b--);
    30 }
    31 void main()
    32 {
    33 EA=1;//开总中断
    34 P2=0;i=7;j=0;

    35 P0=shu[i];
    36 tt0=0;tt1=0;P1=0XFE;
    37 TMOD=0X11;//设置定时器0为工作方式1
    38 TH0=(65536-50000)/256;

    39 TL0=(65536-50000)%256;
    40 TH1=(65536-50000)/256;
    41 TL1=(65536-50000)%256;
    42 ET0=1;//开定时器0
    43 ET1=1;

    44 TR0=1;//启动定时器0
    45 TR1=1;

    46 while(1)
    47 {
    48 if (tt0==10)
    49 {
    50 tt0=0;
    51 P1=_crol_(P1,1);
    52 if (i==0)
    53 {
    54 j++;
    55 if (j%2==1) P1=0;
    56 else P1=0xff;
    57 }
    58 if (j==6) while(1)
    59 {
    60 for (a=0;a<5;a++)
    61 {
    62 P2=a+1;
    63 P0=hello[a];
    64 delay(50);
    65 }
    66 }
    67
    68 }
    69 if (tt1==2)
    70 {
    71 tt1=0;
    72 if (i>0)i--;
    73 P0=shu[i];
    74 }
    75 }
    76 }
    77 void d0() interrupt 1
    78 {
    79 TH0=(65536-50000)/256;
    80 TL0=(65536-50000)%256;
    81 tt0++;
    82 }
    83 void d1() interrupt 3
    84 {
    85 TH1=(65536-50000)/256;
    86 TL1=(65536-50000)%256;
    87 tt1++;
    88 }

    注:1、汇编终于看完了,整整十天,好爽啊。。。。

    2、单片机的前几章算是复习,笔记比较粗糙。

    3、再次,我使用的开发板不是视频教程里面的

  • 相关阅读:
    sparkSQL
    Spark分区实例(teacher)
    SparkCore的性能优化
    Linux 输出当前路径下某个文件的绝对路径
    bulid runnable jar file with dependencies
    bulid runnable jar file with dependencies and main class
    spring mvc 整合jsp和thymeleaf两个模板引擎
    解决Volley中的JsonObjectRequest jsonRequest参数无法被服务端读取的问题
    为volley的http请求添加自定义request header
    使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2407289.html
Copyright © 2011-2022 走看看