⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t1-conut.c

📁 ME500——51单片机的几个中断程序
💻 C
字号:
/*******************************************************************
*                                                                  *
* ME500单片机开发系统演示程序 - 定时与计数中断                     *
*                                                                  *
* P0 LED显示  (流水灯)                                           *
*                                                                  *
* 版本: V1.0 (2006/11/20)                                         *
* 作者: gguoqing (Email: gguoqing@willar.com)                     *
* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界)  *
* 邮箱: support@willar.com                                        *
*                                                                  *
*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved  *
*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!        *
*                                                                  *
*******************************************************************/

//P3.2输出T1计数脉冲,请将P3.2与P3.5用导线连接。

//定时器0定时,中断溢出一次,T1计数器加1。

//T1计数器计满10次,LED灯左移一位。(流水灯)

//*****************************************************************

	
#include < reg51.h >
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int

sbit  T1_pulse=P3^2;

uchar move;

/*********************************************************

  主函数

**********************************************************/
void  main()
{
    P0=0xff;     //关所有灯
    P2=0xff;

    TMOD=0x51;   //TIMER0定时,TIMER1计数
    TH0=0xa6;
    TL0=0x00;    //25ms定时常数
    TH1=0xff;
    TL1=0xf6;
    EA=1;        //开总中断
    ET1=1;       //允许定时/计数器1 中断
    TR0=1;       //启动定时/计数器0 中断
    TR1=1;       //启动定时/计数器1 中断
    T1_pulse=1;
    move=0xfe;   //扫描初值

    while(1)
    {
      do
      { }while(!TF0);  //T0采用查询方式
             
      {
        TR0=0;
        TH0=0xa6;
        TL0=0x00;      //25ms定时常数

        T1_pulse=~T1_pulse; //T1中断触发脉冲
        TF0=0;
        TR0=1;
      }
    }

}

/*********************************************************

  Time1 中断服务函数

*********************************************************/
void Time1(void) interrupt 3 
{
   EA=0;
   TH1=0xff;
   TL1=0xf6;   
   P0=move;
   move=(move <<1)|0x01;
   if(move==0xff)
   move=0xfe;
   EA=1;
}

//*********************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -