PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Từ PIC16F877A đến PIC16F887 (http://www.picvietnam.com/forum/showthread.php?t=1198)

fly_1304 16-07-2011 09:06 PM

void chuyen_doi_adc()
{
set_adc_chanel(0);
delay_us(10);
value[0]=read_adc();//doc gia tri dua va chuyen doi gia tri adc do cam bien dua vao
set_adc_chanel(1);
delay_us(10);
value[1]=read_adc();
set_adc_chanel(2);
delay_us(10);
value[2]=read_adc()
set_adc_chanel(3);
delay_us(10);
value[0]=read_adc();
set_adc_chanel(4);
delay_us(10);
value[1]=read_adc();
set_adc_chanel(5);
delay_us(10);
value[2]=read_adc()

for(i=0;i<=5;i++)
{
if(value[i]<580) cb[i]=1;
else if(value[i]>620) cb[i]=0;
}
}
ai giải thích hộ em đoạn code này với

NGUYEN24 26-10-2011 06:12 PM

Trích:

Nguyên văn bởi tree (Post 45971)
các huynh cho đệ hỏi pic 16f877a dùng phần mềm nào để nạp và mạch nạp nào thì hiệu quả nhât.

Bạn này có thể dùng PICKIT2 để nạp, phần mềm thì có thể dùng PICKIT2, hoặc có thể nạp trên MPLAB

holy_ghost 09-12-2011 11:50 AM

1 Attachment(s)
Mình đang làm mạch điều khiển động cơ DC, nhưng khi mô phỏng với Proteus ko chạy. Ai bjt lỗi gì ko? HELP!

Mô phỏng Proteus: http://www.mediafire.com/?tkk2cghepz34vp5


CODE:

#include <16F877A.h>

#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
#use delay(clock=10000000)
#use fast_io(b)
#define tocdo0 0 //toc do bang 0
#define td_macdinh 80 //toc do mac dinh
#define tocdo1 124 //1/5 toc do cuc dai
#define tocdo2 248 //2/5 toc do cuc dai
#define tocdo3 372 //3/5 toc do cuc dai
#define tocdo4 496 //4/5 toc do cuc dai
#define tocdo5 620 //toc do cuc dai
#byte portB =0x06
#bit B0 = portB.0
#bit B1 = portB.1
#bit B2 = portB.2
#bit B3 = portB.3
#bit B4 = portB.4
#bit B5 = portB.5
#bit B6 = portB.6
#bit B7 = portB.7
int16 duty1=0;
int16 duty2=0;
int8 bientocdo=0;
int1 bienthuan=0;
int1 biennghich=0;
void main() //bo PMW1 dk dong o quay thuan
{ //bo PMW2 dk dco quay nghich
set_tris_b(0x0ff); //khoi tao port B la port nhap
setup_ccp1(CCP_PWM); //khoi tao bo PWM1
setup_ccp2(CCP_PWM); //khoi tao bo PWM2
setup_timer_2(T2_div_by_16,154,1); //tao chu ky xung 1ms
//(1/clock)*4*t2div*(period+1)
//(1/10e6)*4*16*(154+1)=1e-3=1ms

set_pwm1_duty(duty1);
set_pwm2_duty(duty2);
//gia tri duty cua PWM duoc tinh theo cong thuc duty1*t2div/clock
//khoi tao duty=0 -> tat dong co
while(true)
{

if (B0 == 1)) //neu nhan phim FO : chay thuan
{
duty1=tocdo0;
duty2=tocdo0;
set_pwm1_duty(duty1); //cho duty cua 2 bo PMW=0 de
set_pwm2_duty(duty2); //tat dong co
delay_ms(1000); //delay 1s de giam quan tinh dong co
bienthuan=1;
biennghich=0;
goto next;
}
if (!bit_test(portb,2)) //neu nhan phim RE : chay nghich
{
duty1=tocdo0;
duty2=tocdo0;
set_pwm1_duty(duty1); //cho duty cua 2 bo PMW=0 de
set_pwm2_duty(duty2); //tat dong co
delay_ms(1000); //delay 1s de giam quan tinh dco
bienthuan=0;
biennghich=1;
goto next;
}
if (!bit_test(portb,3)) //nhan phim toc do 1
{
bientocdo=1;
goto next;
}
if (!bit_test(portb,4)) //nhan phim toc do 2
{
bientocdo=2;
goto next;
}
if (!bit_test(portb,5)) //nhan phim toc do 3
{
bientocdo=3;
goto next;
}
if (!bit_test(portb,6)) //nhan phim toc do 4
{
bientocdo=4;
goto next;
}
if (!bit_test(portb,7)) //nhan phim toc do 5

bientocdo=5;
next:

if (!bit_test(portb,0)) //neu nhan phim OFF
{
duty1=tocdo0;
duty2=tocdo0;
set_pwm1_duty(duty1); //cho duty cua 2 bo PMW=0 de
set_pwm2_duty(duty2); //tat dong co
bienthuan=0;
biennghich=0;
bientocdo=0; //xoa bien toc do
}
if (bienthuan)
{
duty2 = tocdo0;
switch (bientocdo)
{
case 1: duty1= tocdo1;
break;
case 2: duty1= tocdo2;
break;
case 3: duty1= tocdo3;
break;
case 4: duty1= tocdo4;
break;
case 5: duty1= tocdo5;
break;
default : duty1 = td_macdinh;
break;
}
set_pwm1_duty(duty1); //cho dco chay thuan
set_pwm2_duty(duty2);
}

if (biennghich)
{
duty1 = tocdo0;
switch (bientocdo)
{
case 1: duty2= tocdo1;
break;
case 2: duty2= tocdo2;
break;
case 3: duty2= tocdo3;
break;
case 4: duty2= tocdo4;
break;
case 5: duty2= tocdo5;
break;
default : duty2 = td_macdinh;
break;
}
set_pwm1_duty(duty1); //cho dco chay nghich
set_pwm2_duty(duty2);
}
}
}

vuquanghoang 07-02-2012 02:11 AM

Trích:

Nguyên văn bởi zero (Post 9517)
Cho tôi hỏi chút nhé
1.Có thể mua được con 16F887 ở HN ko ? nếu có thì giá khoảng bao nhiêu?
2.Có thể dùng mạch nạp PC1 và PC3 để nạp cho con này ko? nếu ko thì dùng mạch nạp j?

Thank!

1. Bạn ra 17a Hàn thuyên có bán, giá khoảng 65k
2. tớ cũng ko rõ lắm, tớ thì dùng pickit2 giá 240k mua ở hoàng văn thái ý.


Múi giờ GMT. Hiện tại là 05:31 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