[an error occurred while processing this directive]
|
MSP430F1611
весь текст пограммы
под IAR v.3.40a
проблема в том, что на второй стороне(РС)
принимается чего-нипопадя
(между MSP и PC стоит преобр. уровней ADM3202)
#include union { unsigned char red :1; void main(void) TACTL |= TAIE + TASSEL_2 + ID_3 + MC_1; U1CTL = SWRST; UCTL1 |= CHAR; // 8-bit character ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD UCTL1 &= ~SWRST; // Initialize USART state machine _BIS_SR(GIE); for(;;){ #pragma vector=PORT2_VECTOR #pragma vector=TIMERA1_VECTOR //хотел чегой-то принимать, но пока не до этого...
E-mail:
info@telesys.ru
unsigned int a;
unsigned char send = 0;
struct{
unsigned char bit0 :1;
unsigned char bit1 :1;
unsigned char grn :1;
unsigned char yel :1;
unsigned char bit5 :1;
unsigned char bit6 :1;
unsigned char bit7 :1;
}Led;
unsigned char Byte;
}Out;
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL2 |= SELM_2 + SELS;
CCR0 = 0xC350;
P1DIR |= 0x03; // Set P1.0 to output direction
P2DIR |= BIT2 + BIT3 + BIT4; // Set P2.2,3,4 to output direction
P2IE |= BIT0 + BIT1; // Set P2.0,1 to generate interrupt
P2IES = 0x03;
P2OUT = 0x00;
P3SEL |= BIT6 + BIT7; // P3.6,7 = USART1 option select
P3DIR |= BIT6; // P3.6 == USART1 Tx == Output
P1OUT = 0x00;
UBR01 = 0x34; // 6Mhz/115200 - 52.08
UBR11 = 0x00;
UTCTL1 |= SSEL1; // UCLK = SMCLK
UMCTL1 = 0x40; // modulation
IE2 |= URXIE1; // Enable USART1 RX interrupt
P1OUT ^= 0x02;
}
}
__interrupt void port2(void)
{
switch(P2IFG){
case 0x01:
Out.Led.grn ^= 1;
break;
case 0x02:
Out.Led.red ^= 1;
break;
}//end
P2IE = 0;
P2IFG = 0;
TACTL &= ~TAIFG;
TACTL |= TACLR;
TACTL |= TAIE + TASSEL_2 + ID_3 + MC_2;
}
__interrupt void timer_A(void)
{
a++;
if(Out.Led.grn) {
Out.Led.yel = 1;
if(a > 14) {
P1OUT ^= 0x01;
a = 0;
while (!(UTCTL1 & TXEPT)); // USART1 TX buffer ready?
U1TXBUF = send;
send++;
}//end if((a++) > 0xff)
}//end if(rezhim_tim)
else {
Out.Led.yel = 0;
P1OUT ^= 0x01;
while (!(UTCTL1 & TXEPT)); // USART1 TX buffer ready?
U1TXBUF = 0x43;
}//end else if(rezhim_tim)
P2OUT = Out.Byte;
P2IFG = 0;
P2IE = 0x03;
TACTL &= ~TAIFG;
}
#pragma vector=USART1RX_VECTOR
__interrupt void USART1(void)
{
U1IFG &= ~(URXIFG1 + UTXIFG1);
}
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание