Posted: 21 Aug 2009 20:06
Thank you very much, I really appreciate all of your help!!
Development Tools, Compilers, Books
https://forum.mikroe.com/
Code: Select all
unsigned char i;
unsigned char rxnum;
void main() {
//INTCON.GIE = 0; // Disable interrupts
CMCON = 7; //Declare Variables
VRCON = 0;
PORTA = 0; //Init. PORTA
PORTB = 0; //& PORTB
TRISA = 0x00;
TRISB = 0x00;
//TRISB.F1 = 1;
//rxnum = 0;
Usart_Init(2400); //Establish USART at 2400bps
PORTB.F5 = 1;
Delay_ms(1000);
PORTB.F5 = 0;
Delay_ms(1000);
while(1){
if(Usart_Data_Ready){
i = Usart_Read();
// i = RCREG;
// Usart_Write(i); // write data back to computer
}
if( i == 65){
PORTB.F4 = 1; // Flash light if "A" is received
Delay_ms(1000);
PORTB.F4 = 0;
Usart_Write(i);
i = 0;
}
if( i == 66){
PORTB.F5 = 1; // Flash light if "A" is received
Delay_ms(1000);
PORTB.F5 = 0;
Usart_Write(i);
i = 0;
}
} // end while
} // end main
don't be hatindrdoug wrote:I hate microcontrollers!
Code: Select all
unsigned short i, rxdata[3];
unsigned int rxnum;
void main() {
INTCON.GIE = 0; // Disable interrupts
cmcon = 7; //Declare Variables
VRCON = 0;
TRISA = 0; //Set PORTA as output
TRISB = 0; //Set PORTB as output
TRISB.F1 = 1; //Set PORTB bit 1 as input
PORTA = 0xFF; //Init. PORTA
PORTB = 0;
PORTB.F4 = 1;
PORTB.F5 = 1; //& PORTB
Usart_Init(2400); //Establish USART at 2400bps
while(1){
if(Usart_Data_Ready()){
i = Usart_Read();
}
if( i == 65){
rxnum = 0;
while( rxnum < 3){
if(Usart_Data_Ready()){
rxdata[rxnum] = Usart_Read();
rxnum++;
}
if((rxdata[1] == 66) && (rxdata[2] == 35)){
PORTA = rxdata[0];}
//Delay_ms(1000); // Longer delay so you dont miss anything
}}
if ( rxdata[0] == 239) {
PORTB.F4 = 0;
//Delay_ms(1000); // Longer delay so you dont miss anything
//PORTA = 0XFF;
//PORTB.F4 = 1;
}
if ( rxdata[0] == 223) {
PORTB.F5 = 0;
//Delay_ms(1000);
//PORTA = 0XFF; // Longer delay so you dont miss anything
//PORTB.F5 = 1;
}
Delay_ms(1000);
PORTA = 0XFF; // Longer delay so you dont miss anything
PORTB.F5 = PORTB.F4 = 1;
RCREG = 0;
}
}
Code: Select all
...
Usart_Init(2400); //Establish USART at 2400bps
Delay_ms(100);
...
Im a little confused as to what your saying? Im not sure which delay your talking about.drdoug wrote:It looks like you have a 1 second delay after you 1 byte of the uart which wouldkeep you from receiving any other characters.
I'll try to play with your code again later.
Code: Select all
...
if ( rxdata[0] == 223) {
PORTB.F5 = 0;
//Delay_ms(1000);
//PORTA = 0XFF; // Longer delay so you dont miss anything
//PORTB.F5 = 1;
}
// Delay_ms(1000); // you'll miss a lot of data if you wait 1 second here
PORTA = 0XFF; // Longer delay so you dont miss anything
PORTB.F5 = PORTB.F4 = 1;
RCREG = 0;
}
}