PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   quả thực là chưa hiểu (newbie) (http://www.picvietnam.com/forum/showthread.php?t=6879)

apiker 24-08-2010 11:13 PM

quả thực là chưa hiểu (newbie)
 
em có 1 chương trình như thế này:

#include <16f877A.h>
#include <def_877a.h>
#device *=16 ADC=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, LVP, NOCPD, NOWRT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9)
#include <lcd_lib_4bit.c>

int16 temp,high,low;
int8 nghin,tram,chuc,donvi;
int1 mili_volt;
float volt;
int8 const a1[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; // Khong co cham
int8 const a2[10] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10 }; // Co cham

#INT_EXT
void ngatngoai()
{

}
//==================================
void convert_bcd(int16 x)
{
nghin = x / 1000 + 0x30;
temp = x % 1000;
tram = temp / 100 + 0x30;
temp = temp % 100;
chuc = temp / 10 + 0x30;
donvi = temp % 10 + 0x30;
}
//===================================
void main() {

lcd_init();
printf(lcd_putchar,"CT Do dien ap");

setup_adc_ports(AN0);
chs0=0;chs1=0;chs2=0;
setup_adc(ADC_CLOCK_INTERNAL);
delay_us(10);

do {
temp = read_adc();
// Dang so thap phan
volt = (float)(temp*5)/1023;
if (volt < 1) mili_volt=1;
else mili_volt = 0;
// Dang so nguyen
high = (temp*5)/1023;
low = (temp*5)%1023;
// ====Truyen len may tinh
printf("\r\nGia tri ADC = %lu",read_adc());
Printf("\r\nGia tri dien ap = %f",volt);
//================
volt = volt * 1000;

convert_bcd((int16)volt);
lcd_putcmd(0xC0);

printf(lcd_putchar, "V = ");
if (!mili_volt) {lcd_putchar(nghin);lcd_putchar(".");}
lcd_putchar(tram);
lcd_putchar(chuc);
lcd_putchar(donvi);
if (mili_volt) printf(lcd_putchar," mV");
else printf(lcd_putchar," V");

printf("\r\n V = %lu",high);
if(low < 100)
printf(".0%2lu",low);
else
printf(".%lu",low);
} while(true);

}

các anh giải thích hộ em mục đích của chương trình này, và chức năng các câu lệnh trong vòng lặp do while (càng tỉ mỉ càng tốt ạ :D)
ngoài ra cho em hỏi là với chương trình này thì mình tạo mạch mô phỏng trên proteus như thế nào, và chung hơn là làm thế nào để biết nguyên lí mà tạo một mạch như thế, cần phải biết về những kiến thức gì?
Em mới học, rất mong nhận được những hướng dẫn quý báu của mọi người. có gì ngô nghê mong mọi người bỏ qua. (em cũng chưa biết cho 1 đoạn code vào khung như thế nào, chỉ giúp em với)

semipower 25-08-2010 07:03 PM

Bạn hỏi như thế nghe hơi căng!. Nếu như bạn mới học thì không nên tiếp cận theo cách này. Trước tiên bạn nên dạo qua các mục của diễn đàn (có mục dành cho người mới học PIC). Rồi đặt ra những vấn đề cụ thể hơn, từ đơn giản đến phức tạp. Bạn có thể vào đây: http://www.picvietnam.com/forum/forumdisplay.php?f=8

apiker 25-08-2010 07:30 PM

theo bạn, vơi những vấn đề mà mình hỏi trên, thì nên đặt những câu hỏi cụ thể, từ đơn giản đến phức tạp như thế nào?

kqha1025 25-08-2010 08:10 PM

Trích:

Nguyên văn bởi apiker (Post 38187)
theo bạn, vơi những vấn đề mà mình hỏi trên, thì nên đặt những câu hỏi cụ thể, từ đơn giản đến phức tạp như thế nào?

theo mình bạn nên tìm hiểu kỹ về phần cứng của chip, phần mềm lập trình ccs đi đã rồi sử dụng proteus mô phỏng.chứ bạn chưa tìm hiểu kỹ đã hỏi toàn bộ từ a ---> z như vậy biết trả lời thế nào!
chúc bạn thành công!

apiker 25-08-2010 11:02 PM

uhm, để mình ngâm cứu thêm vậy. có j hỏi lại các bạn sau.


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam