📄 ecp_ir.lst
字号:
###############################################################################
# #
# IAR Systems MSP430 Assembler V3.42A/W32 27/Jun/2007 12:28:48 #
# Copyright 1996-2006 IAR Systems. All rights reserved. #
# #
# Target option = MSP430 #
# Source file = C:\Data\DM350MSP430\VA3\ECP_IR.s43 #
# List file = C:\Data\DM350MSP430\VA3\Debug\List\ECP_IR.lst #
# Object file = C:\Data\DM350MSP430\VA3\Debug\Obj\ECP_IR.r43 #
# Command line = C:\Data\DM350MSP430\VA3\ECP_IR.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 00FFEC
21 00FFEC ;-----------------------------------------------
-------------------------------
22 00FFEC ; Interrupt Vectors
23 00FFEC ;-----------------------------------------------
-------------------------------
24 00FFEC ORG 0xFFEC
; Timer TBCCR0 CCIFG
25 00FFEC .... DW TACCR0_CCIFG_Interrupt
;
26 00FFEE
27 00FFEA ORG 0xFFEA
; Other Timer interrupts
28 00FFEA .... DW TACCR1_Interrupt
29 00FFEC
30 000000 RSEG IR_CODE
31 000000
32 000000 ; **********************************************
******************************
33 000000 ; Function: InitIR
34 000000 ;
35 000000 ; Purpose: Initializes the IR port hardware
36 000000 ;
37 000000 ; Inputs: None
38 000000 ;
39 000000 ; Returns: None
40 000000 ; **********************************************
******************************
41 000000 PUBLIC InitIR
42 000000 B24024016001 InitIR mov #TASSEL0+MC1+TACLR,&TACT
L ; ACLK, Continuous, Clear
43 000006 E2C22200 bic.b #IR_IN,&P1DIR
; Make sure IR pin is in
44 00000A E2D22600 bis.b #IR_IN,&P1SEL
; IR in to timer
45 00000E 0412 push R4
; Save Regs
46 000010 0512 push R5
47 000012 34402000 mov #32,R4
; Loop 32 times
48 000016 3540.... mov #IRBuffer,R5
; Point
to start of
buffer
49 00001A B540CDAB0000 InitIRCLRLoop mov #0xABCD,0(R5)
; Init value
50 000020 2553 add #0x0002,R5
; Increment pointer
51 000022 1483 dec R4
52 000024 FA23 jnz InitIRCLRLoop
53 000026 8243.... clr &IRReadIndex
; Init IR Read Index
54 00002A 8243.... clr &IRWriteIndex
; Init IR Write Index
55 00002E B012.... call #ResetIR
; Reset the IR interface
56 000032 55423000 mov.b &P5IN,R5
; Read port
5
57 000036 75D02000 bis.b #MSP430_INT,R5
; Clear MSP430 Interrupt
58 00003A C2453100 mov.b R5,&P5OUT
; Write port
5
59 00003E F0C2.... bic.b #ECP_IR_OVERRUN,ECPStatu
s ; Clear indicate overrun
60 000042 3541 pop R5
61 000044 3441 pop R4
62 000046 3041 ret
63 000048
64 000048 ; **********************************************
******************************
65 000048 ; Function: ResetIR
66 000048 ;
67 000048 ; Purpose: Resets the IR interface
68 000048 ;
69 000048 ; Inputs: None
70 000048 ;
71 000048 ; Returns: None
72 000048 ; **********************************************
******************************
73 000048 F0400E00.... ResetIR mov.b #14, IRBits
; 2 start bits + 12 data
74 00004E 9043.... mov #1, IRData
; Init to RX IR data
75 000052 B24010896401 mov #CAP+CM1+SCS+CCIE,&TACCT
L1 ; Capture mode,
76 000058
; Capture on falling edge
77 000058
; Sync Capture
78 000058
; Enable TACCR1 CCIFG INT
79 000058 3041 ret
80 00005A
81 00005A TACCR0_CCIFG_Interrupt
82 00005A 0013 reti
83 00005C
84 00005C 10522E01 TACCR1_Interrupt add &TAIV,PC
; Add offset
to PC
85 000060 0013 reti
; Vector 0, no interrupt
86 000062 043C jmp TACCR1Interrupt
; Vector 2, TACCR1 Int
87 000064 693C jmp TACCR2Interrupt
; Vector 4, TACCR2 Int
88 000066 0013 reti
; Vector 6 reserved
89 000068 0013 reti
; Vector 8 reserved
90 00006A 0013 reti
; Vector 10 TAIFG
91 00006C
92 00006C 0412 TACCR1Interrupt push R4
; Save Regs
93 00006E 14426401 mov &TACCTL1,R4
; Get
TACCTL1
94 000072 34F00001 and #CAP,R4
; Mask Capture mode
95 000076 0D24 jz TACCR1Int_2
; Not capture mode
96 000078 82436601 mov #0x0000, &TACCTL2
; Disable TA2
97 00007C 14427401 mov &TACCR1, R4
; Get
TACCR1
98 000080 34502A00 add #BIT_75, R4
; Add 3/4 bit time
99 000084 82447401 mov R4,&TACCR1
100 000088 B0401000.... mov #CCIE,TACCTL1
; Compare mode, enable int
101 00008E 3441 pop R4
; Restore Regs
102 000090 0013 reti
103 000092 5440.... TACCR1Int_2 mov.b IRBits,R4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -