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

📄 main.lst

📁 ADC Demo Source for LPC214X. 这是214X的ADC的应用例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
  538   2          os_dly_wait (10);//延时100mS
  539   2      
  540   2        }
  541   1      }
  542          
  543          void AdcTask (void) __task {
  544   1      OS_RESULT result;
  545   1      unsigned int i; 
  546   1      uint32 AdcVal;
  547   1      unsigned char str[17];
  548   1        AdcInit();
  549   1        for (;;) {
  550   2          result = os_evt_wait_or(0xffff, 0xffff);//等待BeepTask任务事件发生
  551   2          if(result == OS_R_EVT) {
  552   3            i = os_evt_get();
  553   3            switch(i) {
  554   4              case 0x0001://  
  555   4                   AdcVal = GetAdcVal(1);//
  556   4                   sprintf(str, "Adc1=%04X %1d.%03dV", AdcVal, AdcVal / 1000, AdcVal % 1000);
  557   4        SetLcdDisplayPos(0, 0);//汉字定位到上行左端
  558   4        LcdDisplayString(str);
  559   4                   break;
  560   4              case 0x0002:  
  561   4                   break;
  562   4              case 0x0003://显示 "Adc3=05DD 1.501V" 或 "Adc3=05DB 1.499V"
  563   4                   AdcVal = GetAdcVal(3);//
  564   4                   sprintf(str, "Adc3=%04X %1d.%03dV", AdcVal, AdcVal / 1000, AdcVal % 1000);
  565   4        SetLcdDisplayPos(1, 0);//汉字定位到上行左端
  566   4        LcdDisplayString(str);
  567   4                   break;
  568   4              case 0x0004:  
  569   4              case 0x0005://  
  570   4              case 0x0006://  
  571   4                            break;
  572   4              case 0x8001:  
  573   4              case 0x8002:  
  574   4              case 0x8003:  
  575   4              case 0x8004:  
  576   4              case 0x8005:  
  577   4              case 0x8006:  
  578   4                            break;
  579   4            }
  580   3          }
  581   2          os_dly_wait (1);//延时10mS
  582   2        }
  583   1      }
  584          
  585          void main (void) {
ARM COMPILER V2.42,  main                                                                  19/01/06  08:10:09  PAGE 10  

  586   1        if (SystemRamTest != 0x55aa55aa) {
  587   2          SystemInit();
  588   2          SystemRamTest = 0x55aa55aa;
  589   2        }
  590   1        else {
  591   2          SystemRamTest = 0x55aa55aa;
  592   2        }
  593   1        os_sys_init (MainTask);//启动ARTX,此函数并不返回main()
  594   1      }
ARM COMPILER V2.42,  main                                                                  19/01/06  08:10:09  PAGE 11  

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (os_tsk_create_user?T)
 EXTERN CODE16 (os_sys_init_user?T)
 EXTERN CODE16 (os_tsk_delete?T)
 EXTERN CODE16 (os_evt_wait?T)
 EXTERN CODE16 (os_evt_set?T)
 EXTERN CODE16 (os_evt_get?T)
 EXTERN CODE16 (os_dly_wait?T)
 EXTERN CODE16 (strlen?T)
 EXTERN CODE16 (sprintf?T)
 EXTERN CODE16 (?C?UDIV?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         ei?A
 PUBLIC         di?A
 PUBLIC         MainTask?T
 PUBLIC         KeyTask?T
 PUBLIC         LedTask?T
 PUBLIC         LednumTask?T
 PUBLIC         BeepTask?T
 PUBLIC         LcdTask?T
 PUBLIC         AdcTask?T
 PUBLIC         SystemInit?T
 PUBLIC         KeyInit?T
 PUBLIC         LcdInit?T
 PUBLIC         LedInit?T
 PUBLIC         LednumInit?T
 PUBLIC         BeepInit?T
 PUBLIC         AdcInit?T
 PUBLIC         MSPI_Init?T
 PUBLIC         MSPI_SendData?T
 PUBLIC         LedDisplay?T
 PUBLIC         SSP_Init?T
 PUBLIC         SSP_SendData?T
 PUBLIC         MSSP_Init?T
 PUBLIC         MSSP_SendData?T
 PUBLIC         LcdSendCommand?T
 PUBLIC         LcdSendData?T
 PUBLIC         _delay_loop_?T
 PUBLIC         LcdClearBuffer?T
 PUBLIC         LcdDisplayBuffers?T
 PUBLIC         SetLcdDisplayPos?T
 PUBLIC         LcdDisplayString?T
 PUBLIC         GetAdcVal?T
 PUBLIC         main
 PUBLIC         SystemRamTest
 PUBLIC         LcdBuffers
 PUBLIC         Main_Task
 PUBLIC         Key_Task
 PUBLIC         Led_Task
 PUBLIC         Lednum_Task
 PUBLIC         Beep_Task
 PUBLIC         Lcd_Task
 PUBLIC         Adc_Task



*** DATA SEGMENT '?CON?main':
 00000000          ??S_4:
 00000000            DB          'Adc3=%04X %1d.%03dV',0x00
 00000014          ??S_3:
 00000014            DB          'Adc1=%04X %1d.%03dV',0x00
 00000028          ??S_2:
 00000028            DB          '汉',0xD7,0xD6,'显示演示78',0x00
ARM COMPILER V2.42,  main                                                                  19/01/06  08:10:09  PAGE 12  

 00000037          ??S_1:
 00000037            DB          '汉',0xD7,0xD6,'显示演示56',0x00
 00000046          LedTab:
 00000046           BEGIN_INIT
 00000046  C0        DB          0xC0
 00000047  F9        DB          0xF9
 00000048  A4        DB          0xA4
 00000049  B0        DB          0xB0
 0000004A  99        DB          0x99
 0000004B  92        DB          0x92
 0000004C  82        DB          0x82
 0000004D  F8        DB          0xF8
 0000004E  80        DB          0x80
 0000004F  90        DB          0x90
 00000050  88        DB          0x88
 00000051  83        DB          0x83
 00000052  C6        DB          0xC6
 00000053  A1        DB          0xA1
 00000054  86        DB          0x86
 00000055  8E        DB          0x8E
 00000056           END_INIT

*** DATA SEGMENT '?DTN?main':
 00000000          SystemRamTest:
 00000000            DS          4
 00000004          Main_Task:
 00000004            DS          4
 00000008          Key_Task:
 00000008            DS          4
 0000000C          Led_Task:
 0000000C            DS          4
 00000010          Lednum_Task:
 00000010            DS          4
 00000014          Beep_Task:
 00000014            DS          4
 00000018          Lcd_Task:
 00000018            DS          4
 0000001C          Adc_Task:
 0000001C            DS          4
 00000020          LcdBuffers:
 00000020            DS          78



*** CODE SEGMENT '?PR?ei?A?main':
  137:     STMFD   SP,{R0}
 00000000  E90D0001  STMFD       R13,{R0}
  138:     MRS     R0, SPSR
 00000004  E14F0000  MRS         R0,SPSR
  139:     BIC     R0, R0, #0x80;//打开irq中断
 00000008  E3C00080  BIC         R0,R0,#0x0080
  140:     MSR     SPSR_c, R0
 0000000C  E161F000  MSR         SPSR_c,R0
  141:     LDMFD   SP,{R0}
 00000010  E89D0001  LDMFD       R13,{R0}
  143: }
 00000014  E12FFF1E  BX          R14
 00000018          ENDP ; 'ei?A'


*** CODE SEGMENT '?PR?di?A?main':
  149:     STMFD   SP,{R0}
 00000000  E90D0001  STMFD       R13,{R0}
  150:     MRS     R0, SPSR
 00000004  E14F0000  MRS         R0,SPSR
  151:     ORR     R0, R0, #0x80;//关闭irq中断
 00000008  E3800080  ORR         R0,R0,#0x0080
  152:     MSR     SPSR_c, R0
 0000000C  E161F000  MSR         SPSR_c,R0
  153:     LDMFD   SP,{R0}
 00000010  E89D0001  LDMFD       R13,{R0}
ARM COMPILER V2.42,  main                                                                  19/01/06  08:10:09  PAGE 13  

  155: }
 00000014  E12FFF1E  BX          R14
 00000018          ENDP ; 'di?A'


*** CODE SEGMENT '?PR?_delay_loop_?T?main':
   58: void _delay_loop_(unsigned int val)
 00000000  ---- Variable 'val' assigned to Register 'R0' ----
   59: {
 00000000            ; SCOPE-START
   61:   for(i = 0; i < val; i ++);
 00000000  2100      MOV         R1,#0x0
 00000002  ---- Variable 'i' assigned to Register 'R1' ----
 00000002  E000      B           L_3  ; T=0x00000006
 00000004          L_1:
 00000004  3101      ADD         R1,#0x1
 00000006          L_3:
 00000006  1C03      MOV         R3,R0 ; val
 00000008  1C0A      MOV         R2,R1 ; i
 0000000A  429A      CMP         R2,R3 ; i
 0000000C  D3FA      BCC         L_1  ; T=0x00000004
 0000000E            ; SCOPE-END
   62: }
 0000000E  4770      BX          R14
 00000010          ENDP ; '_delay_loop_?T'


*** CODE SEGMENT '?PR?AdcInit?T?main':
   66:   PINSEL1 |= (P0_28_AD0_1 << P0_28_PINSEL);// P0.28连接到AD0.1
 00000000  4800      LDR         R2,=0x1000000
 00000002  4800      LDR         R0,=0xE002C004
 00000004  6801      LDR         R1,[R0,#0x0]
 00000006  4311      ORR         R1,R2
 00000008  6001      STR         R1,[R0,#0x0]
   67:   PINSEL1 |= (P0_30_AD0_3 << P0_30_PINSEL);// P0.30连接到AD0.3
 0000000A  4800      LDR         R2,=0x10000000
 0000000C  4800      LDR         R0,=0xE002C004
 0000000E  6801      LDR         R1,[R0,#0x0]
 00000010  4311      ORR         R1,R2
 00000012  6001      STR         R1,[R0,#0x0]
   68: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'AdcInit?T'


*** CODE SEGMENT '?PR?GetAdcVal?T?main':
   70: uint32 GetAdcVal(unsigned char Chnum)
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; Chnum
 00000004  ---- Variable 'Chnum' assigned to Register 'R1' ----
   71: {
 00000004            ; SCOPE-START
   73:   Chnum &= 0x07;//Adc0~Adc7
 00000004  2007      MOV         R0,#0x7
 00000006  4001      AND         R1,R0
   75:   AD0CR = (1 << Chnum)                  |   // SEL=8,选择通道3                              不加电容       加电容
 00000008  1C08      MOV         R0,R1 ; Chnum
 0000000A  0600      LSL         R0,R0,#0x18 ; Chnum
 0000000C  0E00      LSR         R0,R0,#0x18
 0000000E  2101      MOV         R1,#0x1
 00000010  4081      LSL         R1,R0
 00000012  4800      LDR         R0,=0x1200100
 00000014  4301      ORR         R1,R0
 00000016  4800      LDR         R0,=0xE0034000
 00000018  6001      STR         R1,[R0,#0x0]
   90:   _delay_loop_(20);
 0000001A  2014      MOV         R0,#0x14
 0000001C  F7FF      BL          _delay_loop_?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          _delay_loop_?T  ; T=0x0001  (2)
   91:   ADC_Data = AD0DR;     // 读取ADC结果,并清除DONE标志位
 00000020  4800      LDR         R0,=0xE0034004
 00000022  6800      LDR         R0,[R0,#0x0]
ARM COMPILER V2.42,  main                                                                  19/01/06  08:10:09  PAGE 14  

   92:   AD0CR |= 1 << 24;                 // 进行第一次转换

⌨️ 快捷键说明

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