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

📄 main.ls1

📁 实验7 在RAM中执行程序代码 实验7 在RAM中执行程序代码 实验7 在RAM中执行程序代码
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     212     ;       LJMP    0x8003
0000 028003          213               LJMP  0x8003
                     214     ; #pragma endasm
                     215     ; }
                     216                             ; SOURCE LINE # 35
0003 32              217             RETI    
                     218     ; END OF INT0_ISR
                     219     
----                 220     CSEG    AT      0000BH
000B 020000   F      221             LJMP    T0_ISR
                     222     
                     223     ; 
                     224     ; //定时器T0中断入口
                     225     ; void T0_ISR() interrupt 1
                     226     
----                 227             RSEG  ?PR?T0_ISR?MAIN
                     228             USING   0
0000                 229     T0_ISR:
                     230                             ; SOURCE LINE # 38
                     231     ; {
                     232     ; #pragma asm
                     233     ;       LJMP    0x800B
0000 02800B          234               LJMP  0x800B
                     235     ; #pragma endasm
                     236     ; }
                     237                             ; SOURCE LINE # 43
0003 32              238             RETI    
                     239     ; END OF T0_ISR
                     240     
----                 241     CSEG    AT      00013H
0013 020000   F      242             LJMP    INT1_ISR
                     243     
                     244     ; 
                     245     ; //外部中断INT1入口
                     246     ; void INT1_ISR() interrupt 2
                     247     
----                 248             RSEG  ?PR?INT1_ISR?MAIN
                     249             USING   0
A51 MACRO ASSEMBLER  MAIN                                                                 03/29/2007 22:55:54 PAGE     5

0000                 250     INT1_ISR:
                     251                             ; SOURCE LINE # 46
                     252     ; {
                     253     ; #pragma asm
                     254     ;       LJMP    0x8013
0000 028013          255               LJMP  0x8013
                     256     ; #pragma endasm
                     257     ; }
                     258                             ; SOURCE LINE # 51
0003 32              259             RETI    
                     260     ; END OF INT1_ISR
                     261     
----                 262     CSEG    AT      0001BH
001B 020000   F      263             LJMP    T1_ISR
                     264     
                     265     ; 
                     266     ; //定时器T1中断入口
                     267     ; void T1_ISR() interrupt 3
                     268     
----                 269             RSEG  ?PR?T1_ISR?MAIN
                     270             USING   0
0000                 271     T1_ISR:
                     272                             ; SOURCE LINE # 54
                     273     ; {
                     274     ; #pragma asm
                     275     ;       LJMP    0x801B
0000 02801B          276               LJMP  0x801B
                     277     ; #pragma endasm
                     278     ; }
                     279                             ; SOURCE LINE # 59
0003 32              280             RETI    
                     281     ; END OF T1_ISR
                     282     
----                 283     CSEG    AT      00023H
0023 020000   F      284             LJMP    Serial_ISR
                     285     
                     286     ; 
                     287     ; //串行口收发中断入口
                     288     ; void Serial_ISR() interrupt 4
                     289     
----                 290             RSEG  ?PR?Serial_ISR?MAIN
                     291             USING   0
0000                 292     Serial_ISR:
                     293                             ; SOURCE LINE # 62
                     294     ; {
                     295     ; #pragma asm
                     296     ;       LJMP    0x8023
0000 028023          297               LJMP  0x8023
                     298     ; #pragma endasm
                     299     ; }
                     300                             ; SOURCE LINE # 67
0003 32              301             RETI    
                     302     ; END OF Serial_ISR
                     303     
----                 304     CSEG    AT      0002BH
002B 020000   F      305             LJMP    T2_ISR
                     306     
                     307     ; 
                     308     ; //定时器T2中断入口
                     309     ; void T2_ISR() interrupt 5
                     310     
----                 311             RSEG  ?PR?T2_ISR?MAIN
                     312             USING   0
0000                 313     T2_ISR:
                     314                             ; SOURCE LINE # 70
                     315     ; {
A51 MACRO ASSEMBLER  MAIN                                                                 03/29/2007 22:55:54 PAGE     6

                     316     ; #pragma asm
                     317     ;       LJMP    0x802B
0000 02802B          318               LJMP  0x802B
                     319     ; #pragma endasm
                     320     ; }
                     321                             ; SOURCE LINE # 75
0003 32              322             RETI    
                     323     ; END OF T2_ISR
                     324     
                     325     ; 
                     326     ; 
                     327     ; //串行口初始化
                     328     ; void UartInit()
                     329     
----                 330             RSEG  ?PR?UartInit?MAIN
0000                 331     UartInit:
                     332                             ; SOURCE LINE # 79
                     333     ; {
                     334                             ; SOURCE LINE # 80
                     335     ; //串行口设置:8位UART,允许接收,TI置位
                     336     ;       SCON = 0x52;
                     337                             ; SOURCE LINE # 82
0000 759852          338             MOV     SCON,#052H
                     339     ; //波特率加倍
                     340     ;       PCON |= 0x80;
                     341                             ; SOURCE LINE # 84
0003 438780          342             ORL     PCON,#080H
                     343     ; //设置定时器T1为8位自动重装模式
                     344     ;       TMOD &= 0x0F;
                     345                             ; SOURCE LINE # 86
0006 53890F          346             ANL     TMOD,#0FH
                     347     ;       TMOD |= 0x20;
                     348                             ; SOURCE LINE # 87
0009 438920          349             ORL     TMOD,#020H
                     350     ; //设置定时器T1的初值
                     351     ;       TH1 = 256 - ( MCLK / 12 ) / (16 * BaudRate );
                     352                             ; SOURCE LINE # 89
000C 758DF4          353             MOV     TH1,#0F4H
                     354     ;       TL1 = TH1;
                     355                             ; SOURCE LINE # 90
000F 858D8B          356             MOV     TL1,TH1
                     357     ; //启动定时器T1
                     358     ;       TR1 = 1;
                     359                             ; SOURCE LINE # 92
0012 D28E            360             SETB    TR1
                     361     ; }
                     362                             ; SOURCE LINE # 93
0014 22              363             RET     
                     364     ; END OF UartInit
                     365     
                     366     ; 
                     367     ; 
                     368     ; //定义联合整型结构,为访问整型变量的字节部分提供了方便
                     369     ; typedef union
                     370     ; {
                     371     ;       unsigned int i;
                     372     ;       struct
                     373     ;       {
                     374     ;               unsigned char H;
                     375     ;               unsigned char L;
                     376     ;       }CharPart;
                     377     ; }UnionInt;
                     378     ; 
                     379     ; 
                     380     ; //定义Intel HEX记录的结构
                     381     ; typedef struct
A51 MACRO ASSEMBLER  MAIN                                                                 03/29/2007 22:55:54 PAGE     7

                     382     ; {
                     383     ;       unsigned char ll;       //长度
                     384     ;       unsigned int aaaa;      //地址
                     385     ;       unsigned char tt;       //记录类型,0-数据,1-终止
                     386     ;       char dd[32];            //数据
                     387     ;       char cc;                        //校验和
                     388     ;       unsigned int BootAddr;  //启动地址
                     389     ; }CIntelHEX;
                     390     ; 
                     391     ; 
                     392     ; /*******************************************************************************
                     393     ; 函数:AnalyseHEX()
                     394     ; 功能:分析一条HEX记录(把Intel HEX记录的文本转换成IntelHEX结构)
                     395     ; 参数:hex[]是记录的文本一行内容
                     396     ;       转换后的结果保存在IntelHEX结构中
                     397     ; 返回:1-转换成功
                     398     ;       0-HEX记录文本中有错误
                     399     ; *******************************************************************************/
                     400     ; bit AnalyseHEX(CIntelHEX idata *IntelHEX, char pdata *hex)
                     401     
----                 402             RSEG  ?PR?_AnalyseHEX?MAIN
0000                 403     _AnalyseHEX:
                     404             USING   0
                     405                             ; SOURCE LINE # 128
0000 8F00     F      406             MOV     IntelHEX?740,R7
0002 8D00     F      407             MOV     hex?741,R5
                     408     ; {
                     409                             ; SOURCE LINE # 129
                     410     ;       unsigned char i;
                     411     ;       unsigned char j;
                     412     ;       unsigned char t;
                     413     ;       unsigned char n;
                     414     ;       unsigned char cc;
                     415     ;       UnionInt x;
                     416     ; //检查冒号
                     417     ;       if ( hex[0] != ':' ) return 0;
                     418                             ; SOURCE LINE # 137
0004 A800     F      419             MOV     R0,hex?741
0006 E2              420             MOVX    A,@R0
0007 643A            421             XRL     A,#03AH
0009 6002            422             JZ      ?C0008
000B C3              423             CLR     C
000C 22              424             RET     
000D                 425     ?C0008:
                     426     ; //检查长度
                     427     ;       t = (toint(hex[1])<<4) + toint(hex[2]);
                     428                             ; SOURCE LINE # 139
000D E500     F      429             MOV     A,hex?741
000F 04              430             INC     A
0010 F8              431             MOV     R0,A
0011 E2              432             MOVX    A,@R0
0012 FF              433             MOV     R7,A
0013 120000   F      434             LCALL   _toint
0016 EF              435             MOV     A,R7
0017 C4              436             SWAP    A
0018 54F0            437             ANL     A,#0F0H
001A FE              438             MOV     R6,A

⌨️ 快捷键说明

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