单片机学习day1(点亮流水灯)

1. 位运算

        &:按位与   (与0得0、与1不变)(全1为1,有0得0)指定位置1
        |:按位或     (或1得1、或0不变)(全0为0,有1得1)指定位置0
        ^:按位异或  (相同为0、相异为1)    (异或1翻转原位, 异或0原位不变)      指定位翻转         num ^ num == 0        num ^ 0 == num
        ~:按位取反
        >>:右移
                (算数右移:有符号signed  正数左补0  负数左补1)
              (逻辑右移:移动不考虑正负)
            缩小:除以2^n 
        <<:左移
            放大:乘以2^n 
            
        让一个字节第n位(从右往左第n位)置1:
            P0 |= (1 << n);
        让一个字节第n位(从右往左第n位)置0:
            P0 &= ~(1 << n);
        让一个字节第n位(从右往左第n位)和第m位(从右往左第m位)置1:
            P0 |=  ((1 << n) | (1 << m));
        让一个字节第n位(从右往左第n位)和第m位(从右往左第m位)置0:
            P0 &= ~((1 << n) | (1 << m));
        让一个字节第n位(从右往左第n位)和第m位(从右往左第m位)翻转:
            P0 ^= ((1 << n) | (1 << m));

2. stc89c51、stc89c52内存

        二者自身内部含有128字节空间,之后厂商外部扩展了512字节存储空间

        keil环境中,一般定义变量开辟空间在128字节自身空间中,若想在外部扩展空间为定义的变量开辟空间,则格式为:xdata unsigned int n = 0;

3. LED对应寄存器本质

        #define P2 (*((unsigned char *)0xA0))

        P2 = 0x80;

4. 点亮流水灯代码

#include <reg51.h>
#include <string.h>
#include "led.h"void Delay(unsigned int n)
{while (--n){}
}int main(void)
{unsigned char n = 1;int i = 0;LedAllOff();Delay(0xffff);while (1){	for (i = 0; i < 7; i++){LedOn(n);Delay(0xffff);n <<= 1;}LedAllOn();Delay(0xffff);	for (i = 0; i < 7; i++){LedOn(n);Delay(0xffff);n >>= 1;}LedAllOn();Delay(0xffff);	}return 0;
}#ifndef _LED_H //.h头文件只放声明不放定义
#define _LED_H
extern void LedAllOn(void);
extern void LedAllOff(void);
extern void LedOn(unsigned char n);#endif#include "led.h" //.c源文件只放定义不放声明
#include <reg51.h>void LedAllOn(void)
{P2 = 0;
}void LedAllOff(void)
{P2 = 0xff;
}void LedOn(unsigned char n)
{P2 = n ^ 0xff;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS 2边学边练(15)-- 写一个简单的服务(C++)

前言 此篇我们即将编写一个简单的服务&#xff08;service&#xff09;通信例子&#xff0c;客户端节点向服务端节点发出请求&#xff08;.srv文件中规定了通信的数据结构格式&#xff09;&#xff0c;服务端节点收到请求后将结果回复给客户端节点&#xff0c;一问一答&#xf…

力扣-简化路径

题目 71简化路径 思路 这个题和逆波兰表达式求值很想&#xff0c;都是通过使用栈来实现。 对于给定的绝对路径&#xff0c;首先可以使用 “/” 将其分割&#xff0c;分割后的字符串共包括四种情况&#xff1a; 空字符串&#xff08;例如当绝对路径为"//"时&#x…

Unity类银河恶魔城学习记录12-4 p126 Item Tooltip源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI.cs using System.Collections; using System.Collections.Generic; usi…

【面经】interrupt()、interrupted()和isInterrupted()的区别与使用

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;面经 ⛺️稳中求进&#xff0c;晒太阳 interrupt方法 如果打断线程正在sleep&#xff0c;wait&#xff0c;join会导致被打断的线程抛出InterruptedException&#xff0c;并清除打断标记。如…

Redis的配置文件详解

单位&#xff1a;Redis配置对大小写不敏感&#xff01; 注意这里&#xff1a;任何写法都可&#xff0c;不区分大小写。 units are case insensitive so 1GB 1Gb 1gB are all the same.包含&#xff1a;搭建Redis集群时&#xff0c;可以使用includes包含其他配置文件网络&…

PyTorch之Torch Script的简单使用

一、参考资料 TorchScript 简介 Torch Script Loading a TorchScript Model in C TorchScript 解读&#xff08;一&#xff09;&#xff1a;初识 TorchScript libtorch教程&#xff08;一&#xff09;开发环境搭建&#xff1a;VSlibtorch和Qtlibtorch 二、Torch Script模型格…

关于 elf loader 的编写

可以使用如下命令观看 elf 文件的信息 readelf -a build/ramdisk.img | vim -在编写 elf loader 的时候&#xff0c;实际上只有下图这一部分 “Program Headers” 是有用的 凡是类型为 “LOAD” 的就是需要加载进内存的部分 所以&#xff0c;只要把这些部分加载进内存里&…

数据库不用mmap

你确定你想用 MMAP 实现数据库么&#xff1f;_哔哩哔哩_bilibili MMAP 的随机读与顺序读的性能表现不好&#xff0c;以及对于写主要是不可控的刷入时机以及代码冗余&#xff0c;所以 MMAP 不适合在数据库中使用。 mmap是posix系统调用&#xff0c;它提供由操作系统管理内存映…

acwing算法提高之图论--最小生成树的典型应用

目录 1 介绍2 训练 1 介绍 本专题用来记录使用prim算法或kruskal算法求解的题目。 2 训练 题目1&#xff1a;1140最短网络 C代码如下&#xff0c; #include <iostream> #include <cstring>using namespace std;const int N 110, INF 0x3f3f3f3f; int g[N][N…

(C)1008 数组元素循环右移问题

1008 数组元素循环右移问题&#xff1a; 问题描述 输入样例&#xff1a; 6 2 1 2 3 4 5 6 输出样例&#xff1a; 5 6 1 2 3 4 解决方案&#xff1a; #include<stdio.h> #include<string.h> #include<math.h> int main(){int n,k,flag,y,x,final;int a[10000…

Flutter Boost 3

社区的 issue 没有收敛的趋势。 设计过于复杂&#xff0c;概念太多。这让一个新手看 FlutterBoost 的代码很吃力。 这些问题促使我们重新梳理设计&#xff0c;为了彻底解决这些顽固的问题&#xff0c;我们做一次大升级&#xff0c;我们把这次升级命名为 FlutterBoost 3.0&am…

合理早餐选择,稳定糖尿病血糖。

对于糖尿病患者来说&#xff0c;饮食管理是治疗的重要一环。不合理的早餐选择会导致血糖的波动。很多糖尿病朋友按时吃药&#xff0c;但是血糖就是稳定不住&#xff0c;之前看过一个例子&#xff0c;北京崇文门医院朱学敏主任接诊过一个患者&#xff0c;那个患者按时吃药&#…

LaTeX 空格与换行

任意多个空格与一个空格的功能相同。只有字符后面的空格是有效的&#xff0c;每行最前面的空格被忽略。单个换行被视作一个空格&#xff0c;连续两个换行表示分段。~被称作一种不可打断的空格&#xff0c;排版系统不会在这种空格之间换行。西文的逗号、句号和分号等标点后面应该…

Java | Leetcode Java题解之第8题字符串转换整数atoi

题目&#xff1a; 题解&#xff1a; class Solution {public int myAtoi(String str) {Automaton automaton new Automaton();int length str.length();for (int i 0; i < length; i) {automaton.get(str.charAt(i));}return (int) (automaton.sign * automaton.ans);} …

Android Studio学习10——资源res的使用

一、String,StringArray的使用 一次修改&#xff0c;多出生效 String StringArray 二、color的使用 颜色代码对应表 和上面的相似用法 三、Dimen(尺寸)的使用 用的少&#xff0c;一般直接写尺寸 四、如何写一个drawable作为背景 五、如何写一个可以改变的drawable(按钮按下…

IP地址:是给主机配置的,还是给网卡配置的?

在探索网络的奥秘时&#xff0c;我们经常会遇到一个看似简单但又复杂的问题&#xff1a;IP地址到底是配置在主机上&#xff0c;还是配置在网卡上&#xff1f;为什么我们通常说的是“主机IP地址”呢&#xff1f;让我们一起深入探讨。 1. 网卡与IP地址 &#x1f5a5;️&#x1f…

利用OllyDbg对程序内容进行修改实验

1.双击运行exe文件&#xff0c;出现如下弹窗 2.用ollydbg工具打开该执行文件&#xff0c;页面显示如下 3.在注释窗口执行以下操作 4.双击运行exe文件时&#xff0c;显示”Copied!”所以接下来在注释里找到这个字样&#xff0c;如下&#xff0c;我们需要把对话框中的内容修改为“…

SQL语句学习+牛客基础39SQL

什么是SQL&#xff1f; SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;。 SQL 的范围包括数据插入、查询、更新和删除&#xff0c;数据库模式创建和修改&#xff0c;以及数据访问控制。 SQL语法 数据库表 一个…

ChatGPT(3.5版本)开放无需注册:算力背后的数据之战悄然打响

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

90天玩转Python-02-基础知识篇:初识Python与PyCharm

90天玩转Python-02-基础知识篇:初识Python与PyCharm 一、引言 二、Python语言探秘 三、如何学习Python 四、PyCharm IDE的安装与使用 安装步骤: 五、Python编程实例 实例1:列表操作