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

📄 ledswitch.txt

📁 工厂环境污染控制数据采集器
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 939] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\obj\ledswitch.o --depend=.\obj\ledswitch.d --device=DARMP --apcs=interwork -O0 -IC:\Keil305\ARM\INC\Philips -D__MICROLIB --omf_browse=.\obj\ledswitch.crf LEDswitch.c]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  init PROC
;;;32        /* I/O Ports configured as Output (Push-pull) */
;;;33        FIO2DIR  = 0x000000FF;
000000  e3a000ff          MOV      r0,#0xff
000004  e59f1270          LDR      r1,|L1.636|
000008  e5810040          STR      r0,[r1,#0x40]
;;;34        FIO2MASK = 0x00000000;
00000c  e3a00000          MOV      r0,#0
000010  e5810050          STR      r0,[r1,#0x50]
;;;35        FIO2PIN  = 0x00000000;
000014  e5810054          STR      r0,[r1,#0x54]
;;;36        PINSEL10 = 0;
000018  e59f1260          LDR      r1,|L1.640|
00001c  e5810028          STR      r0,[r1,#0x28]
;;;37     
;;;38        /* Timer 1 as interval timer, reload to 100ms. */
;;;39        T1TCR = 1;
000020  e3a00001          MOV      r0,#1
000024  e2411909          SUB      r1,r1,#0x24000
000028  e5810004          STR      r0,[r1,#4]
;;;40        T1MCR = 3;
00002c  e3a00003          MOV      r0,#3
000030  e5810014          STR      r0,[r1,#0x14]
;;;41        T1MR0 = TCNT - 1;
000034  e59f0248          LDR      r0,|L1.644|
000038  e5810018          STR      r0,[r1,#0x18]
;;;42     
;;;43        /* Configure UART1 for 115200 baud. */
;;;44        PINSEL0 = 0x40000000;                     /* Enable TxD1 pin              */
00003c  e3a00101          MOV      r0,#0x40000000
000040  e2811909          ADD      r1,r1,#0x24000
000044  e5810000          STR      r0,[r1,#0]
;;;45        PINSEL1 = 0x00000001;                     /* Enable RxD1 pin              */
000048  e3a00001          MOV      r0,#1
00004c  e5810004          STR      r0,[r1,#4]
;;;46        U1LCR = 0x83;                             /* 8 bits, no Parity, 1 Stop bit*/
000050  e3a00083          MOV      r0,#0x83
000054  e2411907          SUB      r1,r1,#0x1c000
000058  e581000c          STR      r0,[r1,#0xc]
;;;47        U1DLL = 3;                                /* for 12MHz PCLK Clock         */
00005c  e3a00003          MOV      r0,#3
000060  e5810000          STR      r0,[r1,#0]
;;;48        U1FDR = 0x67;                             /* Fractional Divider           */
000064  e3a00067          MOV      r0,#0x67
000068  e5810028          STR      r0,[r1,#0x28]
;;;49        U1LCR = 0x03;                             /* DLAB = 0                     */
00006c  e3a00003          MOV      r0,#3
000070  e581000c          STR      r0,[r1,#0xc]
;;;50     }
000074  e12fff1e          BX       lr
;;;51     
                          ENDP

                  init_display PROC
;;;61        //          " LEDsw. example ");
;;;62     }
000078  e12fff1e          BX       lr
;;;63     
                          ENDP

                  timer_poll PROC
;;;66     
;;;67     static void timer_poll () {
00007c  e92d4010          PUSH     {r4,lr}
;;;68        /* System tick timer running in poll mode */
;;;69     
;;;70        if (T1IR & 1) {
000080  e59f0200          LDR      r0,|L1.648|
000084  e5900000          LDR      r0,[r0,#0]
000088  e3100001          TST      r0,#1
00008c  0a000003          BEQ      |L1.160|
;;;71           T1IR = 1;
000090  e3a00001          MOV      r0,#1
000094  e59f11ec          LDR      r1,|L1.648|
000098  e5810000          STR      r0,[r1,#0]
;;;72           /* Timer tick every 100 ms */
;;;73           timer_tick ();
00009c  ebfffffe          BL       timer_tick
                  |L1.160|
;;;74        }
;;;75     }
0000a0  e8bd4010          POP      {r4,lr}
0000a4  e12fff1e          BX       lr
;;;76     
                          ENDP

                  fputc PROC
;;;82     
;;;83        if (ch == '\n')  {
0000a8  e350000a          CMP      r0,#0xa
0000ac  1a000007          BNE      |L1.208|
;;;84           while (!(U1LSR & 0x20));
0000b0  e1a00000          MOV      r0,r0
                  |L1.180|
0000b4  e59f21d0          LDR      r2,|L1.652|
0000b8  e5922014          LDR      r2,[r2,#0x14]
0000bc  e3120020          TST      r2,#0x20
0000c0  0afffffb          BEQ      |L1.180|
;;;85           U1THR = '\r';                          /* output CR                    */
0000c4  e3a0200d          MOV      r2,#0xd
0000c8  e59f31bc          LDR      r3,|L1.652|
0000cc  e5832000          STR      r2,[r3,#0]
                  |L1.208|
;;;86        }
;;;87        while (!(U1LSR & 0x20));
0000d0  e1a00000          MOV      r0,r0
                  |L1.212|
0000d4  e59f21b0          LDR      r2,|L1.652|
0000d8  e5922014          LDR      r2,[r2,#0x14]
0000dc  e3120020          TST      r2,#0x20
0000e0  0afffffb          BEQ      |L1.212|
;;;88        return (U1THR = ch);
0000e4  e59f21a0          LDR      r2,|L1.652|
0000e8  e5820000          STR      r0,[r2,#0]
;;;89     }
0000ec  e12fff1e          BX       lr
;;;90     
                          ENDP

                  procrec PROC
;;;94     void procrec (U8 *buf) {
;;;95        switch (buf[0]) {
0000f0  e5d01000          LDRB     r1,[r0,#0]
0000f4  e3510001          CMP      r1,#1
0000f8  1a000007          BNE      |L1.284|
;;;96           case BLINKLED:
0000fc  e1a00000          MOV      r0,r0
;;;97              FIO2SET =  buf[1];
000100  e5d01001          LDRB     r1,[r0,#1]
000104  e59f2170          LDR      r2,|L1.636|
000108  e5821058          STR      r1,[r2,#0x58]
;;;98              FIO2CLR = ~buf[1];
00010c  e5d01001          LDRB     r1,[r0,#1]
000110  e1e01001          MVN      r1,r1
000114  e582105c          STR      r1,[r2,#0x5c]
;;;99              break;
000118  e1a00000          MOV      r0,r0
                  |L1.284|
00011c  e1a00000          MOV      r0,r0
;;;100       }
;;;101    }
000120  e12fff1e          BX       lr
;;;102    /*--------------------------- UDP socket ------------------------------------*/
                          ENDP

                  udp_callback PROC
;;;103    
;;;104    U16 udp_callback (U8 soc, U8 *rip, U16 rport, U8 *buf, U16 len) {
000124  e92d40f0          PUSH     {r4-r7,lr}
000128  e1a04000          MOV      r4,r0
00012c  e1a05001          MOV      r5,r1
000130  e1a06002          MOV      r6,r2
000134  e59d7014          LDR      r7,[sp,#0x14]
;;;105       rip  = rip;
000138  e1a00000          MOV      r0,r0
;;;106       rport= rport;
00013c  e1a00000          MOV      r0,r0
;;;107       len  = len;
000140  e1a00000          MOV      r0,r0
;;;108    
;;;109       if (soc != socket_udp) {
000144  e59f0144          LDR      r0,|L1.656|
000148  e5d00000          LDRB     r0,[r0,#0]  ; socket_udp
00014c  e1540000          CMP      r4,r0
000150  0a000002          BEQ      |L1.352|
;;;110          /* Check if this is the socket we are connected to */
;;;111          return (0);
000154  e3a00000          MOV      r0,#0
                  |L1.344|
000158  e8bd40f0          POP      {r4-r7,lr}
;;;112       }
;;;113    
;;;114       procrec(buf);
;;;115       return (0);
;;;116    }
00015c  e12fff1e          BX       lr
                  |L1.352|
000160  e1a00003          MOV      r0,r3                 ;114
000164  ebfffffe          BL       procrec
000168  e3a00000          MOV      r0,#0                 ;115
00016c  eafffff9          B        |L1.344|
;;;117    
                          ENDP

                  tcp_callback PROC
;;;119    
;;;120    U16 tcp_callback (U8 soc, U8 evt, U8 *ptr, U16 par) {
000170  e92d4070          PUSH     {r4-r6,lr}
000174  e1a04000          MOV      r4,r0
000178  e1a05001          MOV      r5,r1
00017c  e1a06002          MOV      r6,r2
;;;121       /* This function is called by the TCP module on TCP event */
;;;122       /* Check the 'Net_Config.h' for possible events.          */
;;;123    
;;;124       par = par;
000180  e1a00000          MOV      r0,r0
;;;125    
;;;126       if (soc != socket_tcp) {
000184  e59f0108          LDR      r0,|L1.660|
000188  e5d00000          LDRB     r0,[r0,#0]  ; socket_tcp
00018c  e1540000          CMP      r4,r0
000190  0a000002          BEQ      |L1.416|
;;;127          return (1);
000194  e3a00001          MOV      r0,#1
                  |L1.408|
000198  e8bd4070          POP      {r4-r6,lr}
;;;128       }
;;;129    
;;;130       switch (evt) {
;;;131          case TCP_EVT_DATA:
;;;132             /* TCP data frame has arrived, data is located at *par1, */
;;;133             /* data length is par2. Allocate buffer to send reply.   */
;;;134             procrec(ptr);
;;;135             break;
;;;136    
;;;137          case TCP_EVT_CONREQ:
;;;138             /* Remote peer requested connect, accept it */
;;;139             return (1);
;;;140    
;;;141          case TCP_EVT_CONNECT:
;;;142             /* The TCP socket is connected */
;;;143             return (1);
;;;144       }
;;;145       return (0);
;;;146    }
00019c  e12fff1e          BX       lr
                  |L1.416|
0001a0  e3550000          CMP      r5,#0                 ;130
0001a4  0a000007          BEQ      |L1.456|
0001a8  e3550001          CMP      r5,#1                 ;130
0001ac  0a000008          BEQ      |L1.468|
0001b0  e3550005          CMP      r5,#5                 ;130
0001b4  1a000009          BNE      |L1.480|
0001b8  e1a00000          MOV      r0,r0                 ;131
0001bc  e1a00006          MOV      r0,r6                 ;134
0001c0  ebfffffe          BL       procrec
0001c4  ea000005          B        |L1.480|
                  |L1.456|
0001c8  e1a00000          MOV      r0,r0                 ;137
0001cc  e3a00001          MOV      r0,#1                 ;139
0001d0  eafffff0          B        |L1.408|
                  |L1.468|
0001d4  e1a00000          MOV      r0,r0                 ;141
0001d8  e3a00001          MOV      r0,#1                 ;143
0001dc  eaffffed          B        |L1.408|
                  |L1.480|
0001e0  e1a00000          MOV      r0,r0                 ;135
0001e4  e3a00000          MOV      r0,#0                 ;145
0001e8  eaffffea          B        |L1.408|
;;;147    
                          ENDP

                  main PROC
;;;150    
;;;151    int main (void) {
0001ec  e92d4010          PUSH     {r4,lr}
;;;152       /* Main Thread of the TcpNet */
;;;153    
;;;154       init();
0001f0  ebfffffe          BL       init
;;;155       //init_display();
;;;156       init_TcpNet();
0001f4  ebfffffe          BL       init_TcpNet
;;;157    
;;;158       /* Initialize UDP Socket and start listening */
;;;159       socket_udp = udp_get_socket (0, UDP_OPT_SEND_CS | UDP_OPT_CHK_CS, udp_callback);
0001f8  e24f20dc          ADR      r2,udp_callback
0001fc  e3a01003          MOV      r1,#3
000200  e3a00000          MOV      r0,#0
000204  ebfffffe          BL       udp_get_socket
000208  e59f1080          LDR      r1,|L1.656|
00020c  e5c10000          STRB     r0,[r1,#0]  ; socket_udp
;;;160       if (socket_udp != 0) {
000210  e2810000          ADD      r0,r1,#0
000214  e5d00000          LDRB     r0,[r0,#0]  ; socket_udp
000218  e3500000          CMP      r0,#0
00021c  0a000003          BEQ      |L1.560|
;;;161          udp_open (socket_udp, PORT_NUM);
000220  e59f1070          LDR      r1,|L1.664|
000224  e59f0064          LDR      r0,|L1.656|
000228  e5d00000          LDRB     r0,[r0,#0]  ; socket_udp
00022c  ebfffffe          BL       udp_open
                  |L1.560|
;;;162       }
;;;163    
;;;164       /* Initialize TCP Socket and start listening */
;;;165       socket_tcp = tcp_get_socket (TCP_TYPE_SERVER, 0, 10, tcp_callback);
000230  e24f30c8          ADR      r3,tcp_callback
000234  e3a0200a          MOV      r2,#0xa
000238  e3a01000          MOV      r1,#0
00023c  e3a00001          MOV      r0,#1
000240  ebfffffe          BL       tcp_get_socket
000244  e59f1048          LDR      r1,|L1.660|
000248  e5c10000          STRB     r0,[r1,#0]  ; socket_tcp
;;;166       if (socket_tcp != 0) {
00024c  e2810000          ADD      r0,r1,#0
000250  e5d00000          LDRB     r0,[r0,#0]  ; socket_tcp
000254  e3500000          CMP      r0,#0
000258  0a000003          BEQ      |L1.620|
;;;167          tcp_listen (socket_tcp, PORT_NUM);
00025c  e59f1034          LDR      r1,|L1.664|
000260  e59f002c          LDR      r0,|L1.660|
000264  e5d00000          LDRB     r0,[r0,#0]  ; socket_tcp
000268  ebfffffe          BL       tcp_listen
                  |L1.620|
;;;168       }
;;;169    
;;;170       while (1) {
00026c  ea000001          B        |L1.632|
                  |L1.624|
;;;171          timer_poll ();
000270  ebfffffe          BL       timer_poll
;;;172          main_TcpNet ();
000274  ebfffffe          BL       main_TcpNet
                  |L1.632|
000278  eafffffc          B        |L1.624|
;;;173       }
;;;174    }
;;;175    
                          ENDP

                  |L1.636|
00027c  3fffc000          DCD      0x3fffc000
                  |L1.640|
000280  e002c000          DCD      0xe002c000
                  |L1.644|
000284  00124f7f          DCD      0x00124f7f
                  |L1.648|
000288  e0008000          DCD      0xe0008000
                  |L1.652|
00028c  e0010000          DCD      0xe0010000
                  |L1.656|
000290  00000000          DCD      socket_udp
                  |L1.660|
000294  00000000          DCD      socket_tcp
                  |L1.664|
000298  000003e9          DCD      0x000003e9

                          AREA ||.data||, DATA, ALIGN=0

                  socket_tcp
000000  00                DCB      0x00
                  socket_udp
000001  00                DCB      0x00

                  __ARM_use_no_argv EQU 0

⌨️ 快捷键说明

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