lloydi12345
Member
Hi, I would like to ask again for your help. The problem is the pattern malfunctions. Even when the push button is not yet pushed, the pattern changes alternately from portd=0x0f to 0xf0. When I push the button, the pattern stops even if the pattern is 0x0f or it is 0xf0 it really stops. Can you help me? I'm using pic16f877a
My program should be: When push button is unpressed 2nd pattern - 0xF0 only should show. When push button is pressed 1st pattern - 0x0F only should show. They should be steady. I don't know if I'm having a problem on my C syntax or something else.
Here are my codes and schematic.
Transmitter:
Receiver:
My program should be: When push button is unpressed 2nd pattern - 0xF0 only should show. When push button is pressed 1st pattern - 0x0F only should show. They should be steady. I don't know if I'm having a problem on my C syntax or something else.
Here are my codes and schematic.
Transmitter:
Code:
unsigned int i;
void main() {
ADCON1 = 6;
trisb = 0xFF;
UART1_Init(9600); // initialize USART module
while(1){
if (portb.f0 = 0){ //pressed
UART1_Write(0x0F); //1st pattern
Delay_ms(300);
}
else (portb.f0 = 1){
UART1_Write(0xF0); //2nd pattern
Delay_ms(300);
}
}
}
Receiver:
Code:
unsigned char i;
void check_char(void){
if ( i == 0x0F ){
portd = 0x0F; //light RD0-RD3
delay_ms(300);
}
if ( i == 0xF0 ){
portd = 0xF0;
delay_ms(300); //light RD4-RD7
}
}
void main(){
portd = 0x00;
adcon1 = 6;
trisd = 0;
UART1_Init(9600);
while(1){
if (UART1_Data_Ready() == 1) {
i = UART1_Read();
check_char(); //light the appropriate LEDs
}
}
}