微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求大神帮忙看一下这段程序的正确与否!我是菜鸟 实在看不懂

求大神帮忙看一下这段程序的正确与否!我是菜鸟 实在看不懂

时间:10-02 整理:3721RD 点击:

主程序  

SP-CONTR:

              MOV                   DPTR,#addr16             ;T0初始值地址指针

              MOV                 R3,1BH                        ;频率阶梯计数器赋值

            MOV                  R2,1AH                      ;阶梯总步数计数器赋值

            CLR                   C

            ORL                    C,73H                         ;判断加速时的转向标志

            JC                        ROTE                     ;若转向标志为1,则跳转到反转地址

            MOV                  R0,#20H                       ;正转模型首地址

            AJMP                 PH

ROTE:

              MOV                 R0,#27H                      ;反转模型首地址

PH:

              MOV                 TMOD,01H                 ;定时器T0方式1定时

            MOV                  TL0,#00H                   ;T0赋计时初值

            MOV                  TH0,#00H

            SETB                  TR0

            SETB                  ET0

            SETB                  EA

LOOP:

              MOV                 A,R3

            JNZ                  LOOP                         ;等待中断

            CLR                   EA                              ;CPU关中断

            SJMP                   HEAR                           ;结束

中断服务程序清单

             ORG                  0000H                           

INT-T0:

              PUSH                A                                  ;保护现场

             MOV                 A,@R0                        ;模型控制字送累加器A

             MOV                   P1,A                             ;输出控制模型

             INC                     R0                                ;模型控制字存储地址加1

             MOV                 A,#00H

             ORL                  A,@R0

             JZ                      TPL                              ;若是结束标志,则跳转

RR:

             DEC                  R2                                ;步进计数器减1

             MOV                 A,#00H

             ORL                  A,R2

             JZ                      THL                             ;若阶梯步长计数器为0,则跳转

             ORL                  C,71H

             JNC                     ROTEL                        ;若是减速,则跳转

             MOV                 A,#00H                        ;加速

             MOVC              A,@A+DPTR

             MOV                 TL0,A                           ;赋定时器T0初值的低8位

MOV                  A,#01H

             MOVC              A,@A+DPTR

             MOV                 TH0,A                          ;赋定时器T0初值的高8位

             AJMP                QQ

ROTEL:

              MOV                 A,#80H                        ;减速

             MOVC              A,@A+DPTR

             MOV                 TL0,A                         ;赋定时器T0初值的低8位

             MOV                 A,#81H

             MOVC              A,@A+DPTR

             MOV                 TH0,A                          ;赋定时器T0初值的高8位

QQ:

             POP                   A                                  ;恢复现场

             RETI

THL:

             DJNZ                R3,AT                          ;频率阶梯减1,若不为0跳转

             AJMP                QQ

AT:       MOV                 R2,1AH                       ;阶梯步长赋值

             INC                   DPTR                           

             INC                   DPTR                           ;初始值指针更新

TRL:     CLR                   C

             MOV                 A,R0

             SUBB                A,06H

             MOV                 R0,A                            ;恢复模型首地址

             AJMP                RR


看不懂,帮忙顶了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top