| ??? 06/20/09 11:52 Read: times |
#166284 - Why dont you define correct id in "code" space Responding to: ???'s previous message |
Dear Popa,
Why dont you define the valid id in code space instead of data space.
// #include <REGX52.h> //program care stocheaza si compara(bun)
#include <89lpc932.h>
#define Baud_rate 0xF4
#define LED_P P2_0
#define LED_OF 1
#define LED_ON 0
code unsigned char valid_id[10] = {0x30, 0x34, 0x31, 0x35, 0x44, 0x38, 0x41, 0x31, 0x46, 0x31};
//rx_on, & chk_id can also be defined as bit(if compiler permits it)
unsigned char offset, rx_on, chk_id;
unsigned char com_rx_buf[11];
void serial_IT(void) interrupt 4 using 1
{
unsigned char ch;
if(RI)
{
if(rx_on)
{
if(SBUF == 0x0D)
{
chk_id = 1;
rx_on = 0;
}
else
{
if(offset < 10)
{
com_rx_buf[offset] = SBUF;
offset++;
}
else
rx_on = 0;
}
}
else
{
if(SBUF == 0x0A)
{
rx_on = 1;
for(ch = 0; ch < 11; ch++)
com_rx_buf[ch] = 0x00;
offset = 0;
}
}
}
else
{
if(TI)
TI = 0;
}
}
void init_var(void)
{
unsigned char ch;
for(ch = 0; ch < 11; ch++)
com_rx_buf[ch] = 0x00;
offset = 0;
rx_on = 0;
chk_id = 0;
}
void init(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = Baud_rate;
TL1 = Baud_rate;
// EA = 1;
ES = 1;
TR1 = 1;
init_var();
LED_P = LED_OF;
}
void compare_id(void)
{
unsigned char ch;
if(offset == 10)
{
for(ch = 0; ch < 10; ch++)
{
if(com_rx_buf[ch] != valid_id[ch])
break;
if(ch == 9)
LED_P = LED_ON;
}
}
}
void main(void)
{
EA = 0;
init();
EA = 1;
while(1)
{
if(chk_id)
{
compare_id();
init_var();
}
}
}
Regards, Mahesh |



