📄 main.lst
字号:
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 + -