51单片机定时器实现流水灯实验

2023-05-16

实验内容:利用AT89C51的定时器0 方式1实现流水灯效果,并用仿真验证。

定时器0方式1的工作方式:定时器的工作方式选择由寄存器TMOD控制,方式选择通过M0和M1控制,方式1为16位定时器/计数器,不会自动重装载,需要手动重装。

工作方式选择表:
在这里插入图片描述
源代码:

#include "reg52.h"

static int value = 0x01;	//给P1赋值 对应 0000 0001

/************************************************
*函数名:Timer0_Init
*功能:定时器0初始化
*参数:无			 
*************************************************/
void Timer0_Init()
{
	TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

	TH0=0X3C;	//给定时器赋初值,定时50ms
	TL0=0XB0;	//0X3CB0的十进制是15536 从15536计数到65536计数50000次 即50000us=50ms	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器			
}

/************************************************
*函数名:main
*功能:函数入口
*参数:无			 
*************************************************/
void main()
{
	 Timer0_Init();
	 P1 = value;
	 //死循环
	 while(1)
	 {
	
	 }
}

/*******************************************************************************
* 函 数 名: Timer0
* 函数功能: 定时器0中断服务函数
* 参数:无
*******************************************************************************/
void Timer0() interrupt 1
{
	static int i = 0;		//控制循环左右移动
	static int j = 0;		//控制左右移动时间
	static int flag = 1;	//左右移动标志
	
	j += 1;	//每次进入中断加一,加满5次(10*50ms = 500ms=0.5s)刚好 0.25 秒
	
	if(j==5)
	{
		
		if(i>=0 && i < 7 && flag ==1)
		{	
			i++;
			value = value<<1;  	//0000 0001 << =  0000 0010			
		}
		else if(i==7)
		{
			 flag = 0;
		}

		if(i <= 7 && i>0 && flag == 0)
		{	  
			i--;
		  	value = value>>1;  	//0000 0001 >> =  0000 0010	
		}
		else if(i==0)
		{
			i++;
			value = value<<1;  	//若此处不移则led0会在返回时多亮一个0.25s
			 flag = 1;
		}
		
		P1 = value;
		
		j=0;		//时间清零
		TH0=0X3C;	//手动给定时器重新赋初值,定时50ms
		TL0=0XB0;

	}	
}

硬件仿真图:
在这里插入图片描述
运行效果演示:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机定时器实现流水灯实验 的相关文章

  • ROS NOETIC 思岚激光雷达A2M8启动历程

    Ubuntu20 04系统 xff0c 装的ROS对应为NOETIC版本 第一个bug 一直在catkin make这里出错 xff0c 我的工作空间 xff08 我也命名为catkin ws xff09 在catkin make之后 xf
  • 解决ubuntu网络调节助手之后打不开

    解决ubuntu安装deb文件之后打不开问题 xff08 安装libqtgui4 amd64 xff09 安装Ubuntu网络调试助手 链接 xff1a https pan baidu com s 1GSq pi1FOZxHFnY7PMBh
  • VSCODE中运行C语言(从安装到运行详细版)

    VSCODE中运行C语言 xff08 从插件安装到运行详细版 xff09 一 下载安装MinGW w64 官方下载网站 xff1a MinGW 64 往下来进入下一张页面图 xff0c 选择要下载的文件 二 环境变量配置 按照上面的步骤全部
  • 【ubuntu16.04 LTS】ping百度通,但浏览器打不开百度网页

    典型的DNS配置问题 1 xff0c 执行如下命令 span class token function sudo span span class token function vi span etc resolv conf 在文件最后添加
  • VLAN类型

    大家好呀 xff0c 我是请假君 xff0c 今天又来和大家一起学习数通了 xff0c 今天要分享的知识是VLAN类型 一 基于端口的VLAN xff1a 基于端口的VLAN是最简单 最有效的VLAN划分方法 xff0c 它按照设备端口来定
  • STM32开发(三) 使用printf 重定位到串口输出|CSDN创作打卡

    上一篇 主目录 下一篇 文章目录 背景 KEIL MDK环境下printf重定位串口输出 第一步 在KEIL MDK中使用MicroLIB如图中勾选 第二步 STM32Cube MX异步配置 第三步 KEIL代码演示 代码使用Cube 注意
  • 总线(二)CAN通讯协议介绍

    文章目录 CAN xff08 Controller Area Network xff09 是什么 xff1f 总线拓扑图CAN特征CAN协议数据帧遥控帧遥控帧和数据帧相关 xff1f 仲裁优先级决定数据帧和遥控帧的优先级标准格式和扩展格式的
  • CAN 简介

    1 目的 本文主要介绍一部分 CAN 协议层 2 CAN 简介 这里的内容参考的是 1991 9 的 2 0 版本的官方 CAN 规格书 2 1 概述 CAN 控制器局域网 是一种串行通讯协议 xff0c 传输速度可达 1Mbit s 总线
  • I2C 简介

    1 I2C 简介 这里的内容参考的是 2014 4 4 的 V 6 版本的官方 I2C Bus 规格书 xff0c 第六章有给出相应的链接 1 1 引脚 I2C 一般而言是一种同步半双工的通信方式 xff0c 所以除了电源引脚之外 xff0
  • MPC5744 烧录一直停留在 98% 的解决方法

    1 目的 本人在调试一块主控为 MPC5744 的板子时 xff0c 有时候在烧录时 xff0c 发现烧录总是停在 98 xff0c 卡在 CRC 这里 xff0c 在查找和看资料之后 xff0c 发现了几种解决方法 xff1a 使用 pe
  • MPC5744 Data Flash 仿真 EEPROM

    一 目的 本文主要是使用 MPC5744 中的 Data Flash 仿真 EEPROM 之前在 MPC5744 烧录一直停留在 98 的解决方法 中也简单介绍了 Flash xff0c 所以在这里直接介绍仿真过程 xff0c 注意这里可以
  • Keil添加文件和头文件

    Keil如何添加文件 在工程文件夹下面新建一个 c和一个 h文件 xff0c c文件就是要添加的文件 xff0c h文件就是要添加的头文件 右键点击Project下面的第一个文件夹 点击Manage Project Items 是新建文件夹
  • linux下简单的Socket+Http服务

    C语言体验Socket Http服务 代码部分实验结果实验总结 代码部分 socket监听80端口 xff0c 接收到访问数据 xff0c 返回简单的Http页面 span class token macro property span c
  • 不定态与高阻态,及modelsim默认波形颜色的含义

    数字电路只有高低电平 xff0c 没有实际电平对应不定态和高阻态 xff0c X和Z更多的是用来表示设计者的意图或者用于仿真目的 xff0c 旨在告诉仿真器和综合器如何解释这段代码 X态 xff1a 常用于判断条件 xff0c 只在告诉综合
  • 【ubuntu16.04 LTS】设置屏幕分辨率

    第一种方式 直接打开系统设置 xff0c 选择屏幕分辨率即可 xff0c 和Windows一样 xff0c 不多说 第二种方式 如果在第一种方式中 xff0c 没有找到自己想要设置的分辨率的话 xff0c 可以按如下操作 xff1a 1 x
  • verilog中taskd的用法

    本文转载自博客园作者 xff08 id xff09 xff1a 再也不喝冰了 任务就是一段封装在 task endtask 之间的程序 任务是通过调用来执行的 xff0c 而且只有 在调用时才执行 xff0c 如果定义了任务 xff0c 但
  • Github 安装和上手记录

    1 Git xff1a 分布式版本控制软件 xff08 本地含有版本库 xff09 2 安装 xff1a msysgit github io gt 3 Download gt 安装 4 安装时除了其中一步需要选择 use git from
  • Verilog02:结构化建模

    结构化描述是用Verilog HDL 进行电路设计中最基本描述方式 对于系统级电路设计 xff0c 为了把不同的功能模块有层次地组合在一起 xff0c 主要是采用模块调用的结构化建模方式实现 根据所调用子模块的不同抽象级别 xff0c 可将
  • 有无符号数及原码反码补码之间的关系

    前提知识 xff1a 加法器比减法器的电路实现方式更简单 无符号数表示的数值范围大于0 为了简化电路设计 xff0c 引入有符号数可以表示负数 xff0c 便可以用加法器实现减法运算 使用加法器和原码进行减法运算会产生错误结果 引入反码来修
  • MIPS指令格式定义

随机推荐

  • PTA 浙大版《C语言程序设计(第3版)》题目集--练习2-1 Programming in C is fun!

    题目 本题要求编写程序 xff0c 输出一个短句 Programming in C is fun 输入格式 本题目没有输入 输出格式 在一行中输出短句 Programming in C is fun 思路 一个简单的输出 代码 includ
  • 带参数的宏

    定义两个带参数的宏 xff0c 一个用来求s xff0c 另一个用来求area include lt iostream gt using namespace std define s a b c a 43 b 43 c 2 define A
  • RTK和网络RTK

    浅谈传统RTK工作模式与网络RTK工作模式 谈谈传统RTK工作模式与网络RTK工作模式 传统RTK工作模式就是电台工作模式 xff0c 网络RTK工作模式就是CORS系统测量 本文主旨 有网络信号和CORS覆盖范围的地方就选择网络RTK工作
  • KITTI数据集国内下载地址

    文件列表 xff1a http www functionweb tk kitti 如果遭遇下载失败的情况请访问 https blog csdn net weixin 43599336 article details 87801040 原始图
  • HTTP ERROR 405 Method Not Allowed

    一般访问web UI的时候出现以上错误 xff0c 都是浏览器的防火墙问题 可以进行在安全设置里取消一些防护功能即可
  • 【ubuntu16.04 LTS】更换国内清华源

    目录 1 xff0c 备份原始源文件sources list2 xff0c 修改源文件sources list3 xff0c 更新源 1 xff0c 备份原始源文件sources list 在终端输入如下命令 xff1a span clas
  • 串行通信——异步串行通信

    目录 I 串口通信简介 一 定义 二 意义 三 分类 II 异步串行通信详解 一 数据格式 1 起始位 2 数据位 3 奇偶校验位 4 停止位 二 通信制式 1 单工 2 半双工 3 全双工 三 通信速率 I 串口通信简介 一 定义 在一条
  • shell发送请求解析结果

    需求shell发送请求到服务获取返回结果 xff0c 解析结果后提取需要的数据 再次请求服务 1 发送get请求到服务器 xff0c 格式化返回结果输出到result json文件 2 解析json文件并循环处理解析结果 curl命令 X
  • VScode编辑器快捷键整理

    记录 xff1a VScode编辑器快捷键记录 1 代码块折叠 展开 操作光标所在文件中的所有代码块 xff1a 折叠所有 Ctrl 43 K 43 0 展开所有 Ctrl 43 K 43 J 仅仅操作光标所处代码块内的代码 xff1a 折
  • ROS不同版本消息传递问题

    ROS不同版本消息传递问题 问题 不同版本ros间可通信 xff0c 但消息发送接收有问题 主机 xff1a x86 BECKHOFF Ubuntu16 04 ROS Kinetic 从机 xff1a ARM AGX Xavier Ubun
  • 复位电路

    单片机复位电路 系统开始运行和重新启动都是依靠复位电路实现的 以MCS 51为例 xff0c 复位是需要在RST引脚加上2个机器周期 xff08 24个时钟周期 xff09 以上的高电平 简单的计算 xff1a 如果单片机的时钟频率是12M
  • WIFI原理

    1 路由器向下提供给接入的用户一个id xff0c 也就是类似于192 168 1 231 xff0c 这样的ip地址 xff0c 所有在这个路由器下的用户的ip地址的前面的网络号是相同的 xff0c 都是192 168 1 xff08 x
  • :: 在 C++ 中的作用

    一 作用域符号 xff1a 作用域符号 的前面一般是类名称 xff0c 后面一般是该类的成员名称 xff0c C 43 43 为例避免不同的类有名称相同的成员而采用作用域的方式进行区分 另外 xff0c 在类外定义类中已申明的函数成员时 x
  • PX4-4-任务调度

    PX4所有的功能都封装在独立的模块中 xff0c uORB是任务间数据交互和同步的工具 xff0c 而管理和调度每个任务 xff0c PX4也提供了一套很好的机制 xff0c 这一篇我们分享PX4的任务调度机制 我们以PX4 1 11 3版
  • 基于stm32的mpu6050传感器实验

    64 TOCMPU6050 43 STM32学习笔记 学习了差不多两天的mpu6050 xff0c 参考了很多篇博客还有看一些资料 xff0c 今晚终于把这个东西在我的串口显示出来了 xff0c 下面就废话不多说 xff0c 开始我的笔记啦
  • Ubuntu 20.04 ROS Noetic及Realsense-ROS的安装和多机通信

    Ubuntu 20 04 ROS Noetic及Realsense ROS的安装和多机通信 1 Ubuntu20 04 ROS Noetic安装 参考官方安装教程 ROS Installation 请以以上安装步骤为准 xff0c 因为随着
  • 机械硬盘基本知识

    硬盘内部的物理结构很复杂 xff0c 只能从大的颗粒度去看内部的结构 xff0c 总体来说 xff0c 硬盘结构包括 xff1a 盘片 磁头 盘片主轴 控制电机 磁头控制器 数据转换器 接口 缓存 等几个部份 所有的盘片 xff08 一般硬
  • RTK八大基础知识

    RTK作为现代化测量中的测绘仪器 xff0c 已经非常普及 RTK在测量中的优越性也是不言而喻 为了能让RTK的优越性能在使用中充分的发挥出来 xff0c 为了能让RTK使用人员能灵活的应用RTK xff0c 我认为RTK使用人员必须了解以
  • 游戏思考04:网络游戏同步算法产生原因和相关介绍:跟随(插值)、预测、延迟补偿,三种算法(未完待续02/07)

    文章目录 一 网络同步的典型场景二 简单粗暴的数据同步为何行不通 xff1f xff08 帧同步的难题 xff09 1 xff09 网络同步的流程2 xff09 网络延迟和抖动的直观解释3 xff09 产生卡顿 瞬移的原因分析4 xff09
  • 51单片机定时器实现流水灯实验

    实验内容 xff1a 利用AT89C51的定时器0 方式1实现流水灯效果 xff0c 并用仿真验证 定时器0方式1的工作方式 xff1a 定时器的工作方式选择由寄存器TMOD控制 方式选择通过M0和M1控制 xff0c 方式1为16位定时器