📄 evboard.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 11/Dec/2008 13:41:51 #
# Copyright 2004-2006 IAR Systems. All rights reserved. #
# #
# Core = plain #
# Code model = near #
# Data model = large #
# Calling convention = xdata reentrant #
# Constant location = data #
# Dptr setup = 1,16 #
# Source file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\src\evboard.c #
# Command line = -lC D:\zigbee\演示程序\简化协议的无线收发演示\dem #
# o_pro\Debug\List\ -lA D:\zigbee\演示程序\简化协议 #
# 的无线收发演示\demo_pro\Debug\List\ -o #
# D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\Obj\ -e -z2 --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --debug #
# --core=plain --dptr=16,1 --data_model=large #
# --code_model=near --calling_convention=xdata_reen #
# trant --place_constants=data --nr_virtual_regs 8 #
# -I "C:\Program Files\IAR Systems\Embedded #
# Workbench 4.05 Evaluation version\8051\INC\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.05 Evaluation version\8051\INC\CLIB\" #
# D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\src\evboard.c #
# List file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\List\evboard.lst #
# Object file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\Obj\evboard.r51 #
# #
# #
##############################################################################
D:\zigbee\演示程序\简化协议的无线收发演示\demo_pro\src\evboard.c
1
2
3 #include "hal.h"
\ In segment SFR_AN, at 0xf3
\ unsigned char volatile __sfr P0SEL
\ P0SEL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xf4
\ unsigned char volatile __sfr P1SEL
\ P1SEL:
\ 000000 DS 1
\ In segment SFR_AN, at 0xfd
\ unsigned char volatile __sfr P0DIR
\ P0DIR:
\ 000000 DS 1
\ In segment SFR_AN, at 0xfe
\ unsigned char volatile __sfr P1DIR
\ P1DIR:
\ 000000 DS 1
4 #include "halstack.h"
5 #include "evboard.h"
6 #include "evbConfig.h"
7
8 #define JOYSTICK_PUSH P2_0
9 #define JOYSTICK_PRESSED() JOYSTICK_PUSH
10 #define INIT_JOYSTICK_PUSH() \
11 do { \
12 P2DIR &= ~0x01; \
13 P2INP |= 0x01; \
14 } while (0)
15
16 BOOL joystickPushed( void );
17
18 typedef enum {CENTRED, LEFT, RIGHT, UP, DOWN} JOYSTICK_DIRECTION;
19
20 #define JOYSTICK P0_6
21 #define INIT_JOYSTICK() IO_DIR_PORT_PIN(0, 6, IO_IN)
22 #define ADC_INPUT_JOYSTICK 0x06
23
24 JOYSTICK_DIRECTION getJoystickDirection( void );
25
26
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
27 EVB_SW_STATE sw_state;
\ sw_state:
\ 000000 DS 2
28
29
30
31 #define SW_POLL_TIME MSECS_TO_MACTICKS(100)
32
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
33 UINT32 last_switch_poll;
\ last_switch_poll:
\ 000000 DS 4
34
35
36 //init the board
\ In segment NEAR_CODE, align 1, keep-with-next
37 void evbInit(void){
\ evbInit:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
38 sw_state.val = 0;
\ 000004 7400 MOV A,#0x0
\ 000006 90.... MOV DPTR,#sw_state
\ 000009 F0 MOVX @DPTR,A
39
40 P0SEL &= ~0xf3;
\ 00000A 53F30C ANL 0xf3,#0xc
\ 00000D E5F3 MOV A,0xf3
41 P1SEL &= ~0xff;
\ 00000F E5F4 MOV A,0xf4
\ 000011 75F400 MOV 0xf4,#0x0
42 IO_DIR_PORT_PIN(0, 0, IO_OUT);
\ 000014 43FD01 ORL 0xfd,#0x1
43 IO_DIR_PORT_PIN(0, 1, IO_OUT);
\ 000017 43FD02 ORL 0xfd,#0x2
44 IO_DIR_PORT_PIN(0, 4, IO_IN);
\ 00001A 53FDEF ANL 0xfd,#0xef
45 IO_DIR_PORT_PIN(0, 5, IO_IN);
\ 00001D 53FDDF ANL 0xfd,#0xdf
46 IO_DIR_PORT_PIN(0, 6, IO_IN);
\ 000020 53FDBF ANL 0xfd,#0xbf
47 IO_DIR_PORT_PIN(0, 7, IO_IN);
\ 000023 53FD7F ANL 0xfd,#0x7f
48
49 IO_DIR_PORT_PIN(1, 0, IO_IN);
\ 000026 53FEFE ANL 0xfe,#0xfe
50 IO_DIR_PORT_PIN(1, 1, IO_IN);
\ 000029 53FEFD ANL 0xfe,#0xfd
51 IO_DIR_PORT_PIN(1, 2, IO_IN);
\ 00002C 53FEFB ANL 0xfe,#0xfb
52 IO_DIR_PORT_PIN(1, 3, IO_OUT);
\ 00002F 43FE08 ORL 0xfe,#0x8
53 IO_DIR_PORT_PIN(1, 4, IO_OUT);
\ 000032 43FE10 ORL 0xfe,#0x10
54 IO_DIR_PORT_PIN(1, 5, IO_OUT);
\ 000035 43FE20 ORL 0xfe,#0x20
55 IO_DIR_PORT_PIN(1, 6, IO_IN);
\ 000038 53FEBF ANL 0xfe,#0xbf
56 IO_DIR_PORT_PIN(1, 7, IO_IN);
\ 00003B 53FE7F ANL 0xfe,#0x7f
57 }
\ 00003E D083 POP DPH
\ 000040 D082 POP DPL
\ 000042 22 RET
58
\ In segment NEAR_CODE, align 1, keep-with-next
59 void evbLedSet(BYTE lednum, BOOL state) {
\ evbLedSet:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
60 switch(lednum) {
\ 000004 E9 MOV A,R1
\ 000005 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for evbLedSet>_0`:
\ 000008 01 DB 1
\ 000009 01 DB 1
\ 00000A .... DW ??evbLedSet_0
\ 00000C .... DW ??evbLedSet_1
\ 00000E .... DW ??evbLedSet_2
61 case 1: if (state) LED1_ON(); else LED1_OFF(); break;
\ ??evbLedSet_1:
\ 000010 EA MOV A,R2
\ 000011 6004 JZ ??evbLedSet_3
\ 000013 C290 CLR 0x90.0
\ 000015 800D SJMP ??evbLedSet_0
\ ??evbLedSet_3:
\ 000017 D290 SETB 0x90.0
\ 000019 8009 SJMP ??evbLedSet_0
62 case 2: if (state) LED2_ON(); else LED2_OFF(); break;
\ ??evbLedSet_2:
\ 00001B EA MOV A,R2
\ 00001C 6004 JZ ??evbLedSet_4
\ 00001E C293 CLR 0x90.3
\ 000020 8002 SJMP ??evbLedSet_0
\ ??evbLedSet_4:
\ 000022 D293 SETB 0x90.3
63 }
64 }
\ ??evbLedSet_0:
\ 000024 D083 POP DPH
\ 000026 D082 POP DPL
\ 000028 22 RET
65
\ In segment NEAR_CODE, align 1, keep-with-next
66 BOOL evbLedGetk(BYTE lednum){
\ evbLedGetk:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
\ 000004 E9 MOV A,R1
67 switch(lednum) {
\ 000005 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for evbLedGetk>_0`:
\ 000008 01 DB 1
\ 000009 01 DB 1
\ 00000A .... DW ??evbLedGetk_0
\ 00000C .... DW ??evbLedGetk_1
\ 00000E .... DW ??evbLedGetk_2
68 case 1: return(LED1_STATE());
\ ??evbLedGetk_1:
\ 000010 A290 MOV C,0x90.0
\ 000012 B3 CPL C
\ 000013 E4 CLR A
\ 000014 92E0 MOV 0xE0 /* A */.0,C
\ 000016 F9 MOV R1,A
\ 000017 8014 SJMP ??evbLedGetk_3
69 case 2: return(LED2_STATE());
\ ??evbLedGetk_2:
\ 000019 A293 MOV C,0x90.3
\ 00001B 4004 JC ??evbLedGetk_4
\ 00001D D2F0 SETB B.0
\ 00001F 8002 SJMP ??evbLedGetk_5
\ ??evbLedGetk_4:
\ 000021 C2F0 CLR B.0
\ ??evbLedGetk_5:
\ 000023 A2F0 MOV C,B.0
\ 000025 E4 CLR A
\ 000026 92E0 MOV 0xE0 /* A */.0,C
\ 000028 F9 MOV R1,A
\ 000029 8002 SJMP ??evbLedGetk_3
70 }
71 return(FALSE);
\ ??evbLedGetk_0:
\ 00002B 7900 MOV R1,#0x0
\ ??evbLedGetk_3:
\ 00002D D083 POP DPH
\ 00002F D082 POP DPL
\ 000031 22 RET
72 }
\ In segment SFR_AN, at 0x90
\ union <unnamed> volatile __sfr _A_P1
\ _A_P1:
\ 000000 DS 1
73
Maximum stack usage in bytes:
Function ISTACK PSTACK XSTACK
-------- ------ ------ ------
evbInit 2 0 0
evbLedGetk 2 0 0
evbLedSet 2 0 0
Segment part sizes:
Function/Label Bytes
-------------- -----
P0SEL 1
P1SEL 1
P0DIR 1
P1DIR 1
sw_state 2
last_switch_poll 4
evbInit 67
evbLedSet 41
evbLedGetk 50
_A_P1 1
158 bytes in segment NEAR_CODE
5 bytes in segment SFR_AN
6 bytes in segment XDATA_Z
158 bytes of CODE memory
0 bytes of DATA memory (+ 5 bytes shared)
6 bytes of XDATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -