简单计算器
简易计算器(源码)

简易计算器(源码)以下是一个简易计算器的Python源码,用于执行基本的加、减、乘、除运算:```python#简易计算器def add(x, y):"""相加"""return x + ydef subtract(x, y):"""相减"""return x - ydef multiply(x, y):"""相乘"""return x * ydef divide(x, y):"""相除"""if y != 0:return x / yelse:return "除数不能为零!"print("选择操作:")print("1. 相加")print("2. 相减")print("3. 相乘")print("4. 相除")choice = input("输入你的选择(1/2/3/4): ")num1 = float(input("输入第一个操作数: "))num2 = float(input("输入第二个操作数: "))if choice == '1':print(num1, "+", num2, "=", add(num1, num2))elif choice == '2':print(num1, "-", num2, "=", subtract(num1, num2)) elif choice == '3':print(num1, "*", num2, "=", multiply(num1, num2)) elif choice == '4':print(num1, "/", num2, "=", divide(num1, num2)) else:print("无效的选择")```以上代码中,我们定义了四个函数:`add`、`subtract`、`multiply`和`divide`,分别用于执行相加、相减、相乘和相除的操作。
简易计算器设计说明书

摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心。
如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
计算器的出现给我们的生活带来了巨大的便利,计算器在我们的生活中随处可见,也是我们日常生活中不可缺少的工具。
本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除简单的基本四则运算,并在LCD上显示相应的结果。
设计电路采用AT89C51单片机为主要控制电路,利用按键作为计算器的键盘的输入。
显示采用字符LCD 静态显示。
软件方面使用C语言编程,并用PROTUES仿真。
单片微型计算机简称单片机。
它是在一块芯片上集成中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口电路等部件,构成一个完整的微型计算机。
它的特点是:高性能,高速度,体积小,价格低廉,稳定可靠,应用广泛。
单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。
本文介绍了单片机的产生发展、功能特点、应用开发等内容。
【关键词】简单计算器单片机 LCD 应用发展背景近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
本设计采用80c51 芯片,实现了利用单片机进行了一个简单计算器设计。
允许对输入数据进行加减乘除运算及LCD 显示.如果设计对象是更为复杂的计算器系统,其实际原理与方法与本设计基本相同。
LCD液晶显示器是Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。
简单计算器实验报告

简单计算器实验报告
《简单计算器实验报告》
实验目的:通过使用简单计算器进行数学运算,探究其在日常生活中的实际应用价值。
实验材料:简单计算器、纸笔
实验步骤:
1. 使用简单计算器进行加法、减法、乘法和除法运算,记录运算过程和结果。
2. 尝试使用计算器进行复杂运算,如求平方根、求倒数等。
3. 计算器的功能和使用方法的讨论。
实验结果:
通过实验,我们发现简单计算器在日常生活中有着非常重要的应用价值。
它可以帮助我们快速准确地进行数学运算,节省时间和精力。
同时,计算器还具有一些高级的功能,如求平方根、求倒数等,这些功能在科学计算和工程计算中也具有很大的作用。
结论:
简单计算器是我们日常生活中必不可少的工具之一,它的实际应用价值是非常高的。
通过这次实验,我们更加深入地了解了计算器的功能和使用方法,对于我们的学习和工作都有着重要的帮助。
通过这次实验,我们不仅对计算器有了更深入的了解,也增加了对数学运算的兴趣,希望我们在日常生活中能够更加灵活地运用计算器,提高我们的数学运算能力。
c语言制作简单的计算器

c语言制作简单的计算器在计算机编程领域中,C语言是一种广泛使用的编程语言之一。
它具有简单易学的特点,并且能够进行复杂的计算和逻辑处理。
今天,我们就来学习一下如何使用C语言来制作一个简单的计算器。
首先,我们需要明确我们计算器的功能和界面设计。
本次制作的计算器将具有基本的四则运算功能,即加法、减法、乘法和除法。
我们将在控制台中实现计算器的操作,并通过简单的用户界面进行交互。
接下来,我们需要创建一个C语言程序的框架。
首先,我们需要包含头文件,以便在程序中使用各种函数和变量。
我们可以使用"#include" 来引入头文件,例如:```c#include <stdio.h>```然后,我们需要定义主函数 `main()`。
在这个函数中,我们将编写计算器的逻辑代码。
让我们开始编写函数吧!首先,我们需要声明一些变量来存储用户输入的数字和运算符。
我们可以使用 `int` 来定义整数变量,并用 `char` 定义字符变量。
例如:```cint num1, num2, result;char operator;```接下来,我们需要提示用户输入要进行的运算,并读取用户输入的数字和运算符。
我们可以使用 `printf` 和 `scanf` 函数来完成这个任务,例如:```cprintf("请输入第一个数字: ");scanf("%d", &num1);printf("请输入运算符(+, -, *, /): ");scanf(" %c", &operator);printf("请输入第二个数字: ");scanf("%d", &num2);```注意,我们在读取运算符之前添加了空格,这是为了消除输入缓冲区中可能残留的换行符等字符。
接下来,我们需要编写代码来进行实际的计算操作。
简单计算器(信息学奥赛一本通-T1057)

【题目描述】一个最简单的计算器,支持+, -, *, / 四种运算。
仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。
然而:1. 如果出现除数为0的情况,则输出:Divided by zero!2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!【输入】输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。
【输出】输出只有一行,一个整数,为运算结果。
然而:1.如果出现除数为0的情况,则输出:Divided by zero!2.如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!【输入样例】1 2 +【输出样例】3【源程序】#include <iostream>using namespace std;int main(){int a,b;char ch;cin>>a>>b>>ch;if((ch=='+')||(ch=='-')||(ch=='*')||(ch=='/')){switch (ch){case '+':cout<<a+b<<endl;break;case '-':cout<<a-b<<endl;break;case '*':cout<<a*b<<endl;break;case '/':{if(b==0) cout<<"Divided by zero!"<<endl; else cout<<a/b<<endl;}}}else cout<<"Invalid operator!"<<endl;return 0;}。
基于单片机的简单计算器

基于单片机的简单计算器计算器是我们日常生活中常用的工具之一,用于进行各种数学运算。
在计算机科学领域,我们可以利用单片机来制作一个简单的计算器,以满足计算需求。
本文将介绍基于单片机的简单计算器的实现过程和相关原理。
一、项目概述我们将利用单片机的计算能力和显示功能来制作这个简单计算器。
用户可以通过按键来输入数字和运算符,计算器将会实时显示计算结果。
在本项目中,我们将使用8051系列单片机和LCD显示屏来实现这个计算器。
二、系统设计1.硬件设计本项目所需的硬件主要包括单片机、键盘和显示屏。
我们可以使用8051系列的单片机,例如AT89C52、键盘可以通过矩阵键盘来实现,显示屏采用16x2字符型LCD显示屏。
2.软件设计在单片机上实现计算器功能,我们需要编写相应的软件程序。
该程序主要包括以下几个部分:(1)初始化设置:设置单片机的IO口模式和状态,初始化LCD显示屏。
(2)键盘扫描:通过轮询方式检测键盘输入,获取用户按键信息。
(3)数字显示:将用户输入的数字显示在LCD屏幕上。
(4)运算处理:根据用户输入的数字和运算符进行相应的运算操作。
(5)结果显示:将运算结果显示在LCD屏幕上。
三、主要功能模块介绍1.初始化设置在初始化设置模块中,我们需要设置单片机的IO口模式和状态,将其中的一组IO口作为输入端口用于键盘扫描,另一组IO口作为输出端口用于LCD显示屏控制。
同时需要初始化LCD显示屏,使其处于工作状态。
2.键盘扫描键盘扫描模块需要使用IO口作为输入端口来检测键盘输入。
通过按下不同的按键,会在IO口上产生不同的信号。
我们可以使用轮询方式来检测IO口的状态,获取用户按键信息。
3.数字显示在数字显示模块中,我们需要将用户输入的数字显示在LCD屏幕上。
可以使用LCD显示屏的库函数来实现这个功能。
我们可以将用户输入的数字存储在内存中,并通过LCD库函数将其显示在屏幕上。
4.运算处理运算处理模块需要根据用户输入的数字和运算符进行相应的运算操作。
C语言实现简单的计算器(加、减、乘、除)

C语⾔实现简单的计算器(加、减、乘、除) 利⽤运算符做为swich case 语句条件,实现简单程序的编写;并且对输⼊的运算做判断,除数为零也需做判断;1 #include<stdio.h>23int add(int a, int b);4int sub(int a, int b);5int mul(int a, int b);6int div(int a, int b);789int main(int argc, const char *argv[])10 {11/*12 * 定义接收变量,运算字符;13*/14int a,b,d;15char ch;1617/*18 * 赋初值19*/20 a = 0;21 b = 0;22 ch = '0';232425/*26 * 控制台输⼊运算变量,运算符;27*/28 printf("请输⼊需要计算的数及运算符;格式如:'num1 +-x/ num2' \n");29 scanf("%d%c%d",&a,&ch,&b);3031/*32 * 输⼊数据判断33*/34while((ch != '+')&&(ch != '-')&&(ch != '*')&&(ch != '/'))35 {36//fflush(stdin);此种清空缓冲区⽆效37 setbuf(stdin,NULL);38 printf("输⼊运算符有误,请重新输⼊:\n");39 scanf("%c",&ch);40 }4142/*43 * 除数为0做判断44*/45if((ch == '/')&&(b==0))46 {47 setbuf(stdin,NULL);48 printf("除数不能为0,请重新输⼊:\n");49 scanf("%d",&b);50 }515253/*54 * 识别不同运算字符,做不同的运算;55*/56switch(ch)57 {58case'+':59 printf("%d+%d=%d\n",a,b,add(a,b));60break;61case'-':62 printf("%d-%d=%d\n",a,b,sub(a,b));63break;64case'*':65 printf("%d*%d=%d\n",a,b,mul(a,b));66break;67case'/':68 printf("%d/%d=%d\n",a,b,div(a,b));69break;70default:71 printf("Error\n");72 }7374return0;75 }7677/*78* 定义运算函数79*/80int add(int a, int b) 81 {82return a+b;83 }8485int sub(int a, int b) 86 {87return a-b;88 }8990int mul(int a, int b) 91 {92return a*b;93 }9495int div(int a, int b) 96 {97return a/b;98 }。
简单介绍简易计算器的使用方法

简单介绍简易计算器的使用方法简易计算器使用方法计算器是我们日常生活中常见的小工具之一,它能够方便快捷地完成各种数学运算。
在本文中,我们将简单介绍一下简易计算器的使用方法,帮助大家更好地利用这个小工具。
一、开机与关闭使用简易计算器之前,首先需要开机。
通常,在计算器上会有一个电源开关,打开开关后,计算器便会自动启动。
要关闭计算器,只需要将电源开关关闭即可。
二、数字输入在简易计算器上,数字输入是最基本的操作。
计算器通常会有一个数字键盘,上面标有0到9的数字。
通过按下相应的数字键,可以输入需要计算的数值。
输入多位数时,只需按照正确的顺序依次按下每个数字键。
三、基本运算简易计算器能够完成四则运算,包括加法、减法、乘法和除法。
使用计算器进行基本运算时,需要按下特定的运算符键。
1. 加法:简易计算器上通常会有一个“+”键,按下该键后,计算器会把当前输入的数值记为被加数,再输入另一个数值,按下“=”键,计算器就会显示它们的和。
2. 减法:类似地,简易计算器上通常会有一个“-”键,按下该键后,计算器会把当前输入的数值记为被减数,再输入一个数值,按下“=”键,计算器就会显示它们的差。
3. 乘法:简易计算器上通常会有一个“×”键,按下该键后,计算器会把当前输入的数值记为被乘数,再输入一个数值,按下“=”键,计算器就会显示它们的积。
4. 除法:类似地,简易计算器上通常会有一个“÷”键,按下该键后,计算器会把当前输入的数值记为被除数,再输入一个数值,按下“=”键,计算器就会显示它们的商。
四、小数与分数计算除了整数运算,简易计算器还可以进行小数和分数的计算。
对于小数的输入,直接使用数字键盘即可,对于分数的输入,则需要使用特定的输入方式。
通常,在计算器上会有一个“分数”键或“1/x”键,按下该键后,计算器会进入分数输入模式,在屏幕上显示分子和分母的输入框,通过按下数字键来输入相应的分子和分母。
输入完毕后,按下“=”键,计算器就会进行分数的计算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业论文(设计)简单计算器学生姓名:指导教师:合作指导教师:专业名称:应用电子技术所在学院:2013 年4 月目录摘要 (I)第一章前言 (1)第二章方案论证与设计 (2)2.1 目标和要求 (2)2.2 方案设计 (2)第三章硬件介绍 (3)3.1单片机 (3)3.2 LED显示器 (4)3.3键盘 (4)第四章软件编程 (5)4.1显示程序设计 (5)4.2 键盘扫描程序 (5)4.3运算程序设计 (8)4.4蜂鸣器程序设计 (9)4.5 汇编程序 (10)总结 (23)参考文献 (24)附录 (25)摘要随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是电子技术的发展,更犹如雨后春笋般的变化着。
现在单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。
计算器在人们的日常中是比较的常见的电子产品之一。
现阶段的计算器还是比较简单的,电路也并不是特别复杂,但它却还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,并结合所学的单片机知识,想到了应用单片机来设计一个可以完成计算器基本功能的程序。
该设计系统是选用AT89C51 的单片机为基础, P1和P3 口作为输入端,外接4X4 的键盘,通过键盘扫描来进行对输入数的控制,在P0口,P2 口接入驱动电路。
用来保证 LED 的正常工作。
计算器将完成的功能有加,减,乘,除,清零的功能。
关键词:计算器,LED,单片机第一章前言当今已是信息化时代,社会快速发展和信息技术革命的不断深入使随着现代科技的飞速发展,单片机已经在各个领域得到越来越广泛的应用,由于其体积小,功耗低这两个基本特征,在通讯,家电,工业控制,仪器仪表,汽车等产品中都可以看到单片机的身影,可以说几乎很难找到哪个领域没有单片机的踪迹,且逐渐地发展成了一门比较关键的技术学科。
单片机技术也随着集成电路技术的进步在近几年飞速的发展,这种发展可以分为两方面:一方面在硬件上单片机内部集成了越来越多的功能部件,如A/D,D/A,PWM,WATCHDOG,LCD驱动,串行口,大容量FLASH存储器等;另一方面在开发手段上从汇编语言向高级C语言过度,计算机仿真调试,IAP,ISP技术的应用使单片机开发周期大大的缩短,为各类产品更新,软件的升级提供了可靠的技术保障。
在设计单片机应用系统时,由于历史的原因,目前在国内仍然以8051系列单片机为主。
提起计算器,值得我们骄傲的是最早的计算工具诞生在中国。
中国古代最早采用的一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头、兽骨充当材料的,约270,枚一束,放在布袋里克随身携带。
17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德法发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数,这些计算工具不仅带动了计算机的发展,也为现代计算器的发展奠定了良好的基础,计算器已经成为现代社会应用广泛的计算工具。
硬件主要由四部分组成,核心部分为8051单片机芯片,按键部分是一个4*4键盘,采用软件识别键值,并执行相应的操作。
显示部分是一个液晶显示器。
软件部分主要用编程语言来编程。
大致执行过程:开机显示零,等待输入数值,当键入数字时,通过显示器显示出来,当键入+、-、*、/运算符时,计算器在内部执行数值存储和转换,并等待再次输入数值,当再次输入数值后,显示新输入的数值,按等号就会在显示器上输出运算结果。
第二章方案论证与设计2.1 目标和要求设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个四乘四的键盘,一个排阻做P0口的上拉电阻,它可以实现结果低于65535的加、减、乘、除运算。
2.2 方案设计本次设计是在应用单片机的前提下进行的,根据要求需要扩展必要的外接口电路,实现计算器的控制。
具体设计考虑如下:①由于要设计的是简单的计算器,可以进行四则运算,对数字的大小范围要求不高故我们采用可以进行四位数字的运算,选用8个LED数码管显示数据和结果。
②另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可。
因此根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计,然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。
这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。
如图2-1程序流程图第三章硬件介绍3.1单片机单片机作为计算器的主要功能部件,可以进行很快地实现运算功能MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。
图3-1 单片机实物图图3-2 单片机芯片3.2 LED显示器发光二极管LED 是单片机应用系统中的一宗简单而常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。
因而作为典型的外围器件,LED 显示单元是反映系统输出和操作输入的有效器件。
LED 具备数字接口可以方便的和大年纪系统连接;它的优点是价格低,寿命长,对电压电流的要求低及容易实现多路等,因而在单片机应用系统中获得了广泛的应用,所以在此设计中我首先选用了LED作为显示器件。
:图3-3显示器3.3键盘计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式。
我们引入了矩阵键盘的应用,采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘。
在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×4个。
这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
图3-4 按钮矩阵第四章软件编程4.1显示程序设计考虑到显示程应具有通用性,在不进行输入时显示0,输入时显示输入的数字或运算结果,而且要使8个数码管同时显示不同的数字,选用动态显示应是最佳的。
将30H-37H单元设置成数码管显示缓冲区,分别存放数码管各个位要显示的数据,40H单元作为输入数据的计数单元。
因为运算结果超出范围时应报错,使数码管显示“ERROR”即可,将数码管的0-9的代码和“ERROR”代码存于LABLE1列表中。
当调用显示程序时,显示程序根据40H单元的记录的个数决定数码管显示的位数。
如果输入错误将在数码管上显示“ERROR”。
这样就得到了显示程序的入口:30H-37H,依次存放个位至千万位,而40H,存放输出的数字位数。
4.2 键盘扫描程序将P3口送0EOH,将P1口先送1在读P1口的数据当P1口低四位全一时说明没有键按下,在扫描下一行,如果P1口不全一,则有键按下,将P3口高四位与P1口低四位组合成一个字节,放入R5寄存器中,按键去抖,判键是否松开,如松开则将得到的键值判别是哪个键,如果是数字键则首先将其对应的数字(按键代码对应如下表)放入缓冲区30H,同时将将键值放入结果缓冲区,并调用显示程序,显示键值,在调用扫描键盘程序,如果在有键值输入则将原来的数值在数码管显示缓冲区向高位依次移一位,将刚键入的数值放入最低位,并将原来的数值乘十加上刚键入的数放人结果缓冲区,然后调用显示程序,如果是运算符,则记录运算符标志,加法用01H表示,减法用02H 表示,乘法用03H表示,除法用04H表示,并将结果缓冲区的数转移到中间结果缓冲区,将结果缓冲区清零,等待输入运算数据,当按等号时,根据记录的运算符标志,判断是那种运算,执行运算将结果依次除10取余数放入结果显示缓冲区,调用显示程序。
依次循环执行。
表4-1键盘扫描码图4-1 显示程序流程图4.3运算程序设计运算程序分四个模块,即加减乘除。
分别采用两字节运算,因此运算结果不能超出两字节,否则会溢出。
溢出时显示ERROR。
加法程序:入口:R0被加数低位字节地址指针,R1加数低位字节地址指针,R3字节数。
出口:R0和值地位字节地址指针,R3和值字节数。
运算时用R0,R1间接寻址,从低字节算起,高字节采用带进位加(ADDC),计算结果回送到R0所指的单元中,并将和字节数放入R3单元中,如果R3大于等于3说明溢出。
减法程序:入口:R0被减数低位字节地址指针,R1减数低位字节地址指针,R3字节数。
出口:R0和值地位字节地址指针,R3和值字节数。
只是判断溢出是通过CY位,如果运算后CY 位有借位,则将07H位置1,否则置0。
乘法程序:入口:R3,被乘数低位地址字节,R2,被乘数高位地址字节,R7,乘数低位地址字节,R6,乘数高位地址字节。
出口:R4,R5,R6,R7结果字节由高到低。
通过判断R5是否为零就可以知道运算结果是否溢出,如果溢出调用溢出程序。
除法程序:入口:被除数放在R4R5R6R7,R4R5,内容为零,R4高R5低,除数放在R2R3,R2高R3低。
出口:商放在R6R7,R6高R7低,余数放在R4R5,R4高R5低。
图4-2 运算程序扫描流程图4.4蜂鸣器程序设计这个程序是实现当输入八个数字时,如果在输入数字它便鸣叫,提示使用者输入以满,不允许在键入值,只需在键盘程序中,加入判别输入是否超过八个如果超过则调用风鸣器程序,使P3.0由低电平转入高电平,延迟1ms返回。
图4-3蜂鸣器4.5 汇编程序ORG 0000HLJMP STARTORG 0030HSTART: MOV 30H,#00HMOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HMOV 3CH,#00HMOV 3DH,#00HMOV 3EH,#00HMOV 3FH,#00HMOV 40H,#00HMOV 41H,#00HMOV 42H,#00HMOV 43H,#00HMOV 44H,#00HMOV 50H,#0E0HMOV 51H,#0D0HMOV 52H,#0B0HMOV 53H,#70HLOOP3: ACALL DISPLAYMOV R0,#50HMOV R7,#04HLOOP1: MOV A,@R0MOV P3,AMOV A,#0FFHMOV P1,AMOV A,P1ANL A,#0FHMOV R5,ACJNE A,#0FH,LOOP2INC R0DJNZ R7,LOOP1SJMP LOOP3LOOP2: MOV R4,#0A0H YANSHI: ACALL DELAY1mSDJNZ R4,YANSHISK: MOV A,#0FFHMOV P1,AMOV A,P1ANL A,#0FHCJNE A,#0FH,SKMOV A,42HMOV R1,#30HCJNE A,#01H,NEXT1MOV 40H,#00HMOV 42H,#00HNEXT1: CJNE @R0,#0E0H,ROW2KEYMOV A,R5ORL A,@R0CJNE A,#0EEH,KEY2MOV A,40HCJNE A,#08H,TW1ACALL WARNNINGJMP LOOP3TW1: INC 40HMOV A,#07HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY2: CJNE A,#0EDH,KEY3MOV A,40HCJNE A,#08H,TW2ACALL WARNNINGJMP LOOP3TW2: INC 40HMOV A,#08HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY3: CJNE A,#0EBH,KEY4MOV A,40HCJNE A,#08H,TW3ACALL WARNNINGJMP LOOP3TW3: MOV A,#09HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY4: ACALL JUDEGACALL CHANGEMOV 42H,#01HMOV 41H,#04HJMP LOOP3ROW2KEY: CJNE @R0,#0D0H,ROW3KEYMOV A,R5ORL A,@R0CJNE A,#0DEH,KEY5MOV A,40HCJNE A,#08H,TW4ACALL WARNNINGJMP LOOP3TW4: INC 40HMOV A,#04HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY5: CJNE A,#0DDH,KEY6MOV A,40HCJNE A,#08H,TW5ACALL WARNNINGJMP LOOP3TW5: MOV A,#05HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY6: CJNE A,#0DBH,KEY7MOV A,40HCJNE A,#08H,TW6ACALL WARNNINGJMP LOOP3TW6: MOV A,#06HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY7: ACALL JUDEGACALL CHANGEMOV 42H,#01HMOV 41H,#03HJMP LOOP3ROW3KEY: CJNE @R0,#0B0H,ROW4KEYMOV A,R5ORL A,@R0CJNE A,#0BEH,KEY8MOV A,40HCJNE A,#08H,TW7ACALL WARNNINGJMP LOOP3TW7: MOV A,#01HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY8: CJNE A,#0BDH,KEY9MOV A,40HCJNE A,#08H,TW8ACALL WARNNINGJMP LOOP3TW8: MOV A,#02HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY9: CJNE A,#0BBH,KEY10MOV A,40HCJNE A,#08H,TW9ACALL WARNNINGJMP LOOP3TW9: MOV A,#03HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY10: ACALL JUDEGACALL CHANGEMOV 42H,#01HMOV 41H,#02HJMP LOOP3ROW4KEY: MOV A,R5ORL A,@R0CJNE A,#7EH,KEY11JMP STARTKEY11: CJNE A,#7DH,KEY12MOV A,40HJZ QQCJNE A,#08H,TW10ACALL WARNNINGJMP LOOP3TW10: MOV A,#00HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11QQ: JMP LOOP3KEY12: CJNE A,#0BBH,KEY13ACALL JUDEGACALL CHANGEJMP LOOP3KEY13: ACALL JUDEGACALL CHANGEMOV 42H,#01HMOV 41H,#01HJMP LOOP3MOVE: MOV R1,#30HMOV R6,40HDDD: XCH A,@R1NOPNOPNOPNOPINC R1DJNZ R6,DDDRET;加法程序:人口:R0,被加数低位字节地址指针,R1,加数低位字节地址指针,R3,字节数;出口:R0,和值地位字节地址指针,R3,和值字节数。