历史上的今天
返回首页

历史上的今天

今天是:2025年08月12日(星期二)

正在发生

2018年08月12日 | PIC单片机实现双字节无符号数加减法

2018-08-12 来源:eefocus

一、编写子程序 Add_16,实现双字节无符号数加法。要求在地址0x70~0x73定义变量ACCALO、ACCAHI、ACCBLO、ACCBHI。


ACCALO ;存放加数或减数低8位

ACCAHI ;存放加数或减数高8位

ACCBLO ;存放被加数或被减数低8位

ACCBHI 存放被加数或被减数高8位

list       p=16f877A   ; 标明所用的处理器类型

 #include    ; 调用头文件 

 

;***** 变量声明**************************************

 

ACCALO   EQU   0x70  ;存放加数低8位 

ACCAHI   EQU   0x71  ;存放加数高8位 

ACCBLO   EQU   0x72  ;存放被加数低8位 

ACCBHI   EQU   0x73  ;存放被加数高8位 

 

;----------------------------------------------------

    org         0x0000           ; 复位入口地址

;----------------------------------------------------

Main

       MOVLW   0X4B                

       MOVWF   ACCBLO              ;(ACCBLO)=0x4B

       MOVLW   0X4C

       MOVWF   ACCBHI              ;(ACCBHI)=0x4C

       MOVLW   0XD2                

       MOVWF   ACCALO              ;(ACCALO)=0xD2

       MOVLW   0X40

       MOVWF   ACCAHI              ;(ACCAHI)=0x40

       CALL    Add_16              ;调用子程序Add_16求和,结果应为0x8D1D 

       NOP

       GOTO $                      ;停机 

;--------------双字节无符号数加法子程序--------------------------------

Add_16

      MOVF   ACCALO,W    

      ADDWF  ACCBLO,F    ;ACCB和ACCA低8位相加

      BTFSC  STATUS,C    ;有进位否?

      INCF   ACCBHI      ;有进位,ACCB高8位加1

      MOVF   ACCAHI,W    

      ADDWF  ACCBHI,F    ;ACCB和ACCA高8位相加

      RETURN

;--------------------------------------------------------------

   END                  ;程序结束

二、编写子程序Sub_16,实现双字节无符号数减法。要求在地址0x20~0x23定义变量ACCALO、ACCAHI、ACCBLO、ACCBHI。


ACCALO ;存放加数或减数低8位

ACCAHI ;存放加数或减数高8位

ACCBLO ;存放被加数或被减数低8位

ACCBHI 存放被加数或被减数高8位

list       p=16f877A   ; 标明所用的处理器类型

 #include    ; 调用头文件 

 

;***** 变量声明***************************************

 

ACCALO   EQU   0x70  ;存放减数低8位 

ACCAHI   EQU   0x71  ;存放减数高8位 

ACCBLO   EQU   0x72  ;存放被减数低8位 

ACCBHI   EQU   0x73  ;存放被减数高8位 

 

;----------------------------------------—-----------

    org         0x0000           ; 复位入口地址

;----------------------------------------------------

Main

       MOVLW   0X4B              ;被减数0x4C4BH送ACCB

       MOVWF   ACCBLO

       MOVLW   0X4C

       MOVWF   ACCBHI

       MOVLW   0XD2              ;减数0x40D2送ACCA

       MOVWF   ACCALO

       MOVLW   0X40

       MOVWF   ACCAHI

       CALL    Sub_16            ;调用Sub_16,求差,结果为0x0B79 

       NOP

       GOTO $                    ;停机

;--------------双字节无符号数减法子程序-----------------------

Sub_16

      MOVF   ACCALO,W

      SUBWF  ACCBLO,F    ;ACCB、ACCA低8位相减

      BTFSS  STATUS,C    ;有借位否?

      DECF   ACCBHI      ;有,被减数高8位减1

      MOVF   ACCAHI,W     

      SUBWF  ACCBHI,F    ;ACCB、ACCA高8位相减

      RETURN

;-------------------------------------------------------------

   END                  ;程序结束


推荐阅读

史海拾趣

Global Connector Technology公司的发展小趣事
根据电动机和电源系统的要求,检查并调整继电器的参数设置。
Cree(科瑞)公司的发展小趣事

随着全球LED市场的日益成熟,竞争也日趋激烈。面对这一形势,Cree通过收购和出售的方式,逐渐调整了其在LED市场的主要业务。这一战略调整使得Cree能够专注于更高端、更具技术含量的LED产品研发和生产,从而保持了其在行业内的领先地位。

EXXELIA Group公司的发展小趣事

2015年初,Cree曾计划将其射频产品线独立出来,并以近3.5亿美金卖给英飞凌。然而,由于某些限制原因,收购计划最终终止。面对这一变故,Cree不得不重新建立射频微波器件团队,并创立了新的品牌wolfspeed。这一举措不仅彰显了Cree的应变能力和创新精神,也为其在射频领域的发展注入了新的活力。

Block USA Inc.公司的发展小趣事

在支付与金融服务领域取得成功后,Block USA Inc.还尝试了跨界合作,推出了音乐软件TIDAL。这一举措旨在通过提供高品质的音乐体验,吸引更多年轻用户群体,并进一步扩大Block的品牌影响力。虽然音乐市场竞争激烈,但TIDAL凭借其独特的音乐资源和用户体验,逐渐在市场中占据了一席之地。

Atmel (Microchip)公司的发展小趣事

Atmel公司自1984年成立以来,便专注于微控制器及相关技术的研发。在创业初期,公司凭借其深厚的技术积累,成功开发出了基于8051内核的8位元Flash微控制器,这在当时是一个重大的技术突破。这一产品的推出,不仅奠定了Atmel在微控制器领域的地位,也为公司的后续发展奠定了坚实的基础。

GainSpan ( Telit)公司的发展小趣事

进入21世纪后,风华高科加快了国际化进程。公司积极与国际知名企业开展合作,引进先进技术和设备,提升产品竞争力。同时,公司还不断拓展海外市场,产品远销北美、东南亚等地区。这些举措不仅提升了公司的国际知名度,也为公司带来了更多的业务机会和增长空间。

问答坊 | AI 解惑

我的ucos终于在51上跑起来了(附加代码和强人心得)

转自周立功论坛 小弟学ucos有一段时间了,总想找个移植的案例跑起来试试 前不久将网络上的一篇“小siae的uCOS2C51”下载下来,放到我的STC89C52RC中,发现跑不起来,郁闷了.... 后来在网上找了一个很好的关于uCOS2C51的移植总结,比较着调 ...…

查看全部问答>

基于SOPC的PCI数据采集卡的设计与实现

基于SOPC的PCI数据采集卡的设计与实现…

查看全部问答>

RFID入门经典培训教材

别处看到的资料,新手了解很不错的…

查看全部问答>

4.3寸屏不能显示完整文字

最近在开发测试TFT LCD屏. 刚开始用3.5寸的320*240编译了CE系统.文字可以显示完整. 之后改用4.3寸的480*272分辨率(16:9)编译CE系统.显示的文字例如回收站这几个字只能显示横的.竖的显示不出来. 直接换成3.5寸的屏又可以显示.用PB截图也是显示完 ...…

查看全部问答>

关于西门子plc的问题

请问各位老师们,学习西门子plc应该遵寻怎样一个过程,先学啥后学啥,请老师指点,我对这个学习的先后顺序很迷茫,不知道如何下手?…

查看全部问答>

做手写板软件。。。

请问有人做过手写板软件吗? 我想做个手写板的软件,通过手写板输入,最好可以检测压力,如果买市面上的手写板,好像很难通过这些成品做出软件来。 请问有有过同样想法的人吗?我要买什么好呢? 请各位指教~~…

查看全部问答>

程序员聚贤庄

深圳程序员QQ群联盟成立两年多拥有三十个以上的QQ群,人数达二千多人,现在群雄云集,其中深程高级群更是高手云集,现有两名女成员都是计算机硕士两名.很多都是大公司的技术主干,现推介如下QQ群,如有兴趣速速加入:深程高级群:17538442c++:15195967 .NET ...…

查看全部问答>

串口通信两端都是RS232可以吗

想做一个带console口的硬件系统,通过PC机对其进行控制。看到交换机一般都是用RJ45做console口。对硬件不太懂,问点外行问题: 可不可以我的console口也是个和PC机一样的串口(RS232)啊?有两边都是RS232的console线吗? 如果不行,做成RJ45口的 ...…

查看全部问答>

直流电机励磁电压,励磁电流的问题?

直流电机励磁电压,励磁电流的问题,求助 我们现场有一台直流电机,平头机刀盘用。励磁电压180V,励磁电流6.67A。用西门子6RA28带动。装置电流125A,励磁最大电流10A。开始安装的时候励磁没有放变压器,励磁回路直接给220V。现在现场说带电机的时 ...…

查看全部问答>

示波器utd2025c使用说明

本帖最后由 paulhyde 于 2014-9-15 08:53 编辑 我想要示波器utd2025c使用说明书  谁有的 上传一下  谢谢  …

查看全部问答>