嵌入式学习——51单片机——(流水灯、数码管)day16

1. 位运算在单片机中的使用

      & : 按位与   (与0得0、与1不变)(全1为1,有0得0)指定位置0

            1. 让一个字节第n位(从右往左第n位)置0

                P0 &= ~(1 << n); 

             2. 让一个字节第n位(从右往左第n位)和第m位(从右往左第m位)置0:

                P0 &= ~((1 << n) | (1 << m));

            3. 判断一个字节某一位是否为1

int i = 0xaaaaaaaa;if ((i & (1 << n) != 0)
{printf("第n位是 1 \n");
}else
{printf("第n位是 0 \n");
}

            4. 判断一个字节某一位是否为0

int i = 0xaaaaaaaa;if ((i & (1 << n)) == 0)
{printf("第n位是 0 \n");
}else
{printf("第n位是 1 \n");
}

       | : 按位或 (或1得1、或0不变)(全0为0,有1得1)指定位置1

            1. 让一个字节第n位(从右往左第n位)置1:

                P0 |= (1 << n);

            2. 让一个字节第n位(从右往左第n位)和第m位(从右往左第m位)置1:

                P0 |=  ((1 << n) | (1 << m));

      ^ :按位异或 (相同为0、相异为1)    (异或1翻转原位, 异或0原位不变)      指定位翻转

            1.  num ^ num == 0        num ^ 0 == num

            2. 让一个字节整体翻转

                 P0 ^= 0XFF;  

        <<       左移       放大:乘以2^n

        >>       右移       缩小:除以2^n

        ~        按位取反

2. 单片机流水灯程序

        1. 主函数

#include <reg51.h>
#include "led.h"void delay(unsigned int n)
{while (n--);
}int main(void)
{while (1){int i = 0;for (i = 0; i < 8; i++){led_on_n(i);delay(0xffff);}for (i = 7; i >= 0; i--){led_on_n(i);delay(0xffff);}	}return 0;
}

        2. 头文件

#ifndef _LED_H_
#define _LED_H_extern void init_led(void);
extern void led_all_on(void);
extern void led_all_off(void);
extern void led_all_nor(void);
extern void led_on_n(unsigned int n);#endif

        3. 源文件

#include <reg51.h>
#include "led.h"void init_led(void)
{P2 = 0XFF;
}void led_all_on(void)
{P2 = 0;
}void led_all_off(void)
{P2 = 0XFF;
}void led_all_nor(void)
{P2 ^= 0XFF;
}void led_on_n(unsigned int n)
{P2 = ~(1 << n);
}

3. 单片机数码管程序

        1. 主函数

#include <reg51.h>
#include "digit.h"void delay(unsigned int n)
{while (n--);
}int main(void)
{int cnt = 0;int n = 0;while (1){cnt = 0x5f;while (cnt != 0){show_number(n);cnt--;			}n++;}return 0;
}

        2. 头文件

#ifndef _DIGIT_H_
#define _DIGIT_H_extern void display(int digit, int n);
extern void show_number(unsigned int n);#endif

        3. 源文件

#include <reg51.h>
#include "digit.h"void display(int digit, int n)
{unsigned char a[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};P1 &= ~((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3));P1 |= (1 << digit);P0 = a[n];
}void show_number(unsigned int n)
{int i = 0;int j = 0;while (n != 0){i = n % 10;n /= 10;display(j++, i);}
}

                    

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

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

相关文章

DRF之视图集

【 一 】视图集 ​ 在 RESTful 架构中&#xff0c;对资源的常规操作无非就是查询、新增、修改、删除等这么几种。为此&#xff0c;django-rest-framework 分别提供了对应通用类视图函数。但是&#xff0c;如果对同一个资源的不同操作逻辑分散在各个视图函数中&#xff0c;从逻…

开发中遇到SQL IN传入参数的个数超过2100的bug

在SQL Server或者MySQL中&#xff0c;当你在IN子句中需要处理的结果集可能超过2100个元素时&#xff0c;由于SQL Server对IN子句中的参数数量存在大约2100个左右的限制&#xff0c;直接使用IN会导致错误。为了解决这个问题&#xff0c;可以采取以下策略&#xff1a; 1、将参数…

C++STL细节,底层实现,面试题04

文章目录 19. STL19.1. 序列容器19.1.1. vector19.1.1.1. 底层实现和特点19.1.1.2. 常用函数19.1.1.3. emplace_back() vs push_back() 19.1.2. array19.1.2.1. 底层实现和特点19.1.2.2. 常用函数 19.1.3. deque19.1.3.1. 底层实现和特点19.1.3.2. 常用函数 19.1.4 list19.1.4.…

性能远超GPT-4!谷歌发布Med-Gemini医疗模型;李飞飞首次创业瞄准空间智能;疫苗巨头联合OpenAl助力AI医疗...

AI for Science 企业动态速览—— * 谷歌 Med-Gemini 医疗 AI 模型性能远超 GPT-4 * 斯坦福李飞飞首次创业瞄准「空间智能」 * 疫苗巨头 Moderna 与 OpenAl 达成合作 * 美国能源部推动 AI 在清洁能源领域的应用 * 美年健康荣获「2024福布斯中国人工智能创新场景应用企业TOP10」…

2024-5-9

今日流水账&#xff1a; 上午&#xff1a;又睡懒觉了&#xff0c;9点半才起来… 还是在调之前的那个 kernel pwn&#xff0c;但是 CONFIG_SLAB_FREELIST_HARDENED 加固泄漏 cookie 哪里我还是没搞明白&#xff08;&#xff1a;服了然后去理发、冲水卡了&#xff08;&#xff1a…

Centos 7.9如何使用源码编译安装curl最新版本

文章目录 1、前言2、curl源代码下载3、openssl安装4、编译curl4.1、配置编译环境4.2、编译输出二进制curl程序4.3、安装编译后的curl4.4、编译完成检查4.5、验证安装 1、前言 Centos 7.9&#xff0c;由于系统为2017年发行&#xff0c;且以稳定性为主&#xff0c;部分工具版本较…

吴恩达机器学习笔记:第 9 周-17大规模机器学习(Large Scale Machine Learning)17.3-17.4

目录 第 9 周 17、 大规模机器学习(Large Scale Machine Learning)17.3 小批量梯度下降17.4 随机梯度下降收敛 第 9 周 17、 大规模机器学习(Large Scale Machine Learning) 17.3 小批量梯度下降 小批量梯度下降算法是介于批量梯度下降算法和随机梯度下降算法之间的算法&…

Docker Desktop 修改容器的自启动设置

Docker Desktop 允许用户控制容器的自启动行为。如果你不希望某个容器在 Docker 启动时自动启动&#xff0c;你可以通过以下步骤来更改设置&#xff1a; 1. 打开 Docker Desktop 应用。 2. 点击右上角的设置&#xff08;Settings&#xff09;按钮&#xff0c;或者使用快捷键 Cm…

2024数维杯数学建模A题B题C题思路+模型+代码(开赛后第一时间更新)

2024数维杯数学建模A题B题C题思路模型代码&#xff08;开赛后第一时间更新&#xff09; https://mbd.pub/o/bread/ZpWakpdq https://mbd.pub/o/bread/ZpWakpdq 2024年第九届数维杯大学生数学建模挑战赛参赛规则 竞赛要求及论文提交方式; ①本次参赛作品统一在线提交到竞赛…

如何进行资产梳理(信息收集)

前言 渗透测试流程 线路一:渗透测试人员 1.域名收集--(备案收集) 1.1在线收集子域名 1.1.1 站长之家 1.1.2 IP138网站 1.1.3 查子域 1.1.4 RapidDNS 1.1.5 聚名 1.1.6 Crt.sh 1.1.7 googleHack 1.2工具和资产测绘收集子域名 1.2.1 oneforall(最好用,最全面) 1.2.…

内网安全-隧道技术SSHDNSICMPSMB上线通讯LinuxMac 简单总结

第126天&#xff1a;内网安全-隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac_内网安全-隧道技术_ssh_dns_icmp_smb_上线通讯linux_mac-CSDN博客 内网渗透—隧道技术_隧道技术csdn-CSDN博客 #SMB 隧道&通讯&上线 判断&#xff1a;445 通讯 上…

Spark云计算平台Databricks使用,创建workspace和Compute计算集群(Spark集群)

Databricks&#xff0c;是属于 Spark 的商业化公司&#xff0c;由美国加州大学伯克利 AMP 实验室的 Spark 大数据处理系统多位创始人联合创立。Databricks 致力于提供基于 Spark 的云服务&#xff0c;可用于数据集成&#xff0c;数据管道等任务。 1 创建workspace 点击创建wor…

YOLOv9改进策略 :一种新颖的通用倒瓶颈(UIB)搜索块助力检测| 轻量化之王MobileNetV4

💡💡💡创新点:轻量化之王MobileNetV4 开源 | Top-1 精度 87%,手机推理速度 3.8ms,原地起飞! 最主要创新:引入了通用倒瓶颈(UIB)搜索块,这是一个统一且灵活的结构,它融合了倒瓶颈(IB)、ConvNext、前馈网络(FFN)以及一种新颖的额外深度可分(ExtraDW)变体技…

【JavaWeb】网上蛋糕商城后台-客户管理

概念 上文中已讲解和实现了后台管理系统中的订单管理功能&#xff0c;本文讲解客户信息管理功能。 客户信息列表 在后台管理系统的head.jsp头部页面中点击“客户管理”向服务器发送请求 在servlet包中创建AdminUserListServlet类接收浏览器的请求 package servlet;import m…

totoriseSVN 常见问题

1. SVN 无法 clean up 上传时没有关闭 Excel&#xff0c;导致传入了一些临时文件&#xff08;文件名以$开头&#xff09;&#xff0c;关闭文件后临时文件自动删除&#xff0c;导致 SVN 版本错乱&#xff0c;使用 CleanUp 功能无效 更新时提示【Previous operation has not fin…

算法随想录第二天打卡|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

977.有序数组的平方 Python #最后反转列表 class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:left,right0,len(nums)-1new_nums[]while left<right:num1nums[left]**2num2nums[right]**2if num1<num2:new_nums.append(num2)right-1else:new_n…

【Java探索之旅】super 子类构造 掌握

文章目录 &#x1f4d1;前言一、继承1.1 super1.2 子类的构造方法1.3 super与this的区别 &#x1f324;️全篇总结 &#x1f4d1;前言 继承作为面向对象编程中的重要概念&#xff0c;为我们提供了一种强大的代码复用和扩展机制。在Java中&#xff0c;通过继承可以实现子类对父类…

android 手机和平板如何适配

在Android开发中&#xff0c;为了确保应用既能在手机上良好运行&#xff0c;也能在平板等大屏幕设备上提供优质的用户体验&#xff0c;需要进行一系列的适配措施。以下是一些关键的适配策略&#xff1a; 1. 使用Density Independent Pixels (dp/dip) 应用应使用密度无关像素(…

钩子函数onMounted定义了太多访问MySQL的操作 导致数据库异常

先放几种后端遇到的异常&#xff0c;多数和数据库有关 pymysql.err.InternalError: Packet sequence number wrong - got 102 expected 1 127.0.0.1 - - [09/May/2024 17:49:37] "GET /monitorLastTenList HTTP/1.1" 500 AttributeError: NoneType object has no at…

大数据毕业设计Python+Django地铁客流量预测 时间序列 深度学习 机器学习 人工智能 Python爬虫 计算机毕业设计

​ 博主介绍&#xff1a;全网粉丝100W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路 西安工程大学本科毕业设计&#xff…