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

📄 arm_00_os_main.lst

📁 是实时操作系统uc/os的原代码,写了头文件
💻 LST
字号:
ARM COMPILER V2.50a,  ARM_00_OS_main                                                       28/08/06  09:18:52  PAGE 1   


ARM COMPILER V2.50a, COMPILATION OF MODULE ARM_00_OS_main
OBJECT MODULE PLACED IN ARM_00_OS_main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe ARM_00_OS_main.c THUMB DEBUG TABS(4) 

stmt  level    source

    1          /**********************************************************************************************
    2          本程序只供学习使用,不得用于其它任何用途,否则后果自负。
    3          
    4            ARM_00_OS_main.c file
    5          
    6            LPC213x上的操作系统——ARM_00_OS
    7          
    8            作者:Computer-lov
    9            建立日期:2006-5-1
   10            修改日期:2006-5-15
   11            最后修改时间:2006-08-25
   12            版本:V1.0
   13            版权所有,盗版必究。
   14            任何技术问题可到我的博客上留言:    http://computer00.21ic.org
   15            Copyright(C) Computer-lov 2006-2016
   16            All rights reserved
   17          **********************************************************************************************/
   18          
   19          #include "CPU.H"
   20          
   21          #include "My_type.h"
   22          #include "LED.H"
   23          #include "interrupt.h"
   24          #include "ARM_00_OS_TaskSwitch.H"
   25          #include "ARM_00_OS_Core.H"
   26          #include "UART.H"
   27          #include "KEYS.H"
   28          
   29          /*********************************************************************************************/
   30          void SysClkInit(void)
   31          {
   32   1       PLLCON=0x01;     //Enable PLL
   33   1       PLLCFG=0x24;     //set M=4,P=2    so the core clock is about 5*11.0592M
   34   1       PLLFEED=0xAA;
   35   1       PLLFEED=0x55;    //send PLL feed sequence
   36   1      
   37   1       while((PLLSTAT&(1<<10))==0);     //Wait for PLL Locked
   38   1      
   39   1       PLLCON=3;        //Enable and connect PLL
   40   1       PLLFEED=0xAA;
   41   1       PLLFEED=0x55;   //send PLL feed sequence
   42   1      
   43   1       VPBDIV=0x01;   //VPB clock set. 0x01 --- same as the core clock
   44   1              
   45   1       MAMCR=0x00;     
   46   1       MAMTIM=0x03;    //set MAMTIM to 3cclk for core clock >40MHz
   47   1       MAMCR=0x02;     //use MAM
   48   1      }
   49          ///////////////////////////////////////////////////////////////////////////////////////////////
   50          
   51          /**********************************************************************************************
   52          main函数
   53          **********************************************************************************************/
   54          void main(void)
   55          {
   56   1      
   57   1       DisEnableInterrupt(OS_I_Bit | OS_F_Bit);  //关中断
   58   1       
   59   1       SysClkInit();  //系统时钟初始化
ARM COMPILER V2.50a,  ARM_00_OS_main                                                       28/08/06  09:18:52  PAGE 2   

   60   1       
   61   1       UART_init();   //串口初始化
   62   1       
   63   1       DelayXms(100);  //延迟100ms
   64   1       
   65   1       cls();         //清屏
   66   1       
   67   1       prints("SystemStart",1);  //显示开机信息
   68   1      
   69   1       OSInit();   //操作系统初始化
   70   1      
   71   1       DelayXms(2000);   //延时2S。软件仿真时最好去掉该句,否则有得你等^_^
   72   1      
   73   1       OSEnterCritical();  //进入临界段
   74   1       
   75   1       EnableInterrupt(OS_I_Bit | OS_F_Bit);  //开中断
   76   1       
   77   1       OSTickInit();  //系统时钟节拍初始化
   78   1      
   79   1       OSStart((uint32)OSSystemIdle,OS_THUMB_MODE);  //系统开始运行
   80   1       
   81   1      }
   82          //////////////////////////////////End of function//////////////////////////////////////////////
ARM COMPILER V2.50a,  ARM_00_OS_main                                                       28/08/06  09:18:52  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (DisEnableInterrupt?T)
 EXTERN CODE16 (EnableInterrupt?T)
 EXTERN CODE16 (OSStart?T)
 EXTERN CODE16 (OSInit?T)
 EXTERN CODE16 (OSTickInit?T)
 EXTERN CODE16 (OSSystemIdle?T)
 EXTERN CODE16 (OSEnterCritical?T)
 EXTERN CODE16 (UART_init?T)
 EXTERN CODE16 (prints?T)
 EXTERN CODE16 (cls?T)
 EXTERN CODE16 (DelayXms?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         SysClkInit?T
 PUBLIC         main



*** DATA SEGMENT '?CON?ARM_00_OS_main':
 00000000          ??S_1:
 00000000            DB          'SystemStart',0x00

*** CODE SEGMENT '?PR?SysClkInit?T?ARM_00_OS_main':
   32:  PLLCON=0x01;     //Enable PLL
 00000000  2101      MOV         R1,#0x1
 00000002  4800      LDR         R0,=0xE01FC080
 00000004  7001      STRB        R1,[R0,#0x0]
   33:  PLLCFG=0x24;     //set M=4,P=2    so the core clock is about 5*11.0592M
 00000006  2124      MOV         R1,#0x24
 00000008  4800      LDR         R0,=0xE01FC084
 0000000A  7001      STRB        R1,[R0,#0x0]
   34:  PLLFEED=0xAA;
 0000000C  21AA      MOV         R1,#0xAA
 0000000E  4800      LDR         R0,=0xE01FC08C
 00000010  7001      STRB        R1,[R0,#0x0]
   35:  PLLFEED=0x55;    //send PLL feed sequence
 00000012  2155      MOV         R1,#0x55
 00000014  4800      LDR         R0,=0xE01FC08C
 00000016  7001      STRB        R1,[R0,#0x0]
   37:  while((PLLSTAT&(1<<10))==0);     //Wait for PLL Locked
 00000018          L_1:
 00000018  4800      LDR         R0,=0xE01FC088
 0000001A  8800      LDRH        R0,[R0,#0x0]
 0000001C  4800      LDR         R1,=0x400
 0000001E  4208      TST         R0,R1
 00000020  D0FA      BEQ         L_1  ; T=0x00000018
   39:  PLLCON=3;        //Enable and connect PLL
 00000022  2103      MOV         R1,#0x3
 00000024  4800      LDR         R0,=0xE01FC080
 00000026  7001      STRB        R1,[R0,#0x0]
   40:  PLLFEED=0xAA;
 00000028  22AA      MOV         R2,#0xAA
 0000002A  4800      LDR         R0,=0xE01FC08C
 0000002C  7002      STRB        R2,[R0,#0x0]
   41:  PLLFEED=0x55;   //send PLL feed sequence
 0000002E  2255      MOV         R2,#0x55
 00000030  4800      LDR         R0,=0xE01FC08C
 00000032  7002      STRB        R2,[R0,#0x0]
   43:  VPBDIV=0x01;   //VPB clock set. 0x01 --- same as the core clock
 00000034  2201      MOV         R2,#0x1
 00000036  4800      LDR         R0,=0xE01FC100
 00000038  7002      STRB        R2,[R0,#0x0]
   45:  MAMCR=0x00;     
 0000003A  2200      MOV         R2,#0x0
ARM COMPILER V2.50a,  ARM_00_OS_main                                                       28/08/06  09:18:52  PAGE 4   

 0000003C  4800      LDR         R0,=0xE01FC000
 0000003E  7002      STRB        R2,[R0,#0x0]
   46:  MAMTIM=0x03;    //set MAMTIM to 3cclk for core clock >40MHz
 00000040  4800      LDR         R0,=0xE01FC004
 00000042  7001      STRB        R1,[R0,#0x0]
   47:  MAMCR=0x02;     //use MAM
 00000044  2102      MOV         R1,#0x2
 00000046  4800      LDR         R0,=0xE01FC000
 00000048  7001      STRB        R1,[R0,#0x0]
   48: }
 0000004A  4770      BX          R14
 0000004C          ENDP ; 'SysClkInit?T'


*** CODE SEGMENT '?PR?main?ARM_00_OS_main':
   54: void main(void)
 00000000  B500      PUSH        {LR}
   57:  DisEnableInterrupt(OS_I_Bit | OS_F_Bit);  //关中断
 00000002  20C0      MOV         R0,#0xC0
 00000004  DF00      SWI         0x0 ; DisEnableInterrupt?T
   59:  SysClkInit();  //系统时钟初始化
 00000006  F7FF      BL          SysClkInit?T  ; T=0x0001  (1)
 00000008  FFFB      BL          SysClkInit?T  ; T=0x0001  (2)
   61:  UART_init();   //串口初始化
 0000000A  F7FF      BL          UART_init?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          UART_init?T  ; T=0x0001  (2)
   63:  DelayXms(100);  //延迟100ms
 0000000E  2064      MOV         R0,#0x64
 00000010  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 00000012  FFF6      BL          DelayXms?T  ; T=0x0001  (2)
   65:  cls();         //清屏
 00000014  F7FF      BL          cls?T  ; T=0x0001  (1)
 00000016  FFF4      BL          cls?T  ; T=0x0001  (2)
   67:  prints("SystemStart",1);  //显示开机信息
 00000018  4800      LDR         R0,=??S_1 ; ??S_1
 0000001A  2101      MOV         R1,#0x1
 0000001C  F7FF      BL          prints?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          prints?T  ; T=0x0001  (2)
   69:  OSInit();   //操作系统初始化
 00000020  F7FF      BL          OSInit?T  ; T=0x0001  (1)
 00000022  FFEE      BL          OSInit?T  ; T=0x0001  (2)
   71:  DelayXms(2000);   //延时2S。软件仿真时最好去掉该句,否则有得你等^_^
 00000024  4800      LDR         R0,=0x7D0
 00000026  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 00000028  FFEB      BL          DelayXms?T  ; T=0x0001  (2)
   73:  OSEnterCritical();  //进入临界段
 0000002A  F7FF      BL          OSEnterCritical?T  ; T=0x0001  (1)
 0000002C  FFE9      BL          OSEnterCritical?T  ; T=0x0001  (2)
   75:  EnableInterrupt(OS_I_Bit | OS_F_Bit);  //开中断
 0000002E  20C0      MOV         R0,#0xC0
 00000030  DF01      SWI         0x1 ; EnableInterrupt?T
   77:  OSTickInit();  //系统时钟节拍初始化
 00000032  F7FF      BL          OSTickInit?T  ; T=0x0001  (1)
 00000034  FFE5      BL          OSTickInit?T  ; T=0x0001  (2)
   79:  OSStart((uint32)OSSystemIdle,OS_THUMB_MODE);  //系统开始运行
 00000036  4800      LDR         R0,=OSSystemIdle?T ; OSSystemIdle?T
 00000038  2120      MOV         R1,#0x20
 0000003A  DF02      SWI         0x2 ; OSStart?T
   81: }
 0000003C  BC08      POP         {R3}
 0000003E  4718      BX          R3
 00000040          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =        12
ARM COMPILER V2.50a,  ARM_00_OS_main                                                       28/08/06  09:18:52  PAGE 5   

End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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