找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1942|回复: 0
收起左侧

51单片机定时器0中断方式点亮LED灯源程序

[复制链接]
ID:903848 发表于 2021-6-10 21:02 | 显示全部楼层 |阅读模式
此程序采用的模块化编程,模块化在编程中很重要。要想学号单片机,请务必掌握。案例实际使用的STC15单片机,但是对于51单片机也同样的使用。只需要将15单片机的头文件更改为51单片机的头文件即可。还有几处需要该的地方我在程序中都有详细的注释。
用到的硬件有有源蜂鸣器(就是比无源蜂鸣器多了一个震荡电路)
1.jpg
另外就是15单片机的一块开发板,上面集成了LED灯,在此就不需要外置LED灯了。![在这里插入图片描述]( 2.jpg
原理图
3.jpg
定时器 中断 是单片机中的重点难点之一
以下.C文件代码


#include "int_0time.h" //自定义的头文件

void Timer0_Tint(void) //初始化定时器0
{
//        AUXR &= 0X7F;      //定时/计数器辅助寄存器,用51单片机此处忽略屏蔽
        TMOD &= 0XF0;      //定时器计数器的工作模式寄存器(配置为定时器启动仅由TR0决定)
        TH0   = 0XDC;      //给计数寄存器赋值          //(选择为定时模式,工作模式0)
        TL0   = 0X00;      //TH0、TR0配置的定时值为10ms
        TR0   = 1 ;        //运行控制位(允许允许)
        ET0   = 1 ;        //定时器0的中断允许控制位(允许T0中断)
        EA    = 1 ;        //总中断(使用中断,必须打开总中断)
}
/****************************************
void Timer0_Rountine(void) interrupt 1 (定时器0的中断函数,中断号为 1 )
****************************************/
void Timer0_Rountine(void) interrupt 1  
{
        static unsigned char time = 0 ;    //static 静态变量(作用限制作用域)定义time无符号char型变量只在
        time++;  //自加1,记录溢出的次数   //此函数内有用
        if(time == 100)                    //1S
        {
                time = 0;                      //清除中断次数
                buzz =~ buzz;                  //蜂鸣器端口状态翻转
                LED1 =~ LED1;                  //灯端口状态翻转
        }
}

以下是.h文件代码

#ifndef __TIN_0TIMER_H__
#define __TIN_0TIMER_H__

#include <STC15W.h>      //此处是自定义的15单片机头文件(51单片机改成reg51.h)

sbit LED1 = P0^5;        //
sbit LED2 = P0^7;
sbit buzz = P0^3;        //蜂鸣器的端口定义(蜂鸣器用的是有源蜂鸣器,有源和无源蜂鸣器可自行百度)

extern void Timer0_Tint(void);  //extern 外部变量声明 声明定时器0中断给外部函数调用

#endif
```

main 代码

#include "int_0time.h"   //自定义的头文件

void main (void)         //主函数
{
        P0M1 = 0 ; P0M0 = 0 ;//配置15单片机的P0端口为准双向口模式,51单片机此处可忽略屏蔽
        Timer0_Tint();       //调用初始化定时器0
        while(1)
        {
                LED2 = 0;        //主任务,LED2常亮 中断发生后LED1被点亮 并伴随蜂鸣器发声
        }
}
51hei.png
最好欢迎大家留言讨论,一起共同进步

程序下载: 定时器0中断点亮LED灯.7z (304.94 KB, 下载次数: 10)

评分

参与人数 1黑币 +80 收起 理由
admin + 80 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表