欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    PIC单片机应用开发典型模块_第八章程序2878.docx

    • 资源ID:68903013       资源大小:135.22KB        全文页数:72页
    • 资源格式: DOCX        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PIC单片机应用开发典型模块_第八章程序2878.docx

    (1)16×16位定点数加、减法程序LIST            p=16f877    INCLUDE        p16f877.inc    ACCALO     EQU     20 存放加数或减数低8位    ACCAHI     EQU     21     ;存放加数或减数高8位    ACCBLO     EQU     23     ;存放被加数或被减数低8位    ACCBHI     EQU     24  ;存放被加数或被减数高8位    ORG    0X0000START    GOTO     MAIN;*双字节减法子程序,入口地址ACCB-ACCA,出口地址ACCB*D_sub    CALL    NEG_A     ;求ACCA的补码;双字节加加法子程程序,入入口地址址ACCCB+AACCAA,出口口地址AACCBBD_addd        MOVVF       ACCCALOO,0 ;AACCBB和ACCCA低低半字节节相加      ADDDWF       ACCCBLLO     BBTFSSC       STAATUSS, C ;有进进位否?     INNCF       ACCCBHHI ;有,ACCCB高字字节加11,再加AACCAAHI      MOVVF       ACCCAHII,0 ;ACCCA、AACCBB高半字字节相加加     ADDDWFF      AACCBBHI      RETTURNN      ;子程序序返回;ACCAA取补子子程序NEG_AA     COOMF       ACCCALLO     ACCCALOO取反加加1     IINCFF      AACCAALO      BTFFSC       STTATUUS,ZZ     低8位位有进位位吗?      DECCF       ACCCAHII ;有,AACCAAHI减减1,再再取反      COMMF       ACCCAHII ;否则AACCAAHI直直接取反反     REETURRN ;子程程序返回回(2)166×166位定点点数乘法法程序LIST      p=116f8877      INCCLUDDE     pp16ff8777.innc     AACCAALO       EQQU       20    存放乘乘数低88位     AACCAAHI       EQQU       21     存放乘乘数高88位     AACCBBLO       EQQU       23     ;存放被被乘数低低8位和和乘积第第1623位位     ACCCBHHI       EQUU      224     ;存放被被乘数高高8位和和乘积第第2431位位     ACCCCLLO       EQUU      226      存放乘乘积低88位     AACCCCHI       EQQU       27      存放乘乘积高88位     AACCDDLO       EQQU       28     临时寄寄存器      ACCCDHII      EEQU       299     临时寄寄存器      TEMMP       EQUU      22A     临时寄寄存器      SIGGN       EQUU      22B      存放乘乘积的符符号     OORG      0X000000STAART      GOTTO       MAIIN    OORG      0X001000D_mmpy      CALLL       S_SSIGNN      ;求取乘乘积的符符号,并并对负数数取补       CAALL       SEETUPP      ;调用子子程序,将将ACCCB的值值送ACCCD      INCCF     TTEMPP     CLLRF       ACCCCHHI;清ACCCC      CLRRF       ACCCCLOOMLOOOP      BCFF      SSTATTUS,CC;清进位位位     RRRF       ACCCDHHI ACCCD右移移     RRRF       ACCCDLOO     BTTFSCC      SSTATTUS,CC 判断是是否需要要相加      CALLL       D_aadd     ;加乘数数至ACCCB,见见加法程程序     BBCF       STTATUUS,CC    清进位位位     RRRF       ACCCBHHI      ;右移部部分乘积积     RRRF       ACCCBLOO     RRRF       ACCCCHII     RRRF       ACCCCLOO     DEECFSSZ       TEMMP;乘法完完成否?     GOOTO       MLLOOPP 否,继继续求乘乘积     BBTFSSS       SIGGN,77     ;是,确确定乘积积的符号号     GOOTO       OVVER     为正,乘乘法结束束     COOMF       ACCCCLLO     为负,乘乘积取补补     INNCF            AACCCCLO      BTFFSC           STTATUUS,ZZ     DEECF            AACCCCHI      COMMF            ACCCCHHI     BBTFSSC            STTATUUS,ZZNEGG_B      DECCF            ACCCBLLO                COOMF            AACCBBLO      BTFFSC            SSTATTUS,ZZ     DEECF            AACCBBHI      COMMF            ACCCBHHIOVVER      RETTURNN;子程序序返回SETUPP     MOOVLWW      115;初始化化TEMMP寄存存器                MOOVWFF      TTEMPP     MOOVF       ACCCBHHI,00      ;ACCCB送AACCDD     MOOVWFF     ACCCDHHI     MMOVFF      AACCBBLO,00     MOOVWFF      AACCDDLO      CLRRF       ACCCBHII     清ACCCB      CLRRF       ACCCBLOO     REETURRN         子程序序返回S_SIGGN     MMOVFF      AACCAAHI,00 ACCCAHII异或AACCBBHI,结结果送SSIGNN单元      XORRWF       ACCCBHHI,00     MOOVWFF      SSIGNN                     BTTFSSS      AACCBBHI,77     ;ACCCB为负负吗?      GOTTO       CHEEK_AA     ;否,检检查ACCCA      CALLL     NNEG_B      ;是,求求取ACCCB绝绝对值CCHEKK_A      BTFFSC       ACCCAHHI,77  ACCCA为负负吗?      CALLL       NEGG_A       ;ACCCA为负负,求取取ACCCA绝对对值,    RRETUURN            ;ACCCA和AACCBB均为正正,返回回(3)166×166位定点点数除法程序LIST      p=116f8877IINCLLUDEE     p116f8777.inncACCCALLO     EEQU       200;存放除除数低88位ACCCAHHI       EQUU      221    存放除除数高88位ACCCBLLO       EQUU      222     ;存放被被除数和和商的低低8位AACCBBHI       EQQU       23    ;存放被被除数和和商的高高8位AACCCCLO       EQQU       24   存放余余数低88位ACCCCHHI       EQUU      225     存放余余数高88位ACCCDLLO       EQUU      226 ;临时寄寄存器AACCDDHI       EQQU       27 ;临时寄寄存器TTEMPP      EEQU       288 ;临时寄寄存器SSIGNN      EEQU       299 存放商商的符号号ORGG     0XX00000STARTT     GOOTO      MAIINORG     00X01100DD_diiv     CCALLL      SS_SIIGN  确定商商的符号号,并将将负数取取补CAALL      SETTUP       ;初始化化TEMMP,将将被除数数移至AACCDD     INNCF      TEMMP     CCLRFF     ACCCCHHI 清余数数寄存器器     CLLRF      ACCCCLOODLOOOP      BCFF     STTATUUS,CC      ;清进位位位     RRLF      ACCCDLOO      ;被除数数、余数数左移11位     RRLF      ACCCDHII     RLLF     AACCCCLO      RLFF     ACCCCHHI     MMOVFF     ACCCAHHI,00      ;ACCCCHII-ACCCAHHI     SSUBWWF     AACCCCHI,00     BTTFSSS     STTATUUS,ZZ ACCCCHII=ACCCAHHI?      GOTTO     NNOCHHK     MMOVFF     ACCCALLO,00 是,AACCCCLO-ACCCALOO     SUUBWFF     ACCCCLLO,00NOCCHK      BTFFSS      STAATUSS,C   ACCCC>AACCAA?     GGOTOO     NOOGO      MOVVF     AACCAALO,00     ;是,余余数减除除数     SSUBWWF     AACCCCLO      BTFFSS      STAATUSS,C      DECCF     AACCCCHI      MOVVF     AACCAAHI,00     SUUBWFF     ACCCCHHI     BBSF      STAATUSS,C     ;置进位位位NOOGO      RLFF     ACCCBLLO     ;商左移移1位      RLFF     ACCCBHHI     DDECFFSZ      TEMMP     ;循环完完毕?      GOTTO     DDLOOOP     BBTFSSS       SIGGN,77     ;是,确确定商的的符号      GOTTO       DIVVOVEER     ;为正,除除法结束束,跳转转到结束束行     CCOMFF      AACCCCLO       ;为负,商商和余数数分别取取补     IINCFF      AACCCCLO      BTFFSC      STAATUSS,Z      DECCF       ACCCCHII     COOMF       ACCCCHHI     CCALLL     NEEG_BB  见乘法法程序中中间NEEG_BBDIVVOVEER     RRETUURN            ;子程序序返回S_SIGGN     MMOVFF      AACCAAHI,00 ACCCAHII异或AACCBBHI,结结果送SSIGNN单元      XORRWF       ACCCBHHI,00     MOOVWFF      SSIGNN                     BTTFSSS      AACCBBHI,77      ;ACCCB为负负?     GGOTOO      CCHEKK_A     ;否,检检查ACCCA      COMMF       ACCCBLOO     ;是,AACCBB取补      INCCF       ACCCBLOO     BTTFSCC      SSTATTUS,ZZ     DEECF       ACCCBHHI     CCOMFF      AACCBBHICCHEKK_A      BTFFSC       ACCCAHHI,77 ACCCA为负负?     CCALLL      NNEG_A      ;ACCCA为负负,取补补(NEEG_AA子程序序请参见见                 ;16××16位位定点数数乘法子子程序NNEG_A)      RETTURNN           ;ACCCA和AACCBB均为负负,返回回(4)浮点点数加减减法程序序LIST                pp=166f8777     IINCLLUDEE            p166f8777.iinc      ACCCALOO            EQUU      220 存放加加数或减减数的尾尾数     AACCAAHI            EEQU      21      EXPPA           EQUU      222            ;存放加加数或减减数阶码码     ACCCBLLO           EQUU      223          ;存放被被加数或或被减数数尾数以以及和或或差     AACCBBHI            EEQU       244     EXXPB            EEQU      25         ;存放被被加数或或被减数数阶码      ACCCCLOO          EEQU       266          临时寄寄存器      ACCCCHII            EQUU      227          ;临时寄寄存器      ACCCDLOO          EEQU       288           临时寄寄存器      ACCCDHII            EQUU      229        ;临时寄寄存器      TEMMP            EQQU       2A         临时寄寄存器      TEMMP1            EEQU       300           临时寄寄存器      TIMMES            EEQU       311           临时寄寄存器      ORGG                 0XX0000STAART      GOTTO           MAIIN     OORG                00X01100F_subb     CAALL            NNEG_A;求ACCCA的的补码,将将减法转转换为补补码加法法F_aadd      CALLL           SUBBADJJ          调子程程序判断断EXPPB和EEXPAA的大小小     BTTFSCC            STAATUSS,Z   参与运运算的两两个数阶阶码相等等?     GGOTOO            PADDD        是,求求尾数的的和     BBTFSSC            STTATUUS,CC    EXPPB>EEXPAA?     CCALLL            F_sswapp          是,AACCBB与ACCCA互互换     MMOVFF            EXPPA,00         否,求求取两者者的差值值     SUUBWFF            EXPPBSCCLOOOP     CCALLL            SHFFTSRR     ACCCB右移移规格化化     INNCFSSZ            EXXPB    EXPPBEEXPAA?                GOOTO            SSCLOOOP      否,继继续右移移     MOOVF            EEXPAA,0        是,存存和(差差)的阶阶码     MMOVWWF           EXPPBPAADD      MOVVF            ACCCAHHI,00 ACCCAHII或ACCCBHHI     IIORWWF            ACCCBHHI,00     MOOVWFF            SIGGN             存于SSIGNN寄存器器     MOOVF           ACCCBHHI,00    暂存AACCBBHI           MOOVWFF          EEXPAA     CAALL            DD_addd 尾数相相加     BBTFSSS            SIIGN,77      ACCCA和AACCBB有负数数?                    BTTFSCC            ACCCBHII,7;否,把把和的最最高位和和次高位位同时进进位?      GOTTO            ADDD2           否,转转ADDD2     BBTFSSS           ACCCAHII,7   ACCCA为负负吗?      GOTTO           ADDD3        ACCCA和AACCBB不同时时为负,转转ADDD3     BBTFSSS           EXPPA,77         是,AACCBB为负吗吗?     GGOTOO          AADD33                BSFF                STAATUSS,C   ACCCA和AACCBB同为负负,带负负号右移移     RRRF                ACCCBHHI     RRRF                AACCBBLO      INCCF                EXXPBAADD33     CLLRF            AACCCCHI           和(差差)规格格化     CCLRFF            ACCCCLOO     CAALL            FF_noorm      RETTURNN                        子程序序返回AADD22     BCCF                 SSTATTUS,CC 最高位位次高位位不同时时进位,AACCBB右移      INCCF            EXXPB      GOTTO            SHHFTRRSHFFTSRR      BBCF                  STAATUSS,C  ACCCB带符符号右移移子程序序     BTTFSCC            ACCCBHII,7      BSFF                 STTATUUS,CCSHFFTR        RRRF                  ACCCBHII     RRRF                 AACCBBLO      RETTURNN                         子程序序返回F_swaap     MMOVFF            ACCCAHII,0;ACCCAHII、ACCCBHHI互换换     MOOVWFF            TEMMP     MMOVFF            ACCCBHII,0      MOVVWF            AACCAAHI      MOVVF            TEEMP,00     MOOVWFF            ACCCBHII     MOOVF            AACCAALO,00  ACCCALOO、ACCCBLLO互换换     MOOVWFF            TEMMP     MMOVFF            ACCCBLOO,0      MOVVWF            AACCAALO      MOVVF            TEEMP,00     MOOVWFF            ACCCBLOO     MOOVF            EEXPAA,0       EXPPA、EEXPBB互换      MOVVWF            TTEMPP     MOOVF            EEXPBB,0      MOVVWF            EEXPAA     MOOVF            TTEMPP,0      MOVVWF            EEXPBB          RRETUURNSUBADDJ           MOVVF           EXPPA,00;EXPPA异或或EXPPB,结结果送CC_DIIV     XXORWWF           EXPPB,00     MOOVWFF          CC_DIIV     MMOVFF          EEXPAA,0      EXPPB-EEXPAA     SUUBWFF          EEXPBB,0      BTFFSS           C_DIVV,7      EXPPA和EEXPBB同号?     REETURRN                           是,进进位位的的值真确确反映两两者的大大小,返返回     BBTFSSS           STAATUSS,C    否,进进位位的的值取反反     GOOTO           CHHANGGEC      BCFF                STAATUSS,C      RETTURNNCHAANGEEC     BBSF                SSTATTUS,CC     REETURRNF_norrm       MOVVF            ACCCBHHI;ACCCB00?     BBTFSSS            STTATUUS,ZZ     GOOTO            CC_noorm      MOVVF            ACCCBLLO     BBTFSSC            STTATUUS,ZZ     REETURRN                           是,不不需规格格化,返返回C_norrm     BBTFSSC           ACCCBHII,7;否。AACCBB为负?      GGOTOO          CC_noorm22     C_norrm1      BTFFSC     ACCCBHII,6;为正。规规格化完完毕?      RETTURNN                        ACCCBHII.6=1,规规格化结结束     CCALLL            SHFFTSLL          否。AACCBB左移      DECCF            EXXPB        EXPPB减11     GOOTO            CC_noorm11     重新判判断规格格化完毕毕否?CC_noorm22     BTTFSSS          AACCBBHI,66     ACCCB为负负。规格格化完毕毕否?      RETTURNN                          ACCCBHII.6=0,规规格化结结束     BBCF                SSTATTUS,CC          CCALLL          SSHFTTSL           否,AACCBB左移      BSFF                ACCCBHII,7   加符号号     DEECF           EXXPB        EXPPB减11     GOOTO           C_norrm2       重新判判断规格格化完毕毕否?SSHFTTSL        BBCF                  STAATUSS ,CC    ACCCB左移移子程序序          RRLF                  ACCCCLOO                RLFF                 ACCCCHHI     RRLF                  ACCCBLOO     RLLF                 AACCBBHI      RETTURNN(5)浮点点数乘法法程序LIST                pp=166f8777     IINCLLUDEE          pp16ff8777.innc     AACCAALO            EEQU       200;存放乘乘数尾数数     ACCCAHHI            EQQU       21      EXPPA           EQUU      222     存放乘乘数阶码码     ACCCBLLO            EQQU       23            ;存放被被乘数尾尾数和乘乘积高116位      ACCCBHII            EQUU      224     EEXPBB            EQUU      225    存放被被乘数阶阶码     AACCCCLO            EEQU       266          ;存放乘乘积低116位      ACCCCHII            EQUU      227                ACCCDLLO            EQQU       28        临时寄寄存器      ACCCDHII            EQUU      229     临时寄寄存器      TEMMP            EQQU       2A          临时寄寄存器      TEMMP1            EEQU       300      临时寄寄存器      TIMMES            EEQU       311     临时寄寄存器      SIGGN            EQQU       2B           存放乘乘积符号号     COOUNTT            EQUU      22F           临时寄寄存器      ACCCEHII          EEQU      30        临时寄寄存器      ACCCELOO          EEQU      31      临时寄寄存器      ORGG                0X000000STAART      GOTTO           MAIIN     OORG                00X01100F_mpyy     CAALL            SS_SIIGN  求取乘乘积的符符号,并并对负数数取补       CAALL            SSETUUP         ;调用子子程序将将ACCCB的值值送ACCCD      CLRRF            ACCCCHHI          ;清ACCCC      CLRRF            ACCCCLLOMLLOOPP     BCCF                 SSTATTUS,CC     清进位位位     RRRF                  ACCCDHII    ACCCD右移移     RRRF                 AACCDDLO      BTFFSC            SSTATTUS,CC      ;判断是是否需要要相加      CALLL            D_addd          ;加乘数数至ACCCB      BCFF                 STTATUUS,CC    清进位位位     RRRF                  ACCCBHII         右移部部分乘积积     RRRF                 AACCBBLO      RRFF                 ACCCCHHI     RRRF                  ACCCCLOO     DEECFSSZ            TEEMP           乘法完完成否?     GOOTO            MMLOOOP   否,继继续循环环     MOOVF            EEXPAA,0           ;是,乘乘数与被被乘数阶阶码相加加,得积积的阶码码     ADDDWFF          EEXPBB     MOOVF            AACCBBHI       ACCCBHII=0?     BTTFSSS            STAATUSS,Z      GOTTO            FIINUPP        否,转转FINNUP      MOVVF            ACCCBLLO ACCCB00?     BBTFSSS            STTATUUS ,ZZ     GOOTO            SSHFTT08            ;否,只只有ACCCBHHI=00,转SSHFTT08      MOVVF            ACCCCHHI,00     ;ACCCB=00,将乘乘积左移移15位位     MOOVWFF            ACCCBHII     MOOVF            AACCCCLO,00     MOOVWFF            ACCCBLOO     BCCF                 SSTATTUS,CC     RRRF                 AACCBBHI      RRFF       

    注意事项

    本文(PIC单片机应用开发典型模块_第八章程序2878.docx)为本站会员(you****now)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开