📄 disp_routines.lst
字号:
ARM COMPILER V2.00d, disp_routines 23/10/05 18:16:19 PAGE 1
ARM COMPILER V2.00d, COMPILATION OF MODULE disp_routines
OBJECT MODULE PLACED IN .\Flash\disp_routines.obj
COMPILER INVOKED BY: C:\KEIL\ARM\BIN\CA.EXE disp_routines.c THUMB OPTIMIZE(7,SPEED) BROWSE DEBUG PRINT(.\FLASH\DISP_ROUT
-INES.LST) TABS(4) OBJECT(.\Flash\disp_routines.obj)
stmt level source
1 /******************************************************************************/
2 /* This file is part of the kp development */
3 /* Copyright kp */
4 /******************************************************************************/
5 /* */
6 /* Display routines */
7 /* */
8 /******************************************************************************/
9
10 #include <LPC213x.H> // LPC21xx definitions
11 #include <bsp.h> // include board support package
12
13 extern int putchar (int ch); // Write character to Serial Port
14
15 #define DIM 0x04
16 #define CLR 0x0D
17 #define SC 0x10
18
19 void disp_lum(unsigned char x) {
20 1 unsigned char x_data;
21 1 switch(x) {
22 2 case 0 : x_data = 0x00; break;
23 2 case 1 : x_data = 0x20; break;
24 2 case 2 : x_data = 0x40; break;
25 2 case 3 : x_data = 0x60; break;
26 2 case 4 : x_data = 0x80; break;
27 2 case 5 : x_data = 0xFF; break;
28 2 default: x_data = 0x40;
29 2 }
30 1 putchar(DIM);
31 1 putchar(x_data);
32 1 }
33
34 void disp_clr(void) {
35 1 putchar(CLR);
36 1 }
37
38 void disp_set_cursor(unsigned char r, unsigned char c) {
39 1 // r is for row number (0 & 1)
40 1 // c is for column number (0 to 23)
41 1 unsigned char sc_data = 0;
42 1 if (r==0) sc_data=c;
43 1 else sc_data=c+0x14;
44 1 putchar(SC);
45 1 putchar(sc_data);
46 1 }
ARM COMPILER V2.00d, disp_routines 23/10/05 18:16:19 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (putchar?T)
*** PUBLICS:
PUBLIC disp_lum?T
PUBLIC disp_clr?T
PUBLIC disp_set_cursor?T
*** CODE SEGMENT '?PR?disp_lum?T?disp_routines':
19: void disp_lum(unsigned char x) {
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'x' assigned to Register 'R0' ----
00000002 ---- Variable 'x_data' assigned to Register 'R4' ----
00000002 ; SCOPE-START
21: switch(x) {
00000002 1C01 MOV R1,R0 ; x
00000004 3901 SUB R1,#0x1
00000006 D00B BEQ L_4 ; T=0x00000020
00000008 3901 SUB R1,#0x1
0000000A D00B BEQ L_5 ; T=0x00000024
0000000C 3901 SUB R1,#0x1
0000000E D00B BEQ L_6 ; T=0x00000028
00000010 3901 SUB R1,#0x1
00000012 D00B BEQ L_7 ; T=0x0000002C
00000014 3901 SUB R1,#0x1
00000016 D00B BEQ L_8 ; T=0x00000030
00000018 3105 ADD R1,#0x5
0000001A D10B BNE L_3 ; T=0x00000034
22: case 0 : x_data = 0x00; break;
0000001C L_2:
0000001C 2400 MOV R4,#0x0
0000001E E00A B L_1 ; T=0x00000036
23: case 1 : x_data = 0x20; break;
00000020 L_4:
00000020 2420 MOV R4,#0x20
00000022 E008 B L_1 ; T=0x00000036
24: case 2 : x_data = 0x40; break;
00000024 L_5:
00000024 2440 MOV R4,#0x40
00000026 E006 B L_1 ; T=0x00000036
25: case 3 : x_data = 0x60; break;
00000028 L_6:
00000028 2460 MOV R4,#0x60
0000002A E004 B L_1 ; T=0x00000036
26: case 4 : x_data = 0x80; break;
0000002C L_7:
0000002C 2480 MOV R4,#0x80
0000002E E002 B L_1 ; T=0x00000036
27: case 5 : x_data = 0xFF; break;
00000030 L_8:
00000030 24FF MOV R4,#0xFF
00000032 E000 B L_1 ; T=0x00000036
28: default: x_data = 0x40;
00000034 L_3:
00000034 2440 MOV R4,#0x40
29: }
00000036 L_1:
30: putchar(DIM);
00000036 2004 MOV R0,#0x4
00000038 F7FF BL putchar?T ; T=0x0001 (1)
0000003A FFE2 BL putchar?T ; T=0x0001 (2)
31: putchar(x_data);
0000003E 0620 LSL R0,R4,#0x18 ; x_data
ARM COMPILER V2.00d, disp_routines 23/10/05 18:16:19 PAGE 3
00000040 0E00 LSR R0,R0,#0x18 ; x_data
00000042 F7FF BL putchar?T ; T=0x0001 (1)
00000044 FFDD BL putchar?T ; T=0x0001 (2)
00000048 ; SCOPE-END
32: }
00000048 BC10 POP {R4}
0000004A BC08 POP {R3}
0000004C 4718 BX R3
0000004E ENDP ; 'disp_lum?T'
*** CODE SEGMENT '?PR?disp_clr?T?disp_routines':
34: void disp_clr(void) {
00000000 B500 PUSH {LR}
35: putchar(CLR);
00000002 200D MOV R0,#0xD
00000004 F7FF BL putchar?T ; T=0x0001 (1)
00000006 FFFC BL putchar?T ; T=0x0001 (2)
36: }
0000000A BC08 POP {R3}
0000000C 4718 BX R3
0000000E ENDP ; 'disp_clr?T'
*** CODE SEGMENT '?PR?disp_set_cursor?T?disp_routines':
38: void disp_set_cursor(unsigned char r, unsigned char c) {
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'c' assigned to Register 'R1' ----
00000002 ---- Variable 'r' assigned to Register 'R0' ----
00000002 ---- Variable 'sc_data' assigned to Register 'R4' ----
00000002 ; SCOPE-START
42: if (r==0) sc_data=c;
00000002 0600 LSL R0,R0,#0x18 ; r
00000004 0E00 LSR R0,R0,#0x18 ; r
00000006 2800 CMP R0,#0x0 ; r
00000008 D101 BNE L_9 ; T=0x0000000E
0000000A 1C0C MOV R4,R1 ; sc_data
0000000C E002 B L_10 ; T=0x00000014
0000000E L_9:
43: else sc_data=c+0x14;
0000000E 060C LSL R4,R1,#0x18 ; c
00000010 0E24 LSR R4,R4,#0x18 ; c
00000012 3414 ADD R4,#0x14
00000014 L_10:
44: putchar(SC);
00000014 2010 MOV R0,#0x10
00000016 F7FF BL putchar?T ; T=0x0001 (1)
00000018 FFF3 BL putchar?T ; T=0x0001 (2)
45: putchar(sc_data);
0000001C 0620 LSL R0,R4,#0x18 ; sc_data
0000001E 0E00 LSR R0,R0,#0x18 ; sc_data
00000020 F7FF BL putchar?T ; T=0x0001 (1)
00000022 FFEE BL putchar?T ; T=0x0001 (2)
00000026 ; SCOPE-END
00000026 BC10 POP {R4}
00000028 BC08 POP {R3}
0000002A 4718 BX R3
0000002C ENDP ; 'disp_set_cursor?T'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -