View Single Post
Old 29-01-2008, 10:35 AM   #30
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
Tham gia ngày: Sep 2006
Bài gửi: 100
:
Báo cáo, tớ đã làm xong phần truyền nhận chuỗi gồm 10 ký tự. Chuỗi này có ký tự bắt đầu là 0, ký tự kết thúc là 9. Có thể dễ dàng modify chương trình để có số ký tự truyền nhận hoặc thay đổi ký tự bắt đầu - kết thúc. Sau đây là chương trình post lên cho những người mới học như tớ tham khảo:

Code:
#include <16F877A.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use fast_io (b)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#include <lcd_lib_4bit.c>

   char mang[11];
   int8  dem=0;
   int1 flag, flag1;
   char c;

#INT_RDA
Receive_isr()
{
      c=getc();
      if(c=='0') flag=1;
      if((c=='9')&&(flag==1)){mang[dem]=c; dem++; flag=0; flag1=1;}
      if(flag==1) {mang[dem]=c; dem++;}  
}

//-----------------------------------------------------------------
 
void main(void)
{
   output_b(0xC0);
   set_tris_a(0xC0);
   set_tris_b(0xC1);
   port_b_pullups (TRUE);
   set_tris_c(0x90);

   LCD_init();
   delay_ms(500);
   LCD_putcmd(0x80);
   Printf(LCD_putchar,"Hi ev'body");   //Hien thi man hinh 1
   LCD_putcmd(0xC0);
   Printf(LCD_putchar,__DATE__);

   enable_interrupts(INT_RDA);
   enable_interrupts (global); 
   
   while(1)
   {
      if(flag1==1)
      {
         LCD_putcmd(0x01);    //xoa man hinh
         LCD_putcmd(0x80);
         mang[10]='\0';
         printf(LCD_putchar,"%s",mang);
         printf("%s",mang);
      }
   }
}
__________________
Do more than exist, LIVE
Jerry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn