⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.ls1

📁 实验7 在RAM中执行程序代码 实验7 在RAM中执行程序代码 实验7 在RAM中执行程序代码
💻 LS1
📖 第 1 页 / 共 5 页
字号:
011E 2404            664             ADD     A,#04H
0120 2F              665             ADD     A,R7
0121 F8              666             MOV     R0,A
0122 A600     F      667             MOV     @R0,t?744
                     668     ;               } while ( --n != 0 );
                     669                             ; SOURCE LINE # 176
0124 D500C8   F      670             DJNZ    n?745,?C0018
                     671     ;       }
                     672                             ; SOURCE LINE # 177
0127                 673     ?C0015:
                     674     ; //提取校验和
                     675     ;       t = (toint(hex[i++])<<4);
                     676                             ; SOURCE LINE # 179
0127 AF00     F      677             MOV     R7,i?742
0129 0500     F      678             INC     i?742
012B E500     F      679             MOV     A,hex?741
012D 2F              680             ADD     A,R7
012E F8              681             MOV     R0,A
012F E2              682             MOVX    A,@R0
0130 FF              683             MOV     R7,A
0131 120000   F      684             LCALL   _toint
0134 EF              685             MOV     A,R7
0135 C4              686             SWAP    A
0136 54F0            687             ANL     A,#0F0H
0138 F500     F      688             MOV     t?744,A
                     689     ;       t += toint(hex[i++]);
                     690                             ; SOURCE LINE # 180
013A AF00     F      691             MOV     R7,i?742
013C 0500     F      692             INC     i?742
013E E500     F      693             MOV     A,hex?741
0140 2F              694             ADD     A,R7
0141 F8              695             MOV     R0,A
0142 E2              696             MOVX    A,@R0
0143 FF              697             MOV     R7,A
0144 120000   F      698             LCALL   _toint
0147 EF              699             MOV     A,R7
0148 2500     F      700             ADD     A,t?744
014A F500     F      701             MOV     t?744,A
                     702     ;       cc += t;
                     703                             ; SOURCE LINE # 181
014C 2500     F      704             ADD     A,cc?746
014E F500     F      705             MOV     cc?746,A
                     706     ;       IntelHEX->cc = t;
                     707                             ; SOURCE LINE # 182
0150 E500     F      708             MOV     A,IntelHEX?740
0152 2424            709             ADD     A,#024H
0154 F8              710             MOV     R0,A
0155 A600     F      711             MOV     @R0,t?744
A51 MACRO ASSEMBLER  MAIN                                                                 03/29/2007 22:55:54 PAGE    12

                     712     ; //检查校验和
                     713     ;       if ( cc == 0 )
                     714                             ; SOURCE LINE # 184
0157 E500     F      715             MOV     A,cc?746
0159 7002            716             JNZ     ?C0019
                     717     ;               return 1;
                     718                             ; SOURCE LINE # 185
015B D3              719             SETB    C
015C 22              720             RET     
015D                 721     ?C0019:
                     722     ;       else
                     723     ;               return 0;
                     724                             ; SOURCE LINE # 187
015D C3              725             CLR     C
                     726     ; }
                     727                             ; SOURCE LINE # 188
015E                 728     ?C0009:
015E 22              729             RET     
                     730     ; END OF _AnalyseHEX
                     731     
                     732     ; 
                     733     ; 
                     734     ; //蜂鸣器鸣叫
                     735     ; void Beep()
                     736     
----                 737             RSEG  ?PR?Beep?MAIN
0000                 738     Beep:
                     739             USING   0
                     740                             ; SOURCE LINE # 192
                     741     ; {
                     742                             ; SOURCE LINE # 193
                     743     ;       unsigned int n;
                     744     ;       TMOD &= 0xF0;   //T0设置在方式1,即16位定时器(不改变T1的模式)
                     745                             ; SOURCE LINE # 195
0000 5389F0          746             ANL     TMOD,#0F0H
                     747     ;       TMOD |= 0x01;
                     748                             ; SOURCE LINE # 196
0003 438901          749             ORL     TMOD,#01H
                     750     ;       n = 800;
                     751                             ; SOURCE LINE # 197
                     752     ;---- Variable 'n?848' assigned to Register 'R6/R7' ----
0006 7F20            753             MOV     R7,#020H
0008 7E03            754             MOV     R6,#03H
000A                 755     ?C0023:
                     756     ;       do
                     757     ;       {
                     758                             ; SOURCE LINE # 199
                     759     ;               TH0 = 0xFC;                     //设置T0初值=65536-(11059200/12)/(2*f)
                     760                             ; SOURCE LINE # 200
000A 758CFC          761             MOV     TH0,#0FCH
                     762     ;               TL0 = 0x66;                     //f为发声频率(500Hz)
                     763                             ; SOURCE LINE # 201
000D 758A66          764             MOV     TL0,#066H
                     765     ;               TR0 = 1;                        //启动定时器
                     766                             ; SOURCE LINE # 202
0010 D28C            767             SETB    TR0
0012                 768     ?C0024:
                     769     ;               while ( !TF0 );         //等待定时器溢出
                     770                             ; SOURCE LINE # 203
0012 308DFD          771             JNB     TF0,?C0024
0015                 772     ?C0025:
                     773     ;               TR0 = 0;                        //停止定时器
                     774                             ; SOURCE LINE # 204
0015 C28C            775             CLR     TR0
                     776     ;               TF0 = 0;                        //清除溢出标志
                     777                             ; SOURCE LINE # 205
A51 MACRO ASSEMBLER  MAIN                                                                 03/29/2007 22:55:54 PAGE    13

0017 C28D            778             CLR     TF0
                     779     ;               BUZZER = !BUZZER;       //翻转I/O口,产生方波振荡,使蜂鸣器发声
                     780                             ; SOURCE LINE # 206
0019 B292            781             CPL     BUZZER
                     782     ;       } while ( --n != 0 );
                     783                             ; SOURCE LINE # 207
001B EF              784             MOV     A,R7
001C 1F              785             DEC     R7
001D 7001            786             JNZ     ?C0058
001F 1E              787             DEC     R6
0020                 788     ?C0058:
0020 14              789             DEC     A
0021 4E              790             ORL     A,R6
0022 70E6            791             JNZ     ?C0023
                     792     ;       BUZZER = 1;
                     793                             ; SOURCE LINE # 208
0024 D292            794             SETB    BUZZER
                     795     ; }
                     796                             ; SOURCE LINE # 209
0026 22              797             RET     
                     798     ; END OF Beep
                     799     
                     800     ; 
                     801     ; 
                     802     ; /*******************************************************************************
                     803     ; 函数:Delay()
                     804     ; 功能:延时0.01s~2.56s
                     805     ; 参数:t>0时,延时(t*0.01)s
                     806     ;       t=0时,延时2.56s
                     807     ; 说明:定时10ms的定时器初值=65536-0.01/(1/(f/12)),其中f为晶振频率
                     808     ; *******************************************************************************/
                     809     ; void Delay(unsigned char t)
                     810     
----                 811             RSEG  ?PR?_Delay?MAIN
0000                 812     _Delay:
                     813             USING   0
                     814                             ; SOURCE LINE # 219
                     815     ;---- Variable 't?949' assigned to Register 'R7' ----
                     816     ; {
                     817                             ; SOURCE LINE # 220
                     818     ;       TMOD &= 0xF0;   //T0设置在方式1,即16位定时器(不改变T1的模式)
                     819                             ; SOURCE LINE # 221
0000 5389F0          820             ANL     TMOD,#0F0H
                     821     ;       TMOD |= 0x01;
                     822                             ; SOURCE LINE # 222
0003 438901          823             ORL     TMOD,#01H
0006                 824     ?C0029:
                     825     ;       do
                     826     ;       {
                     827                             ; SOURCE LINE # 224
                     828     ;               TH0 = 0xDC;                     //设置定时器初值(定时10ms)
                     829                             ; SOURCE LINE # 225
0006 758CDC          830             MOV     TH0,#0DCH
                     831     ;               TL0 = 0x00;
                     832                             ; SOURCE LINE # 226
0009 E4              833             CLR     A
000A F58A            834             MOV     TL0,A
                     835     ;               TR0 = 1;                        //启动定时器
                     836                             ; SOURCE LINE # 227
000C D28C            837             SETB    TR0
000E                 838     ?C0030:
                     839     ;               while ( !TF0 );         //等待定时器溢出
                     840                             ; SOURCE LINE # 228
000E 308DFD          841             JNB     TF0,?C0030
0011                 842     ?C0031:
                     843     ;               TR0 = 0;                        //停止定时器
A51 MACRO ASSEMBLER  MAIN                                                                 03/29/2007 22:55:54 PAGE    14

                     844                             ; SOURCE LINE # 229
0011 C28C            845             CLR     TR0
                     846     ;               TF0 = 0;                        //清除溢出标志
                     847                             ; SOURCE LINE # 230
0013 C28D            848             CLR     TF0
                     849     ;       } while ( --t != 0 );   //循环t次
                     850                             ; SOURCE LINE # 231
0015 DFEF            851             DJNZ    R7,?C0029
                     852     ; }
                     853                             ; SOURCE LINE # 232
0017 22              854             RET     
                     855     ; END OF _Delay
                     856     
                     857     ; 
                     858     ; 
                     859     ; //跳到RAM执行程序
                     860     ; void GotoRam()
                     861     
----                 862             RSEG  ?PR?GotoRam?MAIN
0000                 863     GotoRam:
                     864             USING   0
                     865                             ; SOURCE LINE # 236
                     866     ; {
                     867                             ; SOURCE LINE # 237
                     868     ; //下载完毕后,发送OK、蜂鸣器鸣叫
                     869     ;       printf("OK, press K4 to executing.\r\n");
                     870                             ; SOURCE LINE # 239
0000 7BFF            871             MOV     R3,#0FFH
0002 7A00     F      872             MOV     R2,#HIGH (?SC_0)
0004 7900     F      873             MOV     R1,#LOW (?SC_0)
0006 120000   F      874             LCALL   _printf
                     875     ;       Beep();
                     876                             ; SOURCE LINE # 240
0009 120000   F      877             LCALL   Beep
000C                 878     ?C0033:
                     879     ; //等待按键K4按下,当K4抬起时,才运行RAM程序
                     880     ;       while ( K4 );
                     881                             ; SOURCE LINE # 242
000C 20B5FD          882             JB      K4,?C0033
000F                 883     ?C0034:
                     884     ;       Delay(40);
                     885                             ; SOURCE LINE # 243
000F 7F28            886             MOV     R7,#028H
0011 120000   F      887             LCALL   _Delay
0014                 888     ?C0035:
                     889     ;       while ( !K4 );
                     890                             ; SOURCE LINE # 244

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -