工具与软件:
我们正在着手一个 MSP430G2553项目、该项目的功能是执行一个充电控制器、以便通过矩阵键盘选择负载激活的日期和时间、请记住它必须在 LPM3模式下运行、但我们遇到了问题、他人可以发送任何提示或建议
#include // Inclui o cabeçalho para a Família ó n de microcontrolsladores MSP430
#include "HD44780.h"//包括 cabeçalho específico 参数显示 LCD HD44780
#include // Inclui o cabeçalho Padrão ç a da biblioteca de funções ç a de uso Geral em C.
#include // Inclui o cabeçalho para operações matemáticas ó n.
#include // Inclui o cabeçalho Padrão ç a da biblioteca de inteiros de largura fixa em C.
#include // Inclui o cabeçalho Padrão ç a da biblioteca de tipos inteiros de largura fixa em C.
#include
#include
#include
#define segunda BIT6
#define terca BIT5
#define Quarta BIT4
#define Quinta BIT3
#define sexta BIT2
#define Sabado BIT1
#define DOMINGAN BIT0
#define byte char // define um alias "byte" para 'char'
#define hab BIT7 // define um alias 'hab' para 'BIT7'
#define s(lo) 1<<lo
字节直径;//声明 UMA variável 'dia' do tipo 'byte'
字节 vet_circular [8]={0x7F、0x7E、0x7C、0x03、0x50、 0x0A、0x54、0x2A};// Init_circular 阵列'vert_circular ' de 8 Element
字节 lo;
字节 T;
Char Tecla;
char teclado[4][4]={'1'、'2'、'3'、'a'}、
{'4'、'5'、'6'、'B'}、
{'7'、'8'、'9'、'C'}、
{'*'、'0'、'#'、'D'};
/// CONTROLE de Carga inicio//
typedef struct prog{//定义 UMA estrutura 'prog'
Byte Diason;// Membro "Diason" da estrutura 'prog'
Byte Diasoff;// Membro "Diasoff" da estrutura 'prog'
Int hon, hoff;// 23 59.
} Programacao ;//定义 um alias 'prog' para 'struct prog'
struct carga { Programacao prog[3];byte bite;};// define UMA estrutura 'carg' com membros 'programacao' e 'bite
void main(){/ Função principal 'main'
struct carga Carga[2];//声明数组 de 2 Elementos do tipo 'struct carg'
Int i、j;//声明 variáveis inteiras 'i' e 'j'
Byte Dia = segunda;// 7 6 5 4 3 2 1 0
int Horas = 0;
// h/d
for (i=0;i<2;i++){//desabilita a programação de todas cargas。 循环 extern DE 0 A 1
for (j=0;j<3;j++){//循环交叉0 a 2
carga[i].prog[j].diason= 0x7F;carga[i].prog[j].diasoff= 0x7F;//初始化 membros "diason" e "diasoff" de cada elemento de 'Carga'
}
carga[i].bite =(1< 'bite'="" de="" cada="" elemento="" 'carga'}
configTeclado();
P2IE &= 0x0F;//度量 interrupção dos bit 4 a 7 da p2
P2IES &= 0x0F;//配置支持 Subida (BIT4 A 7)
P2IFG &= 0x0F;// limpa flag de interrupção è s
P2IE |= 0xF0;// habilita interrupção á
// RTI_Porta 2.
for (i=4;i<8;i++){//Linha que gerou interrupção
if (P2IFG & s (i)){
P2IE &=~s (i);
LO = I;
if (! (P2IES & s (i))){
for (j=0;j<4;j++){
LPM3;
if (P2IN & s (j)){
Tecla = teclado[i-4][j];
休息;
}
}
}
}
}
TA0CCR1 += T;
TA0CCTL1 &=~ CCIFG;
TA0CCTL1 |= CCIE;
P2OUT = 0;// Linpa o registrador P2OUT
while (1){//循环 Infiniband
对于(i = 0; i < 2; i++){//procura pela carga habilitada para ligar e desligar a carga. 循环 extern DE 0 A 1
对于(j = 0;j < 3;j++){//环路交叉0 a 2
if ((((Carga[i].prog[j].diason &(hab | dia)))=(hab | dia))
&&(Carga[i].prog[j].hon = Horas)){//verifica se é PRA ligar
P1OUT |= Carga[i].bite;
}
if ((((Carga[i].prog[j].Diasoff &(hab | dia))=(hab | dia))
&&(Carga[i].prog[j].hoff = Horas)){//verifica se é PRA ligar
P1OUT 且=~Carga[i].bite;
}
}
}//用于外部
}
}
byte opcoes_dias (byte i){// Função 'opcoes_dias' com argumento 'i'
如果((I>= 0)&&(I <= 7)){// Condição se 'i' está entre 0 e 7
return vet_circular [i];// retorna o valor do índice 'i' do array 'vert_circular '
} else{// caso contrário
if ((i>7)&&(i<=13)){// Condição se 'i' está entre 8 e 13.
返回(I-6);// Retorna "I-6"
} else{// caso contrário
return 1;// Retorna 1.
}
}
}
/// CONTROLE de Carga FIM //
#pragma vector=Timer1_A0_vector //定义 um vetor de interrupção para o Timer1_A0
__interrupt void Timer1_A0_ISR (void){// Rotina serviço de interrupção ó n para o Timer1_A0
//inicio relogio/
开关(TA0IV){
案例0x02://canal 1
P2IES ^= s(lo);
P2IFG &=~Ω(0XF0);
P2IE |=0XF0;
TA0CCTL1 &=~ CCIE;
休息;
案例0x04://canal 2
TA0CCR2 += 32768;
LPM3_EXIT;
休息;
}
/// fim relogio
TA1CCTL0 &=~CCIFG;// Linpa a Bandeira de interrupção ó n
}
/*
for (I=0;I<2;I++){//循环外部0 a 1
对于(j = 0;j < 3;j++){//环路交叉0 a 2
if (Carga[i].prog[j].diason &(hab | dia)=(hab | dia)){// Condição baseada no valor dos membros "diason" e 'dia' de cada elemento de 'Carga'
P2OUT |=(1 << Carga[i].bite);//配置寄存器 P2OUT 中的位对应项
}
if (Carga[i].prog[j].diasoff &(hab | dia)=(hab | dia)){// Condição baseada no valor dos membros "diasoff" e 'dia' de cada elemento de 'Carga'
P2OUT 且=~(1 << Carga[i].bite);// Linpa o bit contactente do registrador P2OUT
}
}
}*/