工具/软件:Code Composer Studio
大家好、我是 MSP430G2553和微控制器的新手。 我正在尝试执行一个应用程序、该应用程序在您每次释放按钮(s2)并将其显示在7段显示屏上时都会进行计数。 我n´t 工作了几天、在代码中找不到错误、所以如果你能给我一个手、我就会收到它!
请´s、n´t 是 μ A 的问题、它在 MSP430的输出上工作正常。 我检查了它是否发送了不同的输出、这些输出在7个段中解码到它、例如 cero (P1OUT = 0x3F)。
我还使用以下编码
A - P1.0
B - P1.1
C - P1.2
D - P1.4
E - P1-5
F - P2.0
G - P2.1
代码:
#include
/*
* main.c
*
int count =-1;
INT 控制;
int trace = 0;
int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//CLK 配置
///-------------------------------------------------------
DCOCTL = CALDCO_1MHz;//DCO 至1MHz
BCSCTL1 = CALBC1_1MHz;//MCLK 至1MHz
//端口配置
///----------------------------------------------------------
P1DIR |= BIT0 + BIT1 + BIT2 + BIT4 + BIT4;//将 P1设置为输出方向(0至5)
P2DIR |= BIT0 + BIT1;//将 P2.0和 P2.1设置为输出方向
P1OUT |= BIT3;// P1.3设置为1
P1REN |= BIT3;// P1.3上的上拉电阻器使用按钮 s2.
while (1){
//等待
///---------------------------------------------------------
控制= 0;
while (control <5){
CONTROL = CONTROL +1;
}
switch (trace){
情况0:
//高
//--------------------------------------------------
跟踪= 1;
while (~(BIT3 & P1IN)){
asm (" nop");
}
中断;
案例1:
//低
//--------------------------------------------------
跟踪= 0;
count = count + 1;
while ((BIT3 & P1IN)){
asm (" nop");
}
中断;
}
//去二化
///---------------------------------------------------------
switch (count){
情况(0):
P1OUT = 0x3F;
P2OUT = 0x01;
中断;
情况(1):
P1OUT = 0x0E;
P2OUT = 0x00;
中断;
情况(2):
P1OUT = 0x3B;
P2OUT = 0x02;
中断;
情况(3):
P1OUT = 0x1F;
P2OUT = 0x02;
中断;
情况(4):
P1OUT = 0x0E;
P2OUT = 0x03;
中断;
情况(5):
P1OUT = 0x1D;
P2OUT = 0x03;
中断;
情况(6):
P1OUT = 0x3D;
P2OUT = 0x03;
中断;
情况(7):
P1OUT = 0x0F;
P2OUT = 0x00;
中断;
情况(8):
P1OUT = 0x3F;
P2OUT = 0x03;
中断;
情况(9):
P1OUT = 0x0F;
P2OUT = 0x03;
中断;
情况(10):
P1OUT = 0x2F;
P2OUT = 0x03;
中断;
情况(11):
P1OUT = 0x3C;
P2OUT = 0x03;
中断;
情况(12):
P1OUT = 0x39;
P2OUT = 0x01;
中断;
情况(13):
P1OUT = 0x3E;
P2OUT = 0x02;
中断;
情况(14):
P1OUT = 0x39;
P2OUT = 0x03;
中断;
情况(15):
P1OUT = 0x29;
P2OUT = 0x03;
中断;
默认值:
Cuenta = 0;
P1OUT = 0x3F;
P2OUT = 0x01;
中断;
}
}
返回0;
}
谢谢、
Dan