View Single Post
Old 17-03-2009, 11:35 PM   #1
phamngocthanh87
Đệ tử 2 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 29
:
Question mọi người giúp đỡ với

em đang thực hiện một bài thực hành , thày giáo cho về . đề bài như sau : gửi một số thực từ trên máy tính tới vi điều khiển (ở đây là pic16f877a ) qua r232 bằng visual basic 6.0, hiển thị lên 2led 7 thanh(hiển thị số có hai chữ số) . nhưng theo em được biết thì vb chỉ gửi được kí tự . Mà mình muốn gửi một số chẳng hạn như số 89 xuống vi điều khiển thì vi điều khiển nhận được là xâu kí tự "89" tức là mã ascii của 8 và 9 . do đó mình phải có hàm chuyển đổi thành số 89 . em viết một chương trình nhưng nó không hiện đúng .mong các đại ca chỉ giúp !cảm ơn nhiều ! đây là chương trình do em viết trên ccs:
Code:
#include  <16f877a.h>
#include <def_877a.h>
#fuses  HS,NOLVP,NOWDT,PUT
#use delay (clock=4000000)   // defind crystal = 4MHz
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <string.h>
int16  MAP[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 t[2]={0x01,0x02};
void hien(int16 x)
   {
   int8 i;
   int8 a[2]={0};
   a[0]=x%10;
   a[1]=x/10;
   for(i=0;i<2;i++)
      {
      porta=t[i];
      portd=MAP[(a[i])];
      delay_ms(2);
      }
   }
int16 tach(char *str)
   {
   int16 i,l,s;
   l=strlen(str);
   s=str[0]- 48;
   for(i=1;i<l;i++)
      {
      s=s*10+(str[i]- 48);
      }
   return s;
   }
void main()
   {
   char *k;
   int16  y;
   trisd=0x00;
   trisa=0x00;
   porta=0x00;
   portd=0x00;
   while(true)
      {
      if(kbhit())
         {
         k=getc();
         putc(k);
         y=tach(k);
         }
         hien(y);
      }
   }

thay đổi nội dung bởi: namqn, 18-03-2009 lúc 01:16 AM. Lý do: định dạng code
phamngocthanh87 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn