PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 29-09-2011, 06:31 PM   #1
star_dream
Nhập môn đệ tử
 
Tham gia ngày: Sep 2011
Bài gửi: 1
:
xin các anh giải thích dùm em code CCS này

Đây là code bài điều khiển nhiệt độ bằng PIC 16F877A kết hợp VB giao tiếp bằng máy tính, bạn em viết code vi xử lý được nhưng không giải thích được nên em nhờ các anh giải thích dùm cái đoạn code này :

#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
char c,data=0;
unsigned int16 connect,control;
//-----------------------------------------------

#INT_RDA // ngat cho biet data nhan tu RS232 da san sang
// begin chuong trinh ngat
void ngatrs232()
{
char c;
c = getc(); // ham tra ve ki tu khi doc tu RS232
if(c=='0')
{
putc(c); //ham gui ki tu den rs23
delay_ms(10);
}
if(c=='2')
{
data=0;
control=2;
}
if(c=='3')
{
data=0;
control=3;
}
}
void main()
{
connect=0;
control = 0;
enable_interrupts(INT_RDA);
ext_int_edge(H_TO_L);
enable_interrupts (GLOBAL);
//Khoi tao che do cho bo ADC
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_ms(500);

//Khoi tao cac port
set_tris_A(0xff);
set_tris_B(0x00);
set_tris_C(0x80);
output_B(0x00);

while(1)
{
if(control==2)
{
output_B(0xff);
data = read_adc();
data = data*1.960784314;
putc(data);
delay_ms(500);
}
if(control==3)
{
output_B(0x00);
data = read_adc();
data = data*1.960784314;
putc(data);
delay_ms(500);
}
}
}


Code bên VB của em có Tmin và Tmax. Trong đoạn code vi xử lý trên, em hỏi bạn em làm sao để hiển thị Tmin và Tmax thì bạn em gán control 2 cho Tmin và control 3 cho Tmax nhưng em hỏi làm sao code vi xử lý nó hiểu là control 2 cho Tmin thì bạn em không giải thích được nên em nhờ các anh giải thích dùm chỗ này. ( Có nghĩa là khi nhiệt độ vượt quá Tmax thì đèntắt và ngược lại ).
Vấn đề thứ 2 mà em không hiểu là đoạn main :
void main()
{
connect=0;
control = 0;
enable_interrupts(INT_RDA);
ext_int_edge(H_TO_L);
enable_interrupts (GLOBAL);
Em không hiểu tại sao lại cho control =0 ngay vòng main sao bên VB nhận bên vi xử lý mà nó điều khiển được và các dòng còn lại. Bạn em không viết dùm em chỗ này thì nó không chạy được, em hỏi bạn em thì bạn em chỉ biết lập trình nhưng không giải thích được cho em nên em mong các anh giải thích chỗ này cho em.
Đó là hai vấn đề em bị vướng mắc mà không giải đáp được.
Em rất mong rất mong các anh có thể giải thích dùm em. Em cảm ơn các anh nhiều lắm.
star_dream 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à 08:51 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