#include "msp430g2553.h"
unsigned char data;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
gelen=0x30;
data=0x30;
while(1){
UCA0TXBUF=data;
__delay_cycles(1000000);
data++;
if( data==0x40){data=0x30;}
}
__bis_SR_register(GIE); // Enter LPM0, interrupts enabled
}
şöyle uyduruktan bir kod yazıp deneme yaparken keşfettim, hiç kesme açmadan direk TX uart buffer ına yazdığım ASCII değerleri güzel güzel gönderiyordum PC ye (açmadım derken tanımladım (GIE) ama ekstradan #pragma ile tanımlamama gerek olmadığını gördüm) fakat while (1) koşulunda RX olak gönderdiğim data
while(UCA0TXBUF==0x30)
şeklinde karşılaştırmaya öre çalışmasını istediğimde hiçbir tepki alamıyorum yada döngü içerisinde
while(1){
UCA0TXBUF=data;
__delay_cycles(1000000);
data++;
if( UCA0RXBUF>0x40){data=0x30;}
}
şeklinde biraz denemeler yapmaya çalıştığımda hiçbir değişiklik yok, kodun RX den sanki haberi olmuyor :o Örnek kodları inceledim ama henüz pekte anlayabilmiş değilim açıkçası. Çok basit bir olay gibi görünüyor ama henüz çözemedim..