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

📄 liushui.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  *
*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!        *
*                                                                  *
*******************************************************************/

//采用软件模拟计数脉冲进行计数

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

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

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

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

#define uchar unsigned char
#define uint  unsigned int

sbit  T1_pulse=P3^5;

uchar move;

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

  主函数

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

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

    while(1);

}

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

  Time0 中断服务函数

**********************************************************/
void Time0(void) interrupt 1 // using 0
{
   TR0=0;
   TH0=0x4c;               //50ms定时
   TL0=0x00;
   T1_pulse=1;
   _nop_();
   _nop_();
   T1_pulse=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 + -