PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 13-04-2012, 10:56 PM   #1
mrsin
Đệ tử 2 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 34
:
Lightbulb Giúp em sửa code pic giao tiếp với máy tính

Vấn đề của em như sau:
Từ VB em truyền 16 ký tự số xuống pic16f877a(lưu các giá trị nhận được từ VB vao eeprom của con pic >> lưu thế này không biết có được không ạ ) và cho hiển thị lên led 7 đoạn(A chung),sử dung IC giải mã 74hc595, em đã viết rồi mà không chạy. Mong anh chị xem và sửa giúp em, em xin cám ơn.

#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bi ts=9) //Baud_min=4800 Baud_max=115200
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9)


// Dinh nghia cac chan cho ket noi 74595
//#bit SCL=0x08.7
//#bit DATA=0x08.6
//#bit SCK=0x08.5
#define SCL RD5
#define DATA RD6
#define SCK RD7
//#byte TRISD =0x88
void quet(unsigned char x);
void layma();
void luudata(char a);
void display();


unsigned char Mrs232[];//mang nhan gia tri tu rs232
unsigned int Z[];//mang chua cac gia tri led7
unsigned int count;
unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};//ma led 7

#INT_RDA
Receive_isr()
{
char c;
c=getch();
luudata(c);
}
void luudata(char a)
{int i;
for(i=0;i<16;i++)
{
write_eeprom(i,Mrs232[i]);
}
}
void quet(unsigned char x)
{
int i,temp1;
for(i=0;i<8;i++)
{
temp1=x;//gan bien
temp1=temp1&0x80;//lay ra bit dau tien (bit 7)
if(temp1==0x80)//so sanh bit
DATA=1; //bang 1 thi xuat vao chip =1
else
DATA=0; //nguoc lai bang 0
x*=2; //dich bit lay bit trong so thap
SCK=0; //tao xung tren chan 11
SCK=1; //1 xung dua vào 1 bít
}
}
void display()
{
int i;
for(i=0;i<16;i++)
{
quet(Mrs232[i]);
}
SCL=0; //xuat du lieu ra output
SCL=1;
}
void layma()
{
int i,j;
for(i=0;i<16;i++)
{
j=Mrs232[i]-48;
if(j>9) Z[i]=ma[0];
else Z[i]=ma[j];
}
}

void main()
{
int i;
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
trisd=0x00;
trisc=0x00;
for(i=0;i<16;i++)
{
Mrs232[i] = read_eeprom(i);
}
layma();
while(1)
{
display();
delay_ms(500);
}

}
mrsin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 09:49 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam