首页 毕业设计(论文)_基于单片机的全自动洗衣机控制系统__126856228

毕业设计(论文)_基于单片机的全自动洗衣机控制系统__126856228

举报
开通vip

毕业设计(论文)_基于单片机的全自动洗衣机控制系统__126856228毕业设计(论文)_基于单片机的全自动洗衣机控制系统__126856228 基于单片机的洗衣机控制系统设计 2 摘要 单片机是计算机家庭的一个重要分支,它具有体积小、价格低、面向控制的特点,适用于各种工业控制、仪器仪表装置,在人类生产和生活的各个领域都有极为广泛应用。 本洗衣机控制系统,采用目前常用的89C51单片机,用汇编语言的编程方法,完成对洗衣机洗衣全过程的自动控制,并采用LED数码显示洗衣过程代码和洗衣剩余时间,洗衣完成后能自动报警。使全自动洗衣机的使用更加简单、直观和方便。本设计取材容易,结构简洁...

毕业设计(论文)_基于单片机的全自动洗衣机控制系统__126856228
毕业设计( 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 )_基于单片机的全自动洗衣机控制系统__126856228 基于单片机的洗衣机控制系统设计 2 摘要 单片机是计算机家庭的一个重要分支,它具有体积小、价格低、面向控制的特点,适用于各种工业控制、仪器仪表装置,在人类生产和生活的各个领域都有极为广泛应用。 本洗衣机控制系统,采用目前常用的89C51单片机,用汇编语言的编程方法,完成对洗衣机洗衣全过程的自动控制,并采用LED数码显示洗衣过程代码和洗衣剩余时间,洗衣完成后能自动报警。使全自动洗衣机的使用更加简单、直观和方便。本设计取材容易,结构简洁,易于制作,具有一定的实用价值。 关键字:单片机、汇编语言、动态扫描 3 目录 第一章 绪论 1.1 设计目标 1.2 设计意义 第二章 硬件和软件的设计方法 2.1 洗衣机的工作过程 2.2 全自动洗衣机控制系统硬件的选择 2.3 单片机编程软件的选用 第二章 全自动洗衣机控制系统的设计原理 3.1 控制系统方框图 3.2 控制板电路原理(附整机原理图) 3.3 控制功能及过程 第四章 洗衣机控制系统的软件系统 4.1 洗衣机控制系统软件的编程思路 4.2 主程序及子程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图 4.2 洗衣机控制系统的源程序 参考文献 附录 AT89C51技术手册 MCS-51系列单片机指令系统表 4 第一章: 绪论 在生产和生活的各个领域中,凡是有自动控制要求的地方都会有单片机的出现。单片机的应用有利于产品的小型化、多功能化和智能化,而且抗干扰能力强,可在各种恶劣的环境下可靠地工作,成本也较低。所以单片机的应用已极为广泛,它在工业自动化、工业测控、智能仪器仪表、家用电器、信息与通信、军事装备等方面都在发挥着“微电脑控制”的作用。 1(1 设计目标 用51系列单片机89C51控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。不同的衣物,洗涤、漂洗、脱水和洗衣电机正反转所用的时间不同,要求设计能够实现过程选择,并在LED显示屏上显示过程代码。在运行的时候能显示完成整个过程的剩余时间。为了节省单片机的IO端口,以及使硬件连接能尽可能的简单,在LED显示过程中我们使用了动态扫描的方法。软件编程使用汇编语言,烧录好单片机后能实现上电运行。还应该具有相当的稳定性,以保证全自动洗衣机的正常工作。以此体会单片机系统的设计、开发过程。 1(2 设计意义 , , 进一步了解8051单片机。 , , 熟悉单片机控制系统开发流程。 , , 深入学习计算机汇编语言的编程方法。 , , 对计算机的工作原理有进一步的认识。 , , 增强个人动手能力。 5 第二章 硬件和软件的设计方法 在进行系统设计前,我们必须知道所设计的项目要完成什么任务,达到什么样的要求,并根据所完成的任务和要求来选择相应的硬件设备和软件编程方法。在设计前我们先了解一下洗衣机的工作过程和单片机的工作原理,确立算法模型,再选择相应的软件编程语言 2.1洗衣机的工作过程 目前常用的波轮洗衣机分为全自动和双缸洗衣机,它们都是依靠电机拖动波轮带动洗衣筒中的水来回旋转,而使衣物洗干净的。在双缸洗衣机中,电机的正转和反转及洗涤时间控制是由机械定时器开关来完成的,而全自动洗衣机是靠电路来完成,对洗涤来说,效果相同;所不同的是双缸洗衣机在完成洗涤后,需要打开排水开关排水,拿出衣物放到脱水桶中脱水,脱水完成后又要将衣物放回洗衣机桶中洗涤,一次洗衣要进行几次洗涤,就要完成几次这样相同的动作,在完成洗衣的全过程中必须要有人工干预,很不方便,而全自动洗衣机中,洗衣过程中的进水、洗涤、排水、脱水、再进水、洗涤是自动进行的,只在洗衣前需人工放进衣物,洗衣完成后自动报警,再由人工取出衣物,中间过程不需要人工干预,使用要比双缸洗衣机简便的多。完成这样的顺序控制功能,也可以由数字逻辑电路来进行,但实现这样的控制比较困难,电路结构也很复杂,成本高,控制系统不能智能化,如不容易实现单独脱水、单独洗涤这样的功能选择。而使用单片机,采用软件编程的方法可以轻易实现这样的控制,而且电路简单,成本低,洗衣机能够智能化,容易操作。 综合考虑,我们选择了价格低廉,容易买到,比较可靠的89C51单片机来设计全自动洗衣机的控制系统。 2.2 全自动洗衣机控制系统硬件的选择 单片机系统的是一个软硬件结合的系统,不能孤立地只谈一个方向,脱离了硬件来讲软件编程是毫无意义的,同样没有软件,单片机的硬件也无法正常工作。 (1) 单片机89C51 (2) AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 MCS-51指令系统,片内置通用8位中央处理器和Flash存储 单元 初级会计实务单元训练题天津单元检测卷六年级下册数学单元教学设计框架单元教学设计的基本步骤主题单元教学设计 ,内置功能强大的微型计算机的AT89C51提供了高性价比的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 主要功能特性: , , 兼容MCS—51指令系统 ? 4k可反复擦写(>1000次)Flash ROM 6 , , 32个双向I/O口 ? 可编程UARL通道 , , 两个16位可编程定时/计数器 ? 全静态操作0-24MHz , , 1个串行中断 ? 128x8bit内部RAM , , 两个外部中断源 ? 共6个中断源 , , 低功耗空闲和掉电模式 , , 软件设置睡眠和唤醒功能 (2)可控硅 洗衣机的几个关键动作,如进水、排水、电机正转、电机反转,是通过单片机的IO端口,输出控制信号,控制可控硅的通断来实现的。在这里我们用了4个双向可控硅担任控制系统的执行部件。 (3)LED显示器及各开关 为了显示所选功能及剩余时间,完成良好的人机交互,我们选用了共阳的8段LED显示器做显示输出。为了节省端口,采用了扫描的显示方法(下章具体介绍),采用了三个开关,分别做为安全开关、水位开关(进水是否达到要求的传感器)和控制开关(选择洗衣程序和启动暂停等动作的输入按钮) 2.3单片机编程软件的选用 单片机89C51可以用汇编语言和C语言来进行编程,在选用编程语言前,我们先来比较两者之间的特点。 , , 汇编语言:汇编语言是用符号(助记符)表示的机器操作指令,它是对机 器语言的改进。但是机器语言还是面向机器的低级语言,它仍要求开发人员必须精通所 用的单片机硬件系统和指令系统不便于记忆和使用。但是它相比机器语言提供了高一层 次的机器操作抽象,更加接近人类语言,这让它成为单片机系统开发中最常用的开发语 言之一。 , , C语言:C语言正在成为单片机应用系统开发的主流,它既具有高级语言 的简洁、便于理解记忆、通用性好、表达能力强等特点,又具有低级语言的对计算机硬 件进行操作功能。C语言不是面面俱到的语言,也不是专为某一特殊应用领域设计的语 言。它本身不能执行操作(如输入/输出),这些操作都由标准库提供支持。正是因为这 些操作都与语言无关,所以C语言可以适用于任何平台。Cx51是专为8051设计,完全 7 1[1]符合ANSI C标准。可以针对8051生成紧凑、高效的代码。 在洗衣机的控制系统中,由于是面向控制的设计,使用汇编语言方便一些,占用单片机内的ROM空间也较小,并且在汇编语言中,我们可以精确地知道每条指令所占用的时钟周期,能够精确定时,所以在本设计中我们采用了汇编语言编程的方法,源程序编好后,由编程软件转换为机器代码,再由编程器输入到单片机的RAM中去。 8 第三章 全自动洗衣机控制系统的设计原理 3.1 控制系统图 洗衣机要实现衣服的洗涤、漂洗和脱水,离不开进水、电机正转、电机反转和排水这四个动作。上述四个动作,是通过单片机的P0端口,做输出端口,去控制双向可控硅通断来实现的,如下图所示。同时加上输入开关的按钮、数码管显示器、蜂鸣按警器和欠压检测保护电路等,就可以形成完整的单片机控制系统。通过软件编程达到对整个洗衣过程进行控制、检测以及与用户交互。 单片机 显示屏 89C51 进水电磁阀 排水电磁阀 蜂鸣器 水位开关 电机正转 安全开关 电机反转 程序选择/启动/暂停 可控硅X 4个 ~220V 洗衣机单片机控制系统方框图 3.2 控制板电路原理(附控制板整机原理图) 参阅洗衣机单片机控制系统原理图,控制板电路使用ATMEL公司的AT89C51芯片,时钟电路采用6MHZ晶振。组成的输入信号有:安全开关(即洗衣机桶盖的打开与闭合)、水位压力开关(即水位的高低)、启动、暂停按钮,低电压检测信号; 输出控制信号包括:两个8位LED数码动态显示(剩余时间)和蜂鸣器鸣叫、进水阀、正反转洗涤电机、排水阀的控制信号。 交流220V电压经变压、整流、滤波后,其中一路接至低电压保护电路,另一路经过CW7805进行稳压,提供稳定的,5V电压供应给控制板各元件。当低电压保护电路检测到低电压时,将向单片机的INT0引脚产生中断,单片机将响应该中断;关闭各输出端口,以保护执行部件如电机等设备不因欠压而损坏。 9 10 3.3 控制功能及过程 洗衣机动作代码表 动作名称 进水 洗涤 排水 脱水 动作代码 A B C D 本次动作预设时间 2分钟 15\9\6或2分钟 2分秒30秒 5\3\或是分钟(包括30秒 (2D+T秒) 间隙脱水) 洗衣机功能选择代码表 过程代码 过程名称 完成整个过程 所需动作代码及时间 所需时间(分) 浸泡洗涤 A(B1停2)*5B15CD2AB2CD2AB2CD5 01 59 强力洗涤 02 42 AB15CD2AB2CD2AB2CD2 标准洗涤 03 42 AB15CD2AB2CD2AB2CD5 轻柔洗涤 04 34 AB9CD2AB2CD2AB2CD3 快速洗涤 05 24 AB5CD2AB2CD3 单独洗涤 06 17 AB15 漂洗脱水 07 25 CD2AB2CD2AB2CD5 单独脱水 08 8 CD5 留水停机 09 34 AB15CD2AB2CD2AB2 (大写字母后的数字为动作所需的时间) 洗衣机的三大功能是实现衣服的洗涤、漂洗和脱水,加上进水,我们把这四个洗衣机动作编排成4个代码,而这四个动作的组合可形成9个过程(或更多),见动作代码表。选择哪一个过程来执行洗衣程序是在进入洗衣前由用户通过开始、暂停按钮来选择的,如:单独进行脱水可选择过程08。打开电源开关,洗衣机将进入洗衣过程选择状态,此时数码管显示00,用户按启动、暂停键可以显示不同的过程代码(在01,09之间循环显示以指示选择不同的洗衣过程)。3秒内若无按键动作,蜂鸣器开始鸣叫6下(时间长度共3秒)以提醒用户;开始进入相应过程的洗衣程序,此后启动暂停按钮只起暂停或继续洗衣程序执行作用,数码管显示完成本次洗衣的剩余时间。 三大功能中的漂洗实际上是由洗涤和脱水功能组成的,如一次标准洗涤过程(过程代码)中,漂洗功能包括了时间均为2分钟的脱水、洗涤、脱水、洗涤。因此,在编写控制程序实现三大功能时只需编写洗涤和脱水功能的代码,然后作为子程序调用即可。 完成一次洗衣过程所需的动作有: (1) 进水动作 进行洗涤时,盛水桶内的水量必须到水位设定要求。而水位的高低可以通过调节水位开关来实现。洗衣机的进水和水位判断是由水位开关和进水阀的开合来进行控制的。当桶内没有水或水量达不到设定水位时,单片机程序将控制进水阀闭合,开始注水;当桶内的水位达到设定水位时。水位开关受压闭合;程序就可进入下一步(洗涤)处理。若打开进水阀后20分钟内不能进水,则将出错报警,用户只能关闭洗衣机电源进行相关检查后方能重新开机。 11 (2) 排水动作 进入脱水动作前应先排水。为了避免空排水造成时间浪费以及排水不完而带水脱水造成对电机的损害,洗衣机能够根据实际水量(由水位开关决定)对排水时间进行动态控制。设排水开始至水位压力开关断开时所需的时间为D,则总的排水时间为2D,T(T取60秒,总的排水时间不应大于190秒)。因此,在开始排水时,控制程序将同时启动计时器,在D秒后若收到水位压力开关断开的信号,,则再排水D,T时间后,就可以结束排水进入脱水动作。若D大于65秒,说明排水系统有故障;洗衣机将停止动作并蜂鸣报警,提醒用户排除故障(安全开关打开又闭合认为是一次故障詯处理)后再继续。需要注意的是:排水结束后排水开关还是打开的。 (3)洗涤动作 洗涤动作指的是电机周期性的“正转,停止,反转,停止”。不同的洗衣过程,控制电机执行“正转,停止,反转,停止”的时间是不同的,标准洗涤过程可取:正转1.6秒,0.56秒,反转1.6秒,停止0.56秒。对于轻柔洗涤和强力洗涤过程,这个时间要作相应调整。洗涤过程中若遇水位开关断开或用户要求补水(重新选择水位),则要停止洗涤动作并打开进水阀进水直至水位满足要求再继续。 此外,洗涤动作的最后15秒,电机还要进行快速的停止‘‘正转,停止,反转―停止’’处理,以避衣服拧成一团。程序流程见洗涤子程序 (4)脱水动作 排水结束后进入脱水动作,脱水是通过电机的正转来实现的,同时要求排水阀一直打开,也正是由于排水阀的打开,才使脱水时的电机正转速度不同于洗涤时的电机正转速度。(通过机械装置实现)。脱水分间隙脱水和长脱水,间隙脱水时间为30秒,电机按“正转,停止”的周期循环动作,时间为“正转4秒,停止3秒”。长脱水时电机将一直调整正转,所需时间由用户选择的过程决定,一般有3分钟和5分钟的长脱水时间。进入脱水前若洗衣机桶盖是打开的,则进行鸣叫、显示告警,直至用户合上桶盖后,才继续进行脱水。脱水结束后,再经过30秒延迟后关闭排水阀。脱水时若遇暂停,则重启时需延时5秒后再进行电机动作,目的是用于同步机械动作的滞后。程序流程见脱水子程序流程图。 (5)脱水不平衡修正 进行脱水处理,电机要进行高速单向正转,若此时衣物偏向于一边,脱水会因为离心力作用,在很短时间内碰撞安全形状装置,使安全形状产生瞬时的关闭和断开,此时要进行脱水不平衡修正。进行脱水不平衡修正,洗衣机将停止脱水,并自动插入“进水,洗涤分钟,排水”动作。通过这一插入动作,衣服将调整到洗衣桶中心位置。在同一脱水过程中如果连续修正3次仍达不到脱水平衡,则进行报警,待用户人工打开洗衣机将衣物放置均匀再盖上桶盖,方可继续进行脱水(即安全开关打开,安全开关闭合动作)。在漂洗功能的第一次脱水动作时不进行脱水不平衡修正,在第二次脱水动作时则要进行脱水不平衡修正。 (6)LED的显示 89C51对可以分为静态和动态两种。静态显示的特点是各LED管能稳定地同时显示各自的字形;动态显示是指各LED轮流地一遍一遍显示各自字符,人们由于视觉器官的惰性,从而版的是各LED似乎在同时显示不同字形。 为了减少硬件开销,提高系统可靠性,并降低成本,我们在这里采用动态扫描的方法进行代码的显示。在这里由之P2口推动LED的a、b、c、d、e、f、g、SP,称为字形口,由P3.0、P3.1选择所显示的字位,称为字位口, 动态显示采用软件法把欲显示的代码符号转换为相应的字形码,故它通常需要在RAM区建立一个显示缓冲区。显示缓冲区内包含的存储单元个数常和系统中LED显示器的个数 12 相等。显示缓冲区的起始地址很重要,它决定了显示缓冲区在RAM中的位置。 显示缓冲区中的每个存储单元用于存放相应LED显示管欲显示字符的字形码地址偏移量,故CPU可以根据这个地址偏移量通过查字形码表的方法找出所需显示字符的字形码,以便送到字形口显示。(字形码表见下表) 在这里我选用了2位共阳LED数码显示器 LED数码显示器的字形(段)码表 显示字形 字形码(共阳极) 字形码(共阴极) 0 C0H 3FH 1 F9H 06H 2 A4H 5BH 3 B0H 4FH 4 99H 66H 5 92H 6DH 6 82H 7DH 7 F8H 07H 8 80H 7FH 9 90H 6FH A 88H 77H B 83H 7CH C C6H 39H D A1H 5EH E 86H 79H F 8EH 71H 熄灭 FFH 00H (7)其它动作 为了有更好的人机交互,进行洗衣时数码管要显示剩余时间(单位为分钟),并且以1秒的频率不停地闪烁。此时如果按下暂停按钮,则时间显示不闪烁。随着洗衣过程的进行,显示时间将不断减少直至洗衣程序完成后显示“0”。剩余时间的获得可以通过如下方法:根据用户所选的过程代码可以获得包含这一过程的所有动作(9个过程所包含的动作需要的时间见功能选择代码表),由于相应的动作有预设的时间(动作对应的代码和预设时间见表动作代码表),因此,根据本次过程余下的动作可以通过查表的方式获取剩余时间。 洗衣过程中的各种出错报警的显示代码见出错代码表,在显示的同时蜂鸣器将鸣叫6下用以提醒。洗衣过程结束后,蜂鸣器将鸣叫6下用以提醒用户可以取走衣服并关掉洗衣机的电源。 故障名称 显示值 不能排水 E1 不能进入脱水 E2 不能平衡修正 E3 不能进水 E4 实现一次洗衣过程的控制流程图以标准洗涤(代码03)为例,洗衣机是按以下动作进 13 行的:开始,进水,洗涤,排水,脱水,进水,洗涤,排水,脱水,进水,洗涤,排水,脱水,结束。在此过程中,三大功能中的洗涤功能是指:进水,洗涤动作;漂洗功能是指排水,脱水,进水,洗涤,排水,脱水,进水,洗涤(两次洗涤和两次时间均为2分钟的脱水)动作;脱水功能是指:排水,脱水动作。 14 第四章 洗衣机控制系统的软件系统 4.1 洗衣机控制系统软件的编程思路 汇编语言程序设计并不很难,但要编出质量高,可读性好且执行速度快的优秀程序并不容易,欲达此目的,除应娴熟掌握所依托的指令系统外,还应掌握程序设计的基本方法和技巧,熟悉汇编语言源程序的分类方法和特点。 洗衣机的一次洗衣过程控制过程比较简单,主要为顺序控 制,如先进水、洗涤(电机正转反转)、再排水脱水,难点在于过 程选择,如不同的衣物所用的洗涤、漂洗、电机正转反转时间不 同,如果为每个过程单独编一套指令,则指令系统变得很庞大, 效率低,为此,我们把脱水、洗涤、进水单独编为一个子程序, 由主程序根据过程选择,不断调用,由些减少源程序的长度,不 同的洗衣过程,三大动作的时间不同,这可以通过建立数据表格, 通过查表的方式获得每个洗衣过程所需时间。此外,还需编出显 示子程序,延时子程序供主程序不断调用。 4.2 主程序及子程序流程图(见下图) 15 洗衣机控制系统主程序流程图 开始 用户选择洗衣过程 是否洗涤 进水 洗涤 是否漂洗 置注水漂洗标志 排水2D,7秒 是否脱水 置最后脱水标志 间歇脱水 置注水漂 洗标志 中间长脱水 是否为最 后脱水 进水 最后长脱水 洗涤 结束鸣响 是否为注 水漂洗 结束 16 洗涤动作子程序流程图 开始 根据过程代码获取电机正转 -停止-反转-停止的时间周期 电机动作 进水处理 是 设定快速 洗时间和 是否进水 电机正转 停止反转 否 停止周期 清标志 否 是 是否暂停 重启否 暂停处理 否 是 时间到否, 否 是 是 快速洗标 志, 否 结束 17 脱水子程序流程图 开 始 是 安全开关 显示鸣叫 是否断开 报警 否 否 电机动 安全开作 关是否 延时5闭合 秒 安全开 是 关 是否暂 是 是否断安全开关断开停 开 暂停 是否 否 瞬间暂停处 否 断开 理 是否暂 是 停 是 不平衡修脱水不平衡 否 正,3次 修正 否 脱水时间 是 到否 不平衡修正 重置修正 报警 次数 延时30秒,关闭排水 是 阀 结 束 18 4.3全自动洗衣机控制系统汇编语言源程序 ORG 0000H LJMP MAIN ORG 0030H ;延迟10ms程序 ;使用R0, R1 DELAY10MS: MOV R0, #100D; DELAY10MS02: MOV R1, #23D DELAY10MS01: DJNZ R1, DELAY10MS01 DJNZ R0, DELAY10MS02 RET ;显示子程序 ;20H.0闪烁标志位:=0不闪烁,=1在1s内亮灭一次 ;20H.1程序开始标志:=1开始, =0选择 ;显示缓冲:50H ;经过的时间:53H,52H,51H=分钟,秒,20ms的次数 ;总时间:TOTALTIME=40H TOTALTIME EQU 40H DISPLAY: PUSH ACC PUSH PSW SETB RS0 JNB 20H.1, DISPLAY01 MOV A, 50H ;高位是否为零 CJNE A, #0AH, DISPLAY05 DISPLAY05: JNC DISPLAY06 XRL A, #0F0H ;高位为零不显示 MOV 50H, A DISPLAY06: JNB 20H.0, DISPLAY01 ;是否需闪烁 MOV A, 51H CJNE A, #25D, DISPLAY02; DISPLAY02: JC DISPLAY01 MOV 50H, #0FFH ;暗显示(不亮) DISPLAY01: MOV A, 50H ;显示低位 ANL A, #0FH; MOV DPTR, #DISPLAYTAB; MOVC A, @A+DPTR; MOV P2, A; SETB P0.6 CLR P0.7 LCALL DELAY10MS MOV A, 50H ;显示高位 SWAP A ANL A, #0FH; MOV DPTR, #DISPLAYTAB; MOVC A, @A+DPTR; MOV P2, A; CLR P0.6 SETB P0.7 LCALL DELAY10MS INC 51H ;累计时间 MOV A, #50D ; XRL A, 51H ; JNZ DISPLAY03 ;50次的20ms未到 MOV 51H, A ; INC 52H ;1s MOV A, #60D; XRL A, 52H ; JNZ DISPLAY03 19 MOV 52H, A ; INC 53H ;1min DISPLAY03: JNB 20H.0, DISPLAY04; MOV A, TOTALTIME ;计算剩余时间 CLR C SUBB A, 53H ; MOV B, #10D ;16进制转换到10进制 DIV AB SWAP A XRL A, B ; MOV 50H, A ; DISPLAY04: POP PSW POP ACC RET DISPLAYTAB: ;共阳数码管反向编码 DB 03H, 9FH, 25H, 0DH, 99H ;01234 DB 49H, 41H, 1FH, 01H, 09H ;56789 DB 11H, 0C1H, 63H, 85H, 61H ;ABCDE DB 0FFH ;暗 ;重算时间 ;入口数据:,,总时间(分) CALUTIME: MOV TOTALTIME, A CLR A MOV 52H, A ;秒 MOV 53H, A ;经过的分钟 RET ;鸣叫一下, 时长120ms PLAY: SETB P1.6 MOV R0, #12D; PLAY1: LCALL DISPLAY DJNZ R0, PLAY1 CLR P1.6 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;鸣叫六下, 时长240ms*12 ALARM: SETB P1.6 MOV R1, #11D; ALARM2: MOV R0, #12D; ALARM3: LCALL DISPLAY DJNZ R0, ALARM3 CPL P1.6 DJNZ R1, ALARM2 RET ;;;;;;;;;;;;;;;;;;;;; ;;;;;洗涤用子程序 ;;;;;;;;;;;;;;;;;;;;; ;洗涤时暂停按键 XDPAUSE: JB P0.0, XDPS01 LCALL DISPLAY JB P0.0, XDPS01 PUSH 52H PUSH 53H CLR 20H.0 ;不闪烁 MOV A, P1 PUSH ACC MOV P1, #00H LCALL PLAY XDPS02: LCALL DISPLAY 20 JNB P0.0, XDPS02 ;等待按键释放 XDPS03: LCALL DISPLAY JB P0.0, XDPS03 LCALL DISPLAY JB P0.0, XDPS03 LCALL PLAY XDPS04: LCALL DISPLAY JNB P0.0, XDPS04 ;等待按键释放 POP ACC MOV P1, ACC SETB 20H.0 POP 53H POP 52H XDPS01: RET ;洗涤时延迟0.32s DELAY320MS: MOV R2, #14D; SJMP XDELAY01 ;洗涤时延迟0.56s XDELAY560MS: MOV R2, #28D SJMP XDELAY01 ;洗涤时延迟1s XDELAY1S: MOV R2, #50D SJMP XDELAY01 ;洗涤时延迟1.6s DELAY1600MS: MOV R2, #80D XDELAY01: LCALL DISPLAY LCALL XDPAUSE ;暂停按键 LCALL IFINWATER ;水位开关 DJNZ R2, XDELAY01 RET ;洗涤前进水子程序 INWATER: JNB P0.2, PI1; SETB P1.2 MOV A, 53H; ADD A, #20D; MOV 59H, A; PI3: MOV A, 53H; XRL A, 59H; JNZ PI2 LCALL ERRORE4 SJMP INWATER PI2: JNB P0.2, PI4; LCALL DISPLAY LCALL XDPAUSE SJMP PI3 PI4: CLR P1.2 PI1: RET ;洗涤时是否再进水 IFINWATER: JNB P0.2, IF1; MOV A, P1; PUSH ACC MOV P1, #00H; LCALL INWATER ;进水 POP ACC 21 MOV P1, A; IF1: RET ;不能进水报警 ERRORE4: PUSH 52H PUSH 53H CLR 20H.0 MOV A, P1; PUSH ACC MOV P1, #00H; MOV 50H, #0E4H LCALL ALARM E4PK2: LCALL DISPLAY JNB P0.1, E4PK2; LCALL DISPLAY JNB P0.1, E4PK2 E4PK3: LCALL DISPLAY JB P0.1, E4PK3 LCALL DISPLAY JB P0.1, E4PK3 SETB 20H.0 POP ACC MOV P1, ACC; POP 53H POP 52H RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;排水时延迟1s DELAY1000MS: MOV R2, #50D; DLY51: LCALL DISPLAY LCALL XDPAUSE ;暂停按键 DJNZ R2, DLY51; RET ;排水子程序 OUTWATER: CLR A SETB P1.3 JB P0.2, OUTW1 MOV R7, #60D OUTW2: LCALL DELAY1000MS JB P0.2, OUTW4 DJNZ R7, OUTW2 LCALL ERRORE1 SJMP OUTWATER OUTW4: CLR C MOV A, #60D SUBB A, R7 OUTW1: ADD A, #60D MOV R7, A OUTW3: LCALL DELAY1000MS DJNZ R7, OUTW3 RET ;不能排水报警 ERRORE1: PUSH 52H PUSH 53H CLR 20H.0 MOV A, P1; 22 PUSH ACC MOV P1, #00H; MOV 50H, #0E1H LCALL ALARM E1PK2: LCALL DISPLAY JNB P0.1, E1PK2; LCALL DISPLAY JNB P0.1, E1PK2 E1PK3: LCALL DISPLAY JB P0.1, E1PK3 LCALL DISPLAY JB P0.1, E1PK3 SETB 20H.0 POP ACC MOV P1, ACC; POP 53H POP 52H RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;脱水时暂停按键 TPKEY: JB P0.0, TPK1; LCALL DISPLAY JB P0.0, TPK1; PUSH 52H PUSH 53H CLR 20H.0 LCALL PLAY MOV A, P1; PUSH ACC JNB ACC.0, TPK6 CLR P1.0 MOV R0, #250 ;延迟,秒 TPK5: LCALL DISPLAY DJNZ R0, TPK5 TPK6: MOV P1, #00H; TPK2: LCALL DISPLAY JNB P0.0, TPK2; TPK3: LCALL DISPLAY JB P0.0, TPK3 LCALL DISPLAY JB P0.0, TPK3 LCALL PLAY SETB 20H.0 SETB P1.3 MOV R0, #250 ;延迟,秒 TPK4: LCALL DISPLAY DJNZ R0, TPK4 POP ACC MOV P1, ACC; POP 53H POP 52H TPK1: RET ;脱水时开盖, 脱水时安全报警 IFOPEN: ERRORE2: JNB P0.1, TTPK1; LCALL DISPLAY JNB P0.1, TTPK1; PUSH 52H 23 PUSH 53H CLR 20H.0 MOV A, P1; PUSH ACC ; LCALL ALARM JNB ACC.0, TTPK6 CLR P1.0 MOV R0, #250 ;延迟,秒 TTPK5: LCALL DISPLAY DJNZ R0, TTPK5 TTPK6: MOV P1, #00H; MOV 50H, #0E2H TTPK2: LCALL DISPLAY JB P0.1, TTPK2; TTPK3: LCALL DISPLAY JB P0.1, TTPK2 LCALL DISPLAY ; JB P0.1, TTPK3 SETB 20H.0 SETB P1.3 MOV R0, #250 ;延迟,秒 TTPK4: LCALL DISPLAY DJNZ R0, TPK4 POP ACC MOV P1, ACC; POP 53H POP 52H TTPK1: RET ;脱水时延迟4s DELAY4S: MOV R2, #200D; DLY431: LCALL DISPLAY LCALL TPKEY ;暂停按键 LCALL IFOPEN ;安全开关 DJNZ R2, DLY431; RET ;脱水时延迟3s DELAY3S: MOV R2, #150D; DLY321: LCALL DISPLAY LCALL TPKEY ;暂停按键 LCALL IFOPEN ;安全开关 DJNZ R2, DLY321; RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;主程序开始 ;选择程序:30H, 程序开始20H.1=1 MAIN: MOV SP, #60H; CLR 20H.0 CLR 20H.1 MOV A, #00H; MOV P1, A; MOV 50H, A; MOV 51H, A; MOV 52H, A; MOV 53H, A; 24 MOV 30H, A; LP1: ;有无按键 LCALL DISPLAY JB P0.0, LP1; LCALL DISPLAY ;按键去抖动 JB P0.0, LP1; LP3: INC 30H MOV A, #0AH ;共有九种可选择 XRL A, 30H; JNZ LP2 MOV 30H, #01H; LP2: LCALL PLAY MOV 50H, 30H; LP4: LCALL DISPLAY JNB P0.0, LP4 ;等待按键释放 CLR A MOV 52H, A; LP5: LCALL DISPLAY MOV A, 52H; XRL A, #03H ;3秒延迟到否 JZ START ;开始洗衣 JB P0.0, LP5; SJMP LP3 ;重选洗衣程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; START: LCALL ALARM SETB 20H.1 CLR A MOV 52H, A; MOV A, 30H; DEC A MOV B, #03H; MUL AB MOV DPTR, #PROCTAB; JMP @A+DPTR PROCTAB: LJMP PROC1 ;洗衣程序, LJMP PROC2 ;洗衣程序, LJMP PROC3 ;洗衣程序, LJMP PROC4 ;洗衣程序, LJMP PROC5 ;洗衣程序, LJMP PROC6 ;洗衣程序, LJMP PROC7 ;洗衣程序, LJMP PROC8 ;洗衣程序, LJMP PROC9 ;洗衣程序, PROC1: MOV A, #59D LCALL CALUTIME SETB 20H.0 LCALL INWATER ;进水 MOV A, #57D LCALL CALUTIME ;洗涤3分钟 MOV R7, #42D; XIDI0: SETB P1.0 LCALL DELAY1600MS CLR P1.0 LCALL XDELAY560MS SETB P1.1 LCALL DELAY1600MS CLR P1.1 LCALL XDELAY560MS DJNZ R7, XIDI0 25 MOV R6, #01D ;共4次*3分钟=12分钟???????????????????????????????4 XIDI02: MOV R7, #30D ;停2分钟????????????????????????????120 XIDI01: LCALL XDELAY1S DJNZ R7, XIDI01 MOV R7, #14D ;洗涤1分钟 XIDI03: SETB P1.0 LCALL DELAY1600MS CLR P1.0 LCALL XDELAY560MS SETB P1.1 LCALL DELAY1600MS CLR P1.1 LCALL XDELAY560MS DJNZ R7, XIDI03 DJNZ R6, XIDI02 MOV R7, #30D ;停2分钟??????????????????????????????????????????120 XIDI04: LCALL XDELAY1S DJNZ R7, XIDI04 LJMP PROC3 ;以下同过程, PROC2: ;(待完成) LJMP over ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PROC3: MOV A, #42D LCALL CALUTIME SETB 20H.0 LCALL INWATER ;进水 MOV A, #40D LCALL CALUTIME ;洗涤15分钟 MOV R7, #8D;?????????????????????????????????????????208 XIDI: SETB P1.0 LCALL DELAY1600MS CLR P1.0 LCALL XDELAY560MS SETB P1.1 LCALL DELAY1600MS CLR P1.1 LCALL XDELAY560MS DJNZ R7, XIDI ;快速洗涤15秒 MOV R7, #11D QXIDI: SETB P1.0 LCALL DELAY320MS CLR P1.0 LCALL DELAY320MS SETB P1.1 LCALL DELAY320MS CLR P1.1 LCALL DELAY320MS DJNZ R7, QXIDI MOV A, #25D LCALL CALUTIME ;排水 LCALL OUTWATER MOV A, #23D LCALL CALUTIME ;第一次脱水 MOV R7, #04D ;间隙脱水30秒 TS1: SETB P1.0 LCALL DELAY4S 26 CLR P1.0 LCALL DELAY3S DJNZ R7, TS1 SETB P1.0 ;长脱水,,秒 MOV R7, #10D ;??????????????????????????????????????????????30 TS2: LCALL DELAY4S DJNZ R7, TS2 CLR P1.0 MOV R7, #250 ;延迟,秒 TS25: LCALL DISPLAY DJNZ R7, TS25 CLR P1.3 MOV A, #20D LCALL CALUTIME ;第一次漂洗 LCALL INWATER MOV A, #18D LCALL CALUTIME ;洗涤2分钟 MOV R7, #08D ;???????????????????????????????????????????????28 XIDI1: SETB P1.0 LCALL DELAY1600MS CLR P1.0 LCALL XDELAY560MS SETB P1.1 LCALL DELAY1600MS CLR P1.1 LCALL XDELAY560MS DJNZ R7, XIDI1 ;快速洗涤15秒 MOV R7, #11D QXIDI1: SETB P1.0 LCALL DELAY320MS CLR P1.0 LCALL DELAY320MS SETB P1.1 LCALL DELAY320MS CLR P1.1 LCALL DELAY320MS DJNZ R7, QXIDI1 MOV A, #16D LCALL CALUTIME ;排水 LCALL OUTWATER MOV A, #14D LCALL CALUTIME ;第二次脱水 MOV R7, #04D TS21: SETB P1.0 LCALL DELAY4S CLR P1.0 LCALL DELAY3S DJNZ R7, TS21 SETB P1.0 MOV R7, #10D ;?????????????????????????????????30 TS22: LCALL DELAY4S DJNZ R7, TS22 CLR P1.0 MOV R7, #250 ;延迟,秒 TS26: LCALL DISPLAY DJNZ R7, TS26 CLR P1.3 27 MOV A, #12D LCALL CALUTIME ;第二次漂洗 LCALL INWATER MOV A, #10D LCALL CALUTIME ;洗涤2分钟 MOV R7, #08D ;?????????????????????28 XIDI2: SETB P1.0 LCALL DELAY1600MS CLR P1.0 LCALL XDELAY560MS SETB P1.1 LCALL DELAY1600MS CLR P1.1 LCALL XDELAY560MS DJNZ R7, XIDI2 ;快速洗涤15秒 MOV R7, #11D QXIDI2: SETB P1.0 LCALL DELAY320MS CLR P1.0 LCALL DELAY320MS SETB P1.1 LCALL DELAY320MS CLR P1.1 LCALL DELAY320MS DJNZ R7, QXIDI2 PROC8: SETB 20H.0 ;过程,需要闪烁 MOV A, #08D LCALL CALUTIME ;排水 LCALL OUTWATER MOV A, #06D LCALL CALUTIME ;最后脱水 MOV R7, #04D ;间隙脱水30秒 TS31: SETB P1.0 LCALL DELAY4S CLR P1.0 LCALL DELAY3S DJNZ R7, TS31 SETB P1.0 ;长脱水,分钟?????????????????????????????75 MOV R7, #05D TS32: LCALL DELAY4S DJNZ R7, TS32 CLR P1.0 MOV R6, #06 TS28: MOV R7, #250 ;延迟,秒*6=30秒 TS29: LCALL DISPLAY DJNZ R7, TS29 DJNZ R6, TS28 CLR P1.3 LJMP OVER ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OVER: LCALL ALARM SETB P0.6 CLR P0.7 MOV P2, #03H SJMP $ 28 END 参考文献: [1] 胡汉才 单片机原理与接口技术 清华大学出版社 [2] 李全利 单片机原理及应用技术 高等教育出版社 [3] 万韬阳 孙璐 C程序设计 托普教育集团 [4] 丁辉 陈书谦 汇编语言程序设计 电子工业出版社 [5] 王廷才 电子线路CAD PROTEL99使用指南 机械工业出版社 [6] 何立民 单片机应用系统设计 北京航空航天大学出版社 29 附录 ATMEL89C51技术手册 a) a) 结构框图: 图表 16:AT89C51结构框图 30 b) b) 引脚图和实物图 图表 17:ATMEL89C51引脚图 图表 18:ATMEL89C51实物图 c) c) 引脚描述 1 1 主电源引脚 1.1 1.1 Vcc 电源端 1.2 1.2 GND 接地端 2 2 外接晶振引脚 2.1 2.1 XTAL1 接外部晶振的一个引脚。.在单片机内部,它是构成片内振荡器的反向输入端。当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。 2.2 2.2 XTAL2 接外部晶振的另一个引脚。在单片机内部,它是上述反向放大器的输出端。 3 3 控制或与其它电源复用引脚。RST,ALE,PSEN(低电平有效)和EA 3.1 3.1 RST 复位输入端。当振荡器运行时,在该引脚上出现两个机器周期以上的高电平将使单片机复位。 3.2 3.2 ALE 当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡频率的1/6)周期性的出现正脉冲信号。因此,它可用作外部输出的时钟,或用 31 于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。 3.3 3.3 PSEN(低电平有效) 程序存储允许输出是外部程序存储器的读选通信号。当AT89C51由外部程序存储器读指令或常数时,每个机器周期PSEN有效(即输出两个脉冲)。但此期间,每当访问外部数据存储器时,这两次PSEN信号将不出现。 3.4 3.4 EA 外部访问允许端。要使CPU只访问外部程序存储器(地址为:0000H-FFFFH),则EA必须保持低电平(接到GND),然而要注意的是,如果保密位LB1被编程,复位时在内部会锁存EA端的状态。 当EA保持高电平时,(接VCC)时,CPU将执行内部程序存储器的程序。 在Flash储存器编程期间,该引脚也用于施加12V的编程电源Vpp(如果选 用12V编程的话)。 4 4 各双向功能口: 4.1 4.1 P0口 P0口是一组8位漏极开路型双向I/O口,即地址数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端 ”作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口写“1 口线从那时起转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电 2[2]阻。在Flash编程时,P0口接收指令字节,而在程序检验时,输出指令字节。 4.2 4.2 P1口 P1口是一个内部上拉电阻的8位双向I/O口。P1口的输出缓冲级可以驱动(吸收或输入电流)4个TTL逻辑门电路。对端口写“1”,通过内部上拉电阻把端口拉到高电平。此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flash编程和程序校验期间,P1接收低8位地址。 4.3 4.3 P2口 P2口是一个内部上拉电阻的8位双向I/O口。P2口的输出缓冲级可以驱动(吸收或输入电流)4个TTL逻辑门电路。对端口写“1”,通过内部上拉电阻把端口拉到高电平。此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的数据存储器时,P2口线上的内容,在整个访问期间不改变。在Flash编程 2[2] 校验时要求外接上拉电阻。 32 的校验时,P2口也接收高位地址和其它控制信号。 4.4 4.4 P3口 P3口是一个内部上拉电阻的8位双向I/O口。P3口的输出缓冲级可以驱动(吸收或输入电流)4个TTL逻辑门电路。对端口写“1”,通过内部上拉电阻把端口拉到高电平。此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。P3口还接收一些用于Flash闪速存储器和程序校验的控制信号。此外更重要的用途是它的第二功能: 图表 19:P3口第二功能 33 MCS-51系列单片机指令系统表 数据传送类指令 功 字节振荡周序 助记符 能 数 期 寄存器内容送入累加器 1 MOV A,Rn 1 12 直接地址单元中的数据送入累加器 2 MOV A,direct 2 12 间接RAM中的数据送入累加器 3 MOV A,@Ri 1 12 立即数送入累加器 4 MOV A,#tata 2 12 累加器内容送入寄存器 5 MOV Rn,A 1 12 直接地址单元中的数据送入寄存器 6 MOV Rn,direct 2 24 立即数送入寄存器 7 MOV Rn,#data 2 12 累加器内容送入直接地址单元 8 MOV direct,A 2 12 寄存器内容送入直接地址单元 9 MOV direct,Rn 2 24 直接地址单元中的数据送入另一个直接地址单元 10 MOV direct,direct 3 24 间接RAM中的数据送入直接地址单元 11 MOV direct,@Ri 2 24 立即数送入直接地址单元 12 MOV direct,#data 3 24 累加器内容送间接RAM单元 13 MOV @Ri,A 1 12 直接地址单元数据送入间接RAM单元 14 MOV @Ri,direct 2 24 立即数送入间接RAM单元 15 MOV @RI,#data 2 12 16位立即数送入地址寄存器 16 MOV DRTR,#dat16 3 24 以DPTR为基地址变址寻址单元中的数据送入累加17 MOVC A,@A+DPTR 1 24 器 以PC为基地址变址寻址单元中的数据送入累加器 18 MOVC A,@A+PC 1 24 外部RAM(8位地址)送入累加器 19 MOVX A,@Ri 1 24 外部RAM(16位地址)送入累加器 20 MOVX A,@DPTR 1 24 累计器送外部RAM(8位地址) 21 MOVX @Ri,A 1 24 累计器送外部RAM(16位地址) 22 MOVX @DPTR,A 1 24 直接地址单元中的数据压入堆栈 23 PUSH direct 2 24 弹栈送直接地址单元 24 POP direct 2 24 寄存器与累加器交换 25 XCH A,Rn 1 12 直接地址单元与累加器交换 26 XCH A,direct 2 12 间接RAM与累加器交换 27 XCH A,@Ri 1 12 间接RAM的低半字节与累加器交换 28 XCHD A,@Ri 1 12 布尔变量操作类指令 序 助记符 功 字节振荡周 34 能 数 期 清进位位 1 CLR C 1 12 清直接地址位 2 CLR bit 2 12 置进位位 3 SETB C 1 12 置直接地址位 4 SETB bit 2 12 进位位求反 5 CPL C 1 12 置直接地址位求反 6 CPL bit 2 12 进位位和直接地址位相“与” 7 ANL C,bit 2 24 进位位和直接地址位的反码相“与” 8 ANL C,bit 2 24 进位位和直接地址位相“或” 9 ORL C,bit 2 24 进位位和直接地址位的反码相“或” 10 ORL C,bit 2 24 直接地址位送入进位位 11 MOV C,bit 2 12 进位位送入直接地址位 12 MOV bit,C 2 24 进位位为1则转移 13 JC rel 2 24 进位位为0则转移 14 JNC rel 2 24 直接地址位为1则转移 15 JB bit,rel 3 24 直接地址位为0则转移 16 JNB bit,rel 3 24 直接地址位为1则转移,该位清零 17 JBC bit,rel 3 24 逻辑操作数指令 功 字节振荡周序 助记符 能 数 期 累加器与寄存器相“与” 1 ANL A,Rn 1 12 累加器与直接地址单元相“与” 2 ANL A,direct 2 12 累加器与间接RAM单元相“与” 3 ANL A,@Ri 1 12 累加器与立即数相“与” 4 ANL A,#data 2 12 直接地址单元与累加器相“与” 5 ANL direct,A 2 12 直接地址单元与立即数相“与” 6 ANL direct,#data 3 24 累加器与寄存器相“或” 7 ORL A,Rn 1 12 累加器与直接地址单元相“或” 8 ORL A,direct 2 12 累加器与间接RAM单元单元相“或” 9 ORL A,@Ri 1 12 累加器与立即数相“或” 10 ORL A,#data 2 12 直接地址单元与累加器相“或” 11 ORL direct,A 2 12 直接地址单元与立即数相“或” 12 ORL direct,#data 3 24 累加器与寄存器相“异或” 13 XRL A,Rn 1 12 累加器与直接地址单元相“异或” 14 XRL A,direct 2 12 35 累加器与间接RAM单元单元相“异或” 15 XRL A,@Ri 1 12 累加器与立即数相“异或” 16 XRL A,#data 2 12 直接地址单元与累加器相“异或” 17 XRL direct,A 2 12 直接地址单元与立即数相“异或” 18 XRL direct,#data 3 24 累加器清“0” 19 CLR A 1 12 累加器求反 20 CPL A 1 12 累加器循环左移 21 RL A 1 12 累加器带进位位循环左移 22 RLC A 1 12 累加器循环右移 23 RR A 1 12 累加器带进位位循环右移 24 RRC A 1 12 累加器半字节交换 25 SWAP A 1 12 控制转移类指令 功 字节振荡周序 助记符 能 数 期 绝对(短)调用子程序 1 ACALL addr11 2 24 长调用子程序 2 LCALL addr16 3 24 子程序返回 3 RET 1 24 中数返回 4 RETI 1 24 绝对(短)转移 5 AJMP addr11 2 24 长转移 6 LJMP addr16 3 24 相对转移 7 SJMP rel 2 24 相对于DPTR的间接转移 8 JMP @A+DPTR 1 24 累加器为零转移 9 JZ rel 2 24 累加器非零转移 10 CJNE rel 2 24 累加器与直接地址单元比较,不相等则转移 11 CJNE A,direct,rel 3 24 累加器与立即数比较,不相等则转移 12 CJNE A,#data,rel 3 24 寄存器与立即数比较,不相等则转移 13 CJNE Rn,#data,rel 3 24 间接RAM单元与立即数比较,不相等则转移 14 CJNE @Ri,#data,rel 3 24 寄存器减1,非零转移 15 DJNZ Rn,rel 3 24 直接地址单元减1,非零转移 16 DJNZ direct,erl 3 24 空操作 17 NOP 1 12 算术操作类指令 寄存器内容加到累加器 1 ADD A,Rn 1 12 直接地址单元的内容加到累加器 2 ADD A,direct 2 12 36 间接ROM的内容加到累加器 3 ADD A,@Ri 1 12 立即数加到累加器 4 ADD A,#data 2 12 寄存器内容带进位加到累加器 5 ADDC A,Rn 1 12 直接地址单元的内容带进位加到累加器 6 ADDC A,direct 2 12 间接ROM的内容带进位加到累加器 7 ADDC A,@Ri 1 12 立即数带进位加到累加器 8 ADDC A,#data 2 12 累加器带借位减寄存器内容 9 SUBB A,Rn 1 12 累加器带借位减直接地址单元的内容 10 SUBB A,direct 2 12 累加器带借位减间接RAM中的内容 11 SUBB A,@Ri 1 12 累加器带借位减立即数 12 SUBB A,#data 2 12 累加器加1 13 INC A 1 12 寄存器加1 14 INC Rn 1 12 直接地址单元加1 15 INC direct 2 12 间接RAM单元加1 16 INC @Ri 1 12 累加器减1 17 DEC A 1 12 寄存器减1 18 DEC Rn 1 12 直接地址单元减1 19 DEC direct 2 12 间接RAM单元减1 20 DEC @Rj 1 12 地址寄存器DPTR加1 21 INC DPTR 1 24 A乘以B 22 MUL AB 1 48 A除以B 23 DIV AB 1 48 累加器十进制调整 24 DA A
本文档为【毕业设计(论文)_基于单片机的全自动洗衣机控制系统__126856228】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_686908
暂无简介~
格式:doc
大小:159KB
软件:Word
页数:0
分类:生活休闲
上传时间:2018-01-04
浏览量:24