利用单片机:比较2个有符号数的大小

发布者:asd123yui最新更新时间:2017-12-21 来源: eefocus关键字:单片机  有符号数 手机看文章 扫描二维码
随时随地手机看文章

题目:设内部RAM从30H,31H单元中存放有两个有符号数,试比较它们的大小,将较小的数存放在30H单元,较大的数存放在31H单元中。

理解:对于两个有符号数X,Y,不外乎有四种情况,即(正,负),(负,正),(正,正),(负,负)。所有程序里就这四种情况进行讨论就行了。


/*******************************************************************
*MCU:51 series
*Compiler:Keil UV2
*Code by:晴天
*******************************************************************/

ORG 0000H
LJMP MAIN
ORG 0040H
MAIN: MOV 30H,#95H
      MOV 31H,#96H
      MOV A,30H
      CJNE A,31H,CMPT
  SJMP $ ;两个数相同,不用交换
CMPT: JB ACC.7,CMPT1;(30H)<0,跳到CMPT1
      MOV A,31H    ; (30H)>0,判断(31H)正负
  JNB ACC.7,CMPT2 ;(30H)>0,(31H)>0,跳到CMPT2
  MOV 31H,30H    ;(30H)>0,(31H)<0,(30H)>(31H),则交换
  MOV 30H,A
  SJMP $
   
CMPT1: MOV A,31H
      JB  ACC.7,CMPT1_1 ;(31H)<0,则跳到CMPT1_1
    SJMP $        ;(30H)<0,(31H)>0,则(30H)<(31H),不用交换
CMPT1_1: CPL A          ;(30H)<0,(31H)<0,则要把他们数值位取反加1,得到数值位的真实值
        ADD A,#1
  MOV R1,A
  MOV A,30H
  CPL A
  ADD A,#1
  SUBB A,R1
  JC EXCHANGE1 ;C=1,即30H中数值位小于31H的数值位,所以(30H)>(31H),故交换(其实两个负数比较大小,

                              可以当做无符号数来直接相减,然后判断C进行相应处理,有空再改改)
  SJMP $      ;C=0,即30H中数值位大于31H的数值位,所以(30H)<(31H),不用交换
EXCHANGE1: MOV A,30H
          MOV 30H,31H
    MOV 31H,A
    SJMP $
     
CMPT2: SUBB A,30H      ;(31H)-(30H)
      JC EXCHANGE2    ;C=1则跳,即(30H)>(31H)时跳
    SJMP $      ;C=0时,即(30H)<(31H)时不用交换
EXCHANGE2:MOV A,30H
          MOV 30H,31H
    MOV 31H,A
    SJMP $ 
    END

PS:其实51单片机里的指令处理的都是无符号数的,指令对所有的数据都看成是无符号数,所以不能通过指令来直接比较两个有符号数的大小,而要自己编程实现。其实这个问题好像很少有书本提到的,晕,还是自己理解错了?现在学的单片机那本教材更是有很多错误的,还是自己学校的老师编的教材。其实我这个程序已经写得很详细的了,写的这么详细原因是可以帮助读者理解下有符号数和无符号数的区别。


关键字:单片机  有符号数 引用地址:利用单片机:比较2个有符号数的大小

上一篇:51单片机定时/计数器C语言应用实例
下一篇:用51单片机设计的自动供水系统

推荐阅读最新更新时间:2024-03-16 15:50

单片机AVR微控制器蓄电池充放电控制器的设计
本设计采用AVR单片机Mega16L作为核心,可同时控制两块539CH-1型蓄电池的充、放电过程。Mega16L通过串行总线接收上位机的命令,然后通过SPI总线将数据发送给TLV5638。单片机通过多路模拟开关CD4053将TLV5638的两路D/A输出送入信号调整电路,从而完成对充放电电流的控制。放电过程中,Mega16L通过控制8D锁存器74LS573和复合管阵列ULN2081控制放电电阻接入。系统框图如图1所示。 图1 系统原理框图硬件设计   硬件系统包括串行通信电路、充电和放电控制电路、继电器驱动电路等模块。 通信电路   单片机通过串口与上位机通信。Mega16L端口为TTL电平,而上位机串口为RS232C标准接口
[单片机]
<font color='red'>单片机</font>AVR<font color='red'>微控制器</font>蓄电池充放电控制器的设计
菜鸟学PIC单片机(一)
菜鸟学P IC 单片机 (一):TS1620字符型液晶模块驱动程序编写苦与乐 小弟学习PIC16F87X系列 单片机 已持续半个月了,遇到的困难还是比较多的,幸好单位的图书馆里还有一些相关的书籍,加之购买了第三方的ICD,因此学习起来还是比较充实的。 虽说如此,但在单位里找不到志同道合者一起来琢磨她,不过这里却有许多热心的站友。 今后,小弟打算将自己的一些学习心得和疑问写出来,与论坛里和我一样的初学者一起进步,并殷切希望能得到前辈的指点, 小弟写的第一个程序是控制三位八段 数码管 的显示,还没来得及总结,今天下午调试和总结了一下 LCD 的驱动程序,遇到了很多困难,但也有点小小的收获,拿出来晾晾,大家尽管扔砖,小
[单片机]
一种简单串行鼠标控制的单片机实现
摘要:通过对鼠标底层通信原理与协议的深入分析,探讨以AT89C2051单片机构成串行鼠标的实现方法;介绍鼠标编码器数据取软件的设计原理及方法,给出串行鼠标的软件设计。 关键词:鼠标 AT89C2051 软件设计 鼠标是一种快速定位器,通过移动鼠标可以快速定位屏幕上的对象,是计算机图形界面交互的必用外部设备。通常,鼠标通过微机中的串口或PS/2鼠标插口与主机连接。当在平面上移动鼠标时,通过机械或光学的方法把鼠标滚轮移动的距离和方向转换成脉冲信号传送给计算机,计算机鼠标驱动程序将脉冲个数转换成鼠标的水平方向和垂直方向的位移量,从而控制显示屏上光标箭头随鼠标的移动而移动。根据此原理,我们可利用鼠标的上位机驱动程序来设计测控系统中的
[应用]
基于PIC单片机的LED点阵手写屏设计方案
  1 概述   本方案采用PIC 16F877A单片机为主要核心控制元件,设计了一个32×32 LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。光笔反馈信号经放大器LM324比较后,送给单片机处理。32×32点阵显示模块、驱动模块由74HC595外设驱动阵列和8位串行输入/输出移位寄存器ULN2803A组成。光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。   2 方案总体构成   本方案中的系统设计包括三大部分:PIC 16F877A单片机主控器、光笔控制器、点阵显示屏。
[单片机]
基于PIC<font color='red'>单片机</font>的LED点阵手写屏设计方案
基于单片机的智能照明控制系统的设计
自然资源是自然界中能被人类利用的各种物质和能量,是人类进行生产活动和生活的基础,是人类生存和发展的物质保证和物质基础,是人类社会可持续发展的基石。伴随着技术的不断发展和更新,人类对自然资源的开发和利用程度越来越大,但是自然资源的数量是有限的,可再生资源的再生能力远远赶不上利用速度,当前这一历史时期中,自然资源的枯竭速度已经创造了历史。然而在实际社会中,人们似乎还没有意识到能源将给社会、地球带来的危机,能源浪费的现象十分普遍,大量能耗白白浪费掉,不仅浪费了资源,还污染了环境。 能源浪费的现象在照明上表现得十分明显,许多需要长时间照明的设备和场所如学校的教室、图书馆、阅览室、工厂、办公楼、地铁等公共场所照明系统的电耗惊人。这些耗电量较
[电源管理]
基于<font color='red'>单片机</font>的智能照明控制系统的设计
单片机 MSP430 G2553 HC595 数码管 SPI 通信
模拟SPI接法是任意的: //HC595 //VCC-VCC GND-GND RCK-P21 SCK-P22 DIO-P20 硬件SPI,调节成3线SPI模式 8bit就可以通信: P14 P12 分别是SPI时钟线和主机输出线。 //HC595 //VCC-VCC GND-GND RCK-P21锁存信号,传输一次完成后给595锁存信号 SCK-P14 SPI时钟线2553拉起 DIO-P12 SPI输出给595
[单片机]
<font color='red'>单片机</font> MSP430 G2553 HC595 数码管 SPI 通信
基于单片机无线病房呼叫器设计
  临床求助呼叫是传送临床信息的重要手段,病房呼叫器是病人请求值班医生或护士进行诊断或护理的紧急呼叫工具,可将病人的请求快速传送给值班医生或护士,并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病室护理水平的必备设备之一。呼叫系统的优劣直接关系到病员的安危,历来受到各大医院的普遍重视。   它要求及时、准确可靠、简便可行、利于推广。我国传统的病房呼叫系统采用的多是有线传输,存在着安装布线复杂,检查维修困难,抗干扰能力差,病房扩建不易及费用高,不雅观的缺陷。为克服以上的不足,本研究介绍一种无线的病房呼叫器,其使用专用的射频模块,并使用单片机控制。这样不但解决了复杂布线等问题,更能提高医疗服务水平,适应现代社会需求。
[单片机]
基于<font color='red'>单片机</font>无线病房呼叫器设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved