Hallo Leute!
Ich arbeite noch nicht lang mit Microcontrollern und verzweifle an
einer, wahrscheinlich ziemlichen simplen Sache...
Zuerst zum Controller; Es ist ein MSP430G2553 Launchpad von TI, ohne
weitere Prepheriegeräte, quasi im Auslieferungszustand.
Nun will gern ein Assembler-Programm drauf laufen lassen, das auf
Tastendruck (P1.3) von der einen LED(P1.0) zu anderen LED(P1.6) wechseln
lässt.
Mein Problem dabei: Der Controller und auch die Status-Ansicht im
Code-Composer zeigen mir nicht an das ich Taste drücke. Der Status
bleibt immer auf "0".
Hier mal mein Code:
1 | ;--------------------------------------------------------------------------------------
|
2 | ; Module/Filename: Lichtlaufleiste
|
3 | ; Hw-System: MSP430G2553
|
4 | ; IDE: CodeComposer Studio, Rel. 4.2.4.00033
|
5 | ; Purpose: Lichtlauf LED
|
6 | ; Dates: May, 9. 2013
|
7 | ;--------------------------------------------------------------------------------------
|
8 |
|
9 | ; start adresse der Anwendung
|
10 | .global main
|
11 |
|
12 | ; einbinden C-headerfile
|
13 | .cdecls "msp430g2553.h"
|
14 |
|
15 | ; constant definition - if requested
|
16 | .sect .const
|
17 |
|
18 | ; variable definitions - if requested
|
19 | ;.bss
|
20 |
|
21 | ; application program
|
22 | .text
|
23 | main:
|
24 |
|
25 | ; init stackpointer
|
26 |
|
27 |
|
28 | mov.w #0280h,SP ; initialize stack pointer
|
29 | mov.w #WDTPW+WDTHOLD,&WDTCTL ; stop watchdog timer
|
30 |
|
31 | ; init port hardware
|
32 | bic.b #0xFF, &P1SEL ;I/O-Mode for P1.x
|
33 | bic.b #0xFF, &P1DIR ;Input_Mode for P1.x (who knows what the previous-state is?!)
|
34 | bic.b #0xFF, &P1OUT ;set all LED off
|
35 | bis.b #0x01, &P1OUT ;set LED 1 on
|
36 | bis.b #01000001b, &P1DIR ;Output-Mode for P1.0 and P1.6
|
37 |
|
38 |
|
39 | bigloop:
|
40 |
|
41 | ;manual
|
42 | manual_loop1:
|
43 | bit.b #00001000b, &P1IN ;test if momentary switch is set (P1.3)
|
44 | JC manual_loop1 ;jump back to manual_loop1if momentary switch is not set
|
45 |
|
46 | call #AusgabeSchieben
|
47 |
|
48 | manual_loop2:
|
49 | bit.b #0x08, &P1IN ;test if momentary switch is set (P1.3)
|
50 | JC manual_loop2 ;jump back to manual_loop2 if momentary switch is set
|
51 | JNC manual_loop1 ;jump to manual_loop1 if momentary switch is not set
|
52 |
|
53 |
|
54 | ;************ AusgabeSchieben ********************
|
55 | AusgabeSchieben:
|
56 | clrc
|
57 | bit.b #0x01, &P1OUT ;test if MSB is 1 or 0
|
58 | JC setled2on
|
59 | bic.b #0xFF, &P1OUT ;set all LED's off
|
60 | bis.b #0x01, &P1OUT ;set LED 1 on
|
61 | ret
|
62 | setled2on:
|
63 | bic.b #0xFF, &P1OUT ;set all LED's off
|
64 | bis.b #0x40, &P1OUT ;set LED 2 on
|
65 | ret
|
66 | .end
|
An sich ja ne simple Sache, wie gesagt, nur dieser Taster(P1.3) machst
halt nicht.
Muss ich evtl. irgendwelcher Jumper umstecken ? Sind alle noch drauf,
wie gesagt, Auslieferungszustand (bis auf das Programm)