|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
|
Ðiều Chỉnh | Xếp Bài |
17-03-2009, 11:35 PM | #1 |
Đệ tử 2 túi
Tham gia ngày: Jan 2009
Bài gửi: 29
: |
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 |
Ðiều Chỉnh | |
Xếp Bài | |
|
|