51单片机应用从零开始(五)·加减乘除运算

51单片机应用从零开始(一)-CSDN博客

51单片机应用从零开始(二)-CSDN博客

51单片机应用从零开始(三)-CSDN博客

51单片机应用从零开始(四)-CSDN博客

详解 KEIL C51 软件的使用·建立工程-CSDN博客

详解 KEIL C51 软件的使用·设置工程·编绎与连接程序-CSDN博客

        前面我们通过对P3口的控制实现了流水灯的操作,下面我们来进行加减乘除运算的学习。

1.  用 P0 口、P1 口分别显示加法和减法运算结果

#include<reg51.h> 
void main(void) 
{ unsigned char m,n; m=43; //即十进制数 2x16+11=43 n=60; //即十进制数 3x16+12=60 P1=m+n; //P1=103=0110 0111B,结果 P1.3、P1.4、P1.7 口的灯被点亮P0=n-m; //P0=17=0001 0001B,结果 P0.0、P0.4 的灯被熄灭}

2.  用 P0、P1 口显示乘法运算结果

        51单片机的P0口和P1口是用来进行输入输出的通用口,可以通过程序来进行控制。如果要使用P0和P1口来显示乘法运算结果,可以采用以下步骤:

  1. 定义变量:定义两个变量m和n,分别用来存储乘数和被乘数。

  2. 通过P0口输入数据:使用P0口进行输入操作,将乘数和被乘数分别输入到变量m和n中。

  3. 进行乘法运算:使用乘法指令MUL将m和n相乘,将结果存入寄存器中。

  4. 将乘法结果存到P1口中:使用P1口进行输出操作,将乘法结果从寄存器中读取,通过P1口输出。

下面是代码实现的具体步骤:

#include<reg51.h> //包含单片机寄存器的头文件
void main(void) 
{ unsigned char m,n; unsigned int s; m=64; n=71; s=m*n;  //s=64*71=4544,需要 16 位二进制数表示,高 8 位送 P1 口,低 8 位送 P0 口//由于4544=17*256+192=H3*16*16*16+H2*16*16+H1*16+H0 //两边同除以 256,可得 17+192/256=H3*16+H2+(H1*16+H0)/256 //因此,高 8 位 16 进制数 H3*16+H2 必然等于 17,即 4544除以 256 的商//低 8 位 16 进制数 H1*16+H0 必然等于 192,即 4544 除以256 的余数P1=s/256; //高 8 位送 P1 口 ,P1=17=11H=0001 0001B, P1.0 和 P1.4口灭,其余亮P0=s%256; //低 8 位送 P0 口 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7 口灭,其余亮
}

3.  用 P1、P0 口显示除法运算结果

#include<reg51.h> //包含单片机寄存器的头文件
void main(void) 
{ P1=36/5; //求整数P0=((36%5)*10)/5; //求小数while(1) ; //无限循环防止程序“跑飞”}

4.  用自增运算控制 P0 口 8 位 LED 流水花样

#include<reg51.h> //包含单片机寄存器的头文件
/****************************************************** 
函数功能:延时一段时间
******************************************************/ 
void delay(void) 
{ unsigned int i; for(i=0;i<20000;i++) ; 
} 
/****************************************************** 
函数功能 :主函数
******************************************************/ 
void main(void) 
{ unsigned char i; for(i=0;i<255;i++) //注意 i 的值不能超过 255 { P0=i; //将 i 的值送 P0 口delay(); //调用延时函数} 
}

更多推荐:

时光の尘_千题千解·Java面试宝典,Linux学习,C++学习-CSDN博客

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

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

相关文章

conan 入门指南

conan 新手入门 1 需要注意的事项2 使用 Poco 库的 MD5 哈希计算器2.1 创建源文件2.2 搜索poco conan 库2.3 获取poco/1.9.4的元数据2.4 创建conanfile.txt2.5 安装依赖2.6 创建编译文件2.7 构建和运行程序 3 安装依赖程序4 检查依赖关系5 搜索软件包6 与其他配置一起构建 该篇…

Python 爬虫 AES DES加密反爬

当你遇到需要处理 AES 或 DES 加密的反爬虫机制时&#xff0c;Python 可以通过使用相应的库来解决这类问题。首先&#xff0c;我们需要理解 AES 和 DES 加密是什么&#xff1a; AES (Advanced Encryption Standard)&#xff1a;一种广泛使用的对称加密算法&#xff0c;它使用相…

Resolume Arena 7.15.0(VJ音视频软件)

Resolume Arena 7是一款专业的实时视觉效果软件&#xff0c;用于创造引人入胜的视频演出和灯光秀。它提供了丰富多样的功能和工具&#xff0c;可以将音频、视频和图像合成在一起&#xff0c;创造出令人惊叹的视觉效果。 Resolume Arena 7支持多种媒体格式&#xff0c;包括视频文…

LeetCode(25)验证回文串【双指针】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 验证回文串 1.题目 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&…

nvm工具的使用

一、出现的问题 今天安装了nvm工具后&#xff0c;意外发现node命令和npm命令失效了&#xff0c;命令行出现了以下现象 当输入node -v&#xff0c;显示&#xff1a;‘node’不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 最后发现&#xff0c;是因为在安装…

雷达中DBF算法的过程,以及重要概念波束形成向量和形成波束的理解

在数字波束形成(DBF)中,我们会计算输出信号在各个可能的到达角度上的功率谱。这个过程主要包括以下步骤: 设定角度范围:首先,我们需要设定一个可能的到达角度范围。这个范围通常是从-90度到90度,或者是从0度到360度,取决于我们的需求和天线阵列的配置。 计算波束形成向…

linux rsyslog日志采集格式设定四

linux rsyslog日志采集格式设定四 1.创建日志接收模板 打开/etc/rsyslog.conf文件,在GLOBAL DIRECTIVES模块下任意位置添加以下内容 命令: vim /etc/rsyslog.conf 测试:rsyslog.conf文件结尾添加以下内容 $template ztj,"%fromhost-ip% %app-name% %syslogseveri…

微机原理_10

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。&#xff09; 1,将二进制数110110.01转换为十六进制为(&#xff09; A. 66.1H B. 36.4H C. 66.4 D. 36.2 2,一台计算机的字长是4个字节,含义是(&#xff09; A.能处理的最大…

【图像处理】:Otsu算法最大类间方差法(大津算法:附源码)

这里写自定义目录标题 数学原理算法评价参考链接 数学原理 以灰度图像为例&#xff0c;对于图像MN大小的矩阵&#xff0c;即图像中的像素&#xff0c;每一个值即为像素值&#xff0c;其中灰度图像像素值在(0~255)之间。 主要实现前景(即目标)和背景的分割&#xff1a; 主要公式…

在原生HTML页面发起axios请求

在原生html页面发起axios请求&#xff0c;首先需要先引入axios文件包&#xff0c;然后按照axios的请求方式发起请求即可&#xff0c;但如果页面在本地&#xff0c;那么请求一般会报错跨域问题&#xff0c;需要部署一下才能正确请求数据&#xff1b; 例子 <!DOCTYPE html&g…

C语言编程陷阱(三)

陷阱11:不要使用==运算符来比较两个字符串是否相等 字符串是C语言中常用的数据类型之一,它是由一系列字符组成的数组,以空字符\0结尾。有时候,我们需要比较两个字符串是否相等,比如在验证用户输入,或者在查找匹配的数据,或者在排序字符串等,就需要使用==运算符或strcmp…

<MySQL> 什么是数据库索引?数据库索引的底层结构是什么?

目录 一、什么是数据库索引? 1.1 索引的概念 1.2 索引的特点 1.3 索引的适用场景 1.4 索引的使用 1.4.1 创建索引 1.4.2 查看索引 1.4.3 删除索引 二、数据库索引的底层结构是什么&#xff1f; 2.1 数据库中的 B树 长啥样&#xff1f; 2.2 B树为什么适合做数据库索…

【漏洞复现】OneThink前台注入漏洞

漏洞描述 OneThink 是一个基于 PHP 的开源内容管理框架&#xff0c;旨在简化和加速Web应用程序的开发过程。它提供了一系列通用的模块和功能&#xff0c;使开发者能够更轻松地构建具有灵活性和可扩展性的内容管理系统&#xff08;CMS&#xff09;和其他Web应用。 免责声明 …

Meta降本增效大招之:弃用产品

今晚无意间进入去哪儿技术沙龙的直播间&#xff0c;听到他们要删除50%的代码和停掉50%的服务。我就想起Meta公司最近写的这篇博客&#xff1a;Automating product deprecation。 这篇博客对于效能平台的建设非常具有指导意义。文章最后有原文链接和我个人的总结。 这是一个系列…

扩散模型实战(九):使用CLIP模型引导和控制扩散模型

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…

SQL基础理论篇(三):数据表的创建原则

文章目录 简介数据表的常见约束设计数据表的原则参考文献 简介 DDL中常用的功能是增删改&#xff0c;分别对应的命令是create、drop和alter。 执行DDL的时候&#xff0c;不需要commit&#xff0c;就可以完成执行任务。 下面是MySQL里的一个典型的表创建语句&#xff1a; DR…

接口自动化测试面试题

前言 前面总结了一篇关于接口测试的常规面试题&#xff0c;现在接口自动化测试用的比较多&#xff0c;也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢&#xff1f; 也就是面试的过程中&#xff0c;面试官会考哪些问题&#xff0c;知道你是不是真的做过接口自动…

京东数据挖掘(京东运营数据分析):2023年宠物行业数据分析报告

随着社会经济的发展&#xff0c;人均收入水平逐渐提高&#xff0c;使得宠物成为越来越多家庭的成员&#xff0c;宠物数量不断增长。伴随养宠人群的增多&#xff0c;宠物相关产业的发展也不断升温&#xff0c;宠物经济规模持续增长。 根据鲸参谋平台的数据显示&#xff0c;在宠物…

传统游戏难产 育碧瞄向Web3

出品过《刺客信条》的游戏大厂育碧&#xff08;Ubisoft&#xff09;又在Web3游戏领域有了新动作。 首次试水NFT无功而返后&#xff0c;育碧&#xff08;Ubisoft&#xff09;战略创新实验室与Web3游戏网络Immutable达成合作&#xff0c;将利用Immutable 开发游戏的经验和及生态…

C++ 基础二

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …