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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 19-04-2008, 03:52 PM   #1
dovanhiep
Đệ tử 1 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 11
:
ai thông dịch cho em đoạn code này với! Em đang cần gấp

/*
trinh dich MikroC
*/
#include"built_in.h"
//Khai bao cac bien
unsigned short cnt;
unsigned short T_dat;
unsigned short T_do;
unsigned short Hang_chuc;
unsigned short Hang_dv;
unsigned short t2;
unsigned int temp;
unsigned int T;
char *txt;
float t1;
//Cac tham so cua bo dieu khien
float a0;
float a1;
float a2;
float b1;
float b2;
//Cac bien qua trinh
float ek;
float rk;
float rk_1;
float rk_2;
float uk;
float M1;
float M2;

//Ham tinh dau ra
float Caculate_PID(){
ek = T_dat - T_do;
rk = ek + M1;

uk = a0*rk + M2;

rk_2 = rk_1;
rk_1 = rk;
M1 = (-1)*(b1*rk_1 + b2*rk_2);
M2 = a1*rk_1 + a2*rk_2;

t2=0;
return uk;
}



//Ham phuc vu ngat timer1
void interrupt() {
cnt++ ;
PIR1.TMR1IF = 0; // clear TMR1IF

T = T + Adc_Read(0);
if (cnt==20) {
temp = T/20;
T_do = temp*100/614;
T = 0;
temp = 0;
cnt = 0;
t2 = 1;
}
//Nap lai so dem
TMR1H = 0x3C;
TMR1L = 0xB0;
}//~

void init_Timer1() {
//dat thoi gian tre cho timer
TMR1H = 0x3C;
TMR1L = 0xB0;

TRISB = 0;
T1CON = 1;
PIR1.TMR1IF = 0; // clear TMR1IF
PIE1 = 1; // enable interrupts
}

void init_LCD(){
Lcd8_Config(&PORTD,&PORTB,0,2,1,7,6,5,4,3,2,1,0);
txt = "T_dat:";
Lcd8_Cmd(LCD_CURSOR_OFF); // Turn off cursor
Lcd8_Out(1, 1, txt); // Print text on LCD
txt = "T_do:";
Lcd8_Out(2,1,txt);
}

void update_LCD(){
//update T_dat
Hang_chuc = T_dat/10;
Lcd8_Chr(1,8,48+Hang_chuc);
Hang_dv = T_dat - Hang_chuc*10;
Lcd8_Chr(1,9,48+Hang_dv);
//update T_do
Hang_chuc = T_do/10;
Lcd8_Chr(2,8,48+Hang_chuc);
Hang_dv = T_do - Hang_chuc*10;
Lcd8_Chr(2,9,48+Hang_dv);
}


void main() {

ADCON1 = 0x80; // Configure analog inputs and Vref
TRISA = 0xFF; // PORTA is input
INTCON = 0xC0;
PORTB = 0xF0;

//Khoi tao gia tri ban dau cho cac bien
cnt=0;
T_dat=60;
//khoi tao timer1
init_Timer1();
//Khoi tao LCD
init_LCD();

//Khoi tao PWM
Pwm_Init(1000); // Initialize PWM module
Pwm_Start(); // Start PWM



while (1) {
update_LCD();
if (t2) {
t1 = Caculate_PID()/220;
};
Pwm_Change_Duty(t1*255); // set new duty ratio,


};
}//~!
dovanhiep vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-04-2008, 05:55 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn không rõ chỗ nào thì hỏi chỗ đó, code đã chú thích tương đối đầy đủ, rõ ràng, và viết bằng C.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-04-2008, 10:27 PM   #3
dovanhiep
Đệ tử 1 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 11
:
anh có thể giải thích cho em cụ thể hơn được không? Em mới quan tâm về C, nói chung la non kém lắm, anh hướng dẫn giúp em. Càng cụ thể càng tốt
dovanhiep vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-04-2008, 12:58 AM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi dovanhiep View Post
anh có thể giải thích cho em cụ thể hơn được không? Em mới quan tâm về C, nói chung la non kém lắm, anh hướng dẫn giúp em. Càng cụ thể càng tốt
Rất tiếc là tôi sẽ không giải thích toàn bộ chương trình cho bạn. Bạn đã post một chương trình đầy đủ chứ không phải một đoạn code.

Để nắm được những gì người khác giải thích cho bạn, bạn nên tự giải thích đoạn code/chương trình đó trước. Bạn hãy tin tôi, làm như vậy sẽ giúp bạn hiểu những gì người khác giải thích một cách nhanh chóng và dễ dàng hơn. Nên nhớ, người học là bạn chứ không phải người sẽ giúp bạn.

Nếu bạn mới học C, hãy tìm một quyển sách về C để đọc trước. Tôi không làm việc giải thích ngôn ngữ C ở đây đâu, khi đã có hàng trăm quyển sách viết C đã được viết.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-04-2008, 08:35 AM   #5
dovanhiep
Đệ tử 1 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 11
:
cam on anh gop y ! em se co gang!
dovanhiep vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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:01 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