C51单片机_day_01(定时器和中断系统)

时间:2022-05-20 11:49:24

                       c51单片机

  51单片机是控制电路系统的开关,当然芯片就是51芯片,现在随着科技的发展,也是出了很多,功能更多,更全的芯片。

                      51是用c语言做为程序编程的语言

——我对基本基础硬件的了解

        电阻: 降电流电压;                 电容:就像蓄电池一样(但是只能蓄微弱的电量);

——最基本的一个公式

            U= I R;

——电平(这是我了解的新的一个知道点)

    电平分为高电平和低电平

                高电平——3v和5v(单片机工作的电压)

                低电平——0v

                       ——只要有高低电平的差,才会有“工作”

——程序的编程(让一个小灯亮)

#include  "reg52.h"      //导入头文件   reg52.h

sbit led = P0^1;     //定义一个   广角(端口),p0的1端口

void main()     //主函数

{

  led = 1;(或者是0;这是取决与单片机的设置)            //给 端口 输出一个 高电平或者低电平;

}                         //小灯简单的点亮

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                让小灯闪烁的程序(非精确延时)

#include "reg52.h"

sbit P0^0;

void main()

{

  unsigned int  i = 0 ;//定义int 型的 i;它的值是 0~65535

  while(1)                //程序的死循环   单片机用得是非常多的

  {

    led = 1;

    for(i=0;i<30000;i++);      //一个非精确的延时

    led = 0;

    for(i=0;i<30000;i++)

  }

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                  精确的延时

  如果想要使用精确延时,就必须先打延时的功能,它是c51内部的一个功

#include "reg52.h"

void main()

{

  TH0 = 0XFC;  //1秒的延迟高八位的初值

  TL0 = 0x67;      //低八位的初值

  TR0 = 1;   //定时器的开关

  while(1)

  {

    if(TF0 = 1)

    {

      TF0 = 0;//溢出标志,溢出了就清0,

      TH0 = 0xfc;      //重新赋值

      TL0 = 0x67;

      cnt++;       //cnt  记录溢出的次数

      if(cnt >= 1000)    // 溢出是 1毫秒;溢出一千次就是1秒

      {

        cnt = 0;

        sec++;      // sec  ,记录了 溢出的多少秒

      }

    }

  }

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                          中断系统

这是非常重要的的一个知识点,利用一个函数

#include "reg52.h"

void Interrupt_Time0()  interrupt 1  //中断的函数和别的函数有所不同,()后还要加  interrupt  和函数值  1 ←这个值不是随便取的,要看数据芯片;

{

  static unsigned char   i = 0;

  static unsigneed int  cnt = 0; 

  TH0 = 0xfc;

  TL0 = 0x67;

  cnt++;

  if(cnt >= 1000)

  {

    cnt = 0;

    flag_1s = 1;//等于一就会跳转到  flag_1s里;

  } 

  switch(i)

  {

    caes 0:.....................................;break;

  }

}

void main()

{

  TMOD = 0x01; //表示打开定时器的 1 模式  ;

  TH0 = 0xfc;

  TL0 = 0x67;

  TR0 = 1;    //打开定时器    定时器的开关

  EA = 1;    //中断系统的总开关

  ET0 = 1;            //定时器0 的开关

  while()

  {

    if(flag_1s ==1)

    {

      flag_1s = 0

      sec++;

      led_buff[0] = led_char[sec%]; //赋值

    }

  }

}