📄 ecp_userinput.lst
字号:
###############################################################################
# #
# IAR Systems MSP430 Assembler V3.42A/W32 29/Jun/2007 14:45:59 #
# Copyright 1996-2006 IAR Systems. All rights reserved. #
# #
# Target option = MSP430 #
# Source file = C:\Data\DM350MSP430\VA3\ECP_UserInput.s43 #
# List file = C:\Data\DM350MSP430\VA3\Debug\List\ECP_UserInput.lst#
# Object file = C:\Data\DM350MSP430\VA3\Debug\Obj\ECP_UserInput.r43#
# Command line = C:\Data\DM350MSP430\VA3\ECP_UserInput.s43 #
# -OC:\Data\DM350MSP430\VA3\Debug\Obj\ -s+ -M<> #
# -w+ -LC:\Data\DM350MSP430\VA3\Debug\List\ -t8 #
# -r -D__MSP430F155__ #
# -IC:\Program Files\IAR Systems\Embedded Workbench 4.0\430\INC\ #
# #
###############################################################################
1 00FFEC #include <msp430x15x.h>
2 00FFEC #include "ECP.h"
3 00FFEC
4 00FFEC ; IR Bit Times
5 00FFEC #define BIT_50 29 //
885us @ 32768 ACLK
6 00FFEC #define BIT_75 42 //
1282us @ 32768 ACLK
7 00FFEC
8 00FFEC #define IRBUFFLEN 32 //
IR receive buffer length
9 00FFEC
10 000000 EXTERN SWDelay1333us
11 000000 EXTERN SWDelay889us
12 000000 EXTERN SWDelay5300ns
13 000000 EXTERN SWDelay1282us
14 000000 EXTERN IRBits
15 000000 EXTERN IRData
16 000000 EXTERN IRBuffer
17 000000 EXTERN IRReadIndex
18 000000 EXTERN IRWriteIndex
19 000000 EXTERN ECPStatus
20 000000 EXTERN ButtonData
21 000000 EXTERN ButtonIndex
22 000000 EXTERN DebouncedButtonState
23 000000 EXTERN ButtonRepeatCnt
24 00FFEC
25 00FFEC ;-----------------------------------------------
-------------------------------
26 00FFEC ; Interrupt Vectors
27 00FFEC ;-----------------------------------------------
-------------------------------
28 00FFEC ORG 0xFFEC
; Timer TBCCR0 CCIFG
29 00FFEC .... DW TACCR0_CCIFG_Interrupt
;
30 00FFEE
31 00FFEA ORG 0xFFEA
; Other Timer interrupts
32 00FFEA .... DW TACCR1_Interrupt
33 00FFEC
34 00FFF8 ORG 0FFF8h
; TimerB interrupt vector
35 00FFF8 .... DW TIMERB_ISR
36 00FFFA
37 000000 RSEG USER_INPUT_CODE
38 000000
39 000000 ; **********************************************
******************************
40 000000 ; Function: InitIR
41 000000 ;
42 000000 ; Purpose: Initializes the IR port hardware
43 000000 ;
44 000000 ; Inputs: None
45 000000 ;
46 000000 ; Returns: None
47 000000 ; **********************************************
******************************
48 000000 PUBLIC InitIR
49 000000 B24024016001 InitIR mov #TASSEL0+MC1+TACLR,&TACT
L ; ACLK, Continuous, Clear
50 000006 E2C22200 bic.b #IR_IN,&P1DIR
; Make sure IR pin is in
51 00000A E2D22600 bis.b #IR_IN,&P1SEL
; IR in to timer
52 00000E 0412 push R4
; Save Regs
53 000010 0512 push R5
54 000012 34402000 mov #32,R4
; Loop 32 times
55 000016 3540.... mov #IRBuffer,R5
; Point
to start of
buffer
56 00001A B540CDAB0000 InitIRCLRLoop mov #0xABCD,0(R5)
; Init value
57 000020 2553 add #0x0002,R5
; Increment pointer
58 000022 1483 dec R4
59 000024 FA23 jnz InitIRCLRLoop
60 000026 8243.... clr &IRReadIndex
; Init IR Read Index
61 00002A 8243.... clr &IRWriteIndex
; Init IR Write Index
62 00002E B012.... call #ResetIR
; Reset the IR interface
63 000032 55423000 mov.b &P5IN,R5
; Read port
5
64 000036 75D02000 bis.b #MSP430_INT,R5
; Clear MSP430 Interrupt
65 00003A C2453100 mov.b R5,&P5OUT
; Write port
5
66 00003E F0C2.... bic.b #ECP_IR_OVERRUN,ECPStatu
s ; Clear indicate overrun
67 000042 3541 pop R5
68 000044 3441 pop R4
69 000046 3041 ret
70 000048
71 000048 ; **********************************************
******************************
72 000048 ; Function: ResetIR
73 000048 ;
74 000048 ; Purpose: Resets the IR interface
75 000048 ;
76 000048 ; Inputs: None
77 000048 ;
78 000048 ; Returns: None
79 000048 ; **********************************************
******************************
80 000048 F0400E00.... ResetIR mov.b #14, IRBits
; 2 start bits + 12 data
81 00004E 9043.... mov #1, IRData
; Init to RX IR data
82 000052 B24010896401 mov #CAP+CM1+SCS+CCIE,&TACCT
L1 ; Capture mode,
83 000058
; Capture on falling edge
84 000058
; Sync Capture
85 000058
; Enable TACCR1 CCIFG INT
86 000058 3041 ret
87 00005A
88 00005A
89 00005A ; **********************************************
******************************
90 00005A ; Function: InitButtons
91 00005A ;
92 00005A ; Purpose: Initializes the pushbutton port
hardware
93 00005A ;
94 00005A ; Inputs: None
95 00005A ;
96 00005A ; Returns: None
97 00005A ; **********************************************
******************************
98 00005A ; Button press should be solved in 50msec.
99 00005A ; Expected bounce time is about 2msec.
100 00005A ; Sample timer at 5ms intervals and sum up 10
samples
101 000000 PUBLIC InitButtons
102 00005A 0412 InitButtons push R4
; Save Regs
103 00005C 0512 push R5
104 00005E B2439201 mov #0xFFFF,&TBCCR0
105 000062 34401001 mov #TBSSEL0+MC0,R4
; ACLK, Continous
106 000066 34D00018 bis #CNTL1+CNTL0,R4
; 8 bit count
107 00006A 82448001 mov R4,&TBCTL
; Write to
Timer B control
108 00006E E2C22200 bic.b #IR_IN,&P1DIR
; Make sure IR pin is in
109 000072 E2D22600 bis.b #IR_IN,&P1SEL
; IR in to timer
110 000076 34400500 mov #5,R4
; Loop 5 times
111 00007A 3540.... mov #ButtonData,R5
;
Point to
start of
buffer
112 00007E F540F8000000 InitButtonCLRLoop mov.b #0xF8,0(R5)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -