学习记录3:一个按键控制两盏灯,亮灯循环

2023-11-08

单片机SC95F8617
一个按键控制两盏灯。要求是按一下按键,1亮2灭;再按一下1灭2亮;再按一下1亮2亮,再按一下1灭2灭,然后又1亮2灭循环。
其实列出来会发现这个亮灯的规律是一次转换一个灯,一次转换两个灯,循环。
如下表所示,第一次的转换灯1灯2变了,第二次的转换灯1变了,第三次的转换灯1灯2变了,第四次回到状态一又只变了灯1

灯1 灯2
1 0
0 1
1 1
0 0

我的想法是通过加一个i来标志,每运行一次i加一,在main函数里加一个判断i是奇是偶来达到每跑一次变一次的目的。不过我在想这样的话如果不重新下载的话,i会一直加,不知道会不会有什么影响,如果有更好的方法下次更新。

//LED  :P06 P52 P54  
//KEY: P03 P05
#include  "SC95F861x_C.H"

sbit LED1=P0^6;
sbit LED2=P5^2;

unsigned char key=0xff,oldkey=0xff;
unsigned long keycounter=0;
unsigned long i=1;

void delay(unsigned long time)
{
  	while(time>0){
		time--;
	}
}
void Ioinit()
{
  	P0CON=0x40;//MOV P0CON,#40H    
	P0PH=0xFF;//MOV P0PH,#3FH
	P5CON=0xff;//MOV P5CON,#0FFH    
	P5PH=0xff;//MOV P5PH,#0FFH        
}
unsigned char ReadKey() //判断P03键是否按下
{
	unsigned char tempkey=0;
	if(P03==0&&oldkey==0)
	{
		keycounter++;
		if(P03==0&&keycounter>10000){
			tempkey=1;
			oldkey=tempkey;//记住按键值
			i++;
		}
	}
	if(P03==1){
		oldkey=0;//按键已经抬起
	  	keycounter=0;
	}													 
	return tempkey;
}
void main()
{
	Ioinit();
	while(1)
	{
		key=ReadKey();
		if(key==0x01&&i%2==0)
		{
			P06=!P06;
			delay(10000);
		}
		if(key==0x01&&i%2==1)
		{
			delay(10000);
			P06=!P06;
			P52=!P52;
		}			
	}
}

学习记录,仅供参考。

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

学习记录3:一个按键控制两盏灯,亮灯循环 的相关文章

  • 基于Tiny C compiler的c脚本混合编程方法

    基于Tiny C compiler的c脚本混合编程方法 2006 11 06 23 23 1831人阅读 评论 0 收藏 举报 TCC简要介绍 TCC 最有趣的特性是可以用 UNIX 系统上常见的 usr bin tcc 的方式来执行 AN
  • unity---Mesh网格编程(二)

    目录 1 绘制一个3X3的面 2 代码 unity Mesh网格编程 一 1 绘制一个3X3的面 前面说了mesh的基础知识点 现在绘制一个3X3的面 2 代码 using System Collections using UnityEng

随机推荐

  • 【Java】基本类型之浮点类型(七)

    浮点类型 即带小数部分的数据 有两种常用数据类型 float类型 double类型 表示形式有十进制数形式 科学计数法形式 例如 5 12e2 5 12 10 2 5 12E2 5 12 10 2 e或E代表指数为10 还有三种特殊的浮点数
  • HDFS的数据读取

    HDFS读数据流程 1 客户端用函数open 打开文件 2 FileSystem调用元数据节点 得到数据块信息 并对每一个数据块 元数据节点返回 保存数据块的数据节点地址 3 客户端调用stream的read 函数开始读取数据 4 FSDa
  • 2017年第三届 美亚杯电子取证 团体赛 wp

    17美亚杯团体 wp 目录 17美亚杯团体 wp Linux Raid LVM Win8 win8 内存 IPad7 Linux Raid LVM Win8 win8 内存 IPad7
  • [转载]One-Hot编码

    在我们数据分析 建模的时候 首先要处理的就是各种数据 数据的类型也不仅仅局限于连续型数值 比如 性别 城市名等等此类的指标也是很多的 这种类型 它是不具备序列性 也不能比较大小的 如果这个时候简单的用数字来替换 那么就给这种赋予了大小的属性
  • partition算法的3种形态

    1 原地重写法 条件是小于轴 不符合交换到后面 int partition1 int a int begin int end if end begin lt 1 return end begin int i begin 1 for int
  • 苹果测试软件testflight游戏,教程:如何使用TestFlight 参与App 测试

    工具 原料 iPhone一台 iOS8以上版本 注册过的Apple ID账号密码 方法 步骤 在AppStore上面搜索 TestFlight 软件 1 打开iPhone上的AppStore软件 2 选择 搜索 栏目 3 输入 TestFl
  • GEE

    multcloud网址 https www multcloud com multcloud账号注册很简单 一分钟即可成功 在邮箱点击激活邮件后登录multcloud 然后连接google drive 选中连接的google drive中要下
  • 概率有向图模型之贝叶斯网络

    慕课上北理工的课 目录 1 概率有向图模型 1 1 基本原理 1 2 例子 1 3 结论 2 贝叶斯网络 2 1 贝叶斯网络概念 2 2 贝叶斯定理 2 3 贝叶斯假设 2 4 经验贝叶斯估计 2 5 有向分离 D Separation 2
  • Mysql中的WITH ROLLUP用法

    Mysql中的WITH ROLLUP用法 1 WITH ROLLUP 在group分组字段的基础上再进行统计数据 例子 首先在name字段上进行分组 然后在分组的基础上进行某些字段统计 表结构如下 CREATE TABLE test Id
  • 区块链隐私保护方案:零知识证明、可信执行、多方计算、同态加密

    在现在这个网络发达的时代 个人隐私已经变成一个既敏感又常见的问题 随着有越来越多的人加入区块链 私人钱包被盗或是隐私外露等等这些事件层出不穷 这使得大家对隐私保护的需求在逐步提升 区块链技术最受人敬仰的是它具有匿名 不可篡改以及可追溯的属性
  • 浅析Java编程中类和对象的定义

    浅析Java编程中类和对象的定义 1 什么是类 答 类是客观存在的 抽象的 概念的东西 2 什么事对象 答 对象是具体的 实际的 代表一个事物 例如 车是一个类 汽车 自行车就是他的对象 关于类与对象的描述 类是对象的模版 对象是类的一个个
  • C++ 字符串 string 用法简述

    C 是 C 的超集 因此 C 中的字符串可利用 C 的写法 可以戳此链接了解 另外一种方法是利用 string 类库 本文主要介绍这种方式 string 类使用起来比字符数组简单许多 能够像处理普通数组一样处理字符串 目录 声明 初始化 内
  • VS2015 安装ReportDesigner/ReportViewer的方法

    首先 进入控制面板 找到并进入功能与程序 在安装的所有软件中找到 vs2015 点击更改 其次 在弹出窗口选择修改 然后 勾选Mircosoft SQL Server Data Tools后 一路下一步 最后 重启VS即可看到报表的相关选项
  • 【华为OD机试真题】删除最少字符(java)100%通过率【2023(B卷)100分】

    删除最少字符 题目描述 删除字符串中出现次数最少的字符 如果多个字符出现次数一样则都删除 输入描述 输入只包含小写字母 输出描述 输出删除后剩余的字符 若删除后字符串长度为0 则输出empty 示例一 输入 abcdd 输出 dd 示例二
  • uniapp语法特点

    uniapp vue 小程序 uniapp中的页面使用vue的单文件组件结构 子组件同样使用vue的单文件组件 uniapp应用启动页 由page json 文件配置 uniapp中的标签使用小程序中的组件标签 uniapp中的尺寸单位使用
  • 解决Windows出现d3dcompiler_40.dll找不到

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个d3dcompiler 40 dll文件进行安装
  • 学习Linux(一)初始Linux

    前面的文章 简单的介绍了下如何使用windows搭建Linux子系统 让我们在只用windows 电脑的情况下了解并且快而简洁的学习并且了解Linux 那么接下来我们一起学习下Linux及相关命令 文章内容为自己学习整理 什么是Linux
  • tesserocr模块的安装(Windows,linux ,Mac)

    Windows下的安装 第一步 http digi bib uni mannheim de tesseract 下载安装 第二步 安装tesserocr即可 直接使用pip安装 pip3 install tesserocr pillow L
  • 【Unity实用小知识点】实现按钮长按功能(用EventTrigger实现)

    在一些游戏中可能需要一些按钮长按的功能 但在EventTrigger找了找貌似没有代表长按的功能 感觉EventTrigger通过Down和Up可以实现 就尝试了下 长按简单小例子 实现点击和长按并存 先放效果 脚本 using Unity
  • 学习记录3:一个按键控制两盏灯,亮灯循环

    单片机SC95F8617 一个按键控制两盏灯 要求是按一下按键 1亮2灭 再按一下1灭2亮 再按一下1亮2亮 再按一下1灭2灭 然后又1亮2灭循环 其实列出来会发现这个亮灯的规律是一次转换一个灯 一次转换两个灯 循环 如下表所示 第一次的转