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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 27-10-2010, 05:11 PM   #8
thangkho89
Nhập môn đệ tử
 
Tham gia ngày: Feb 2010
Bài gửi: 7
:
hongmta cho mình hỏi được không?

mình đã có viết lại code thế này

#include "16f877a.h"
#include "def_877a.h"
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT ,PUT
#use fast_io(a)//khai bao nay trong ccs chi thuc hien dung 1 lenh cho viec i/o
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
#use delay(clock=10000000)//thach anh 10 M
#define tien rd0
#define lui rd1
#define trai rd2
#define phai rd3
#define nang rd4
#define ha rd5
#define kep rd6
#define tha rd7
#define L1 ra1
#define R1 ra2
#define L2 ra3
#define R2 ra4
//khai bao cac chan ra cho dong co
#define pwm_dc_l rb6 //dong co trai
#define dir_l rb1 // dao chieu
#define pwm_dc_r rb7 //dong co phai
#define dir_r rb3 // dao chieu
#define dc_nang rb2 // dao chieu
#define dc_kep rb4 // dao chieu
//dinh nghia trang thai phim bam
#define bam 0
#define nha 1
//HAM CON
void setup_phim();
void retrai();
void rephai();
void cap1();
void cap2();
int duty1,duty2;

//khoi tao ngat timer0
void bamxung(int duty1,int duty2);

void main()
{
trise = trisb = trisc = 0x00;
trisd = trisa = 0xff;
portb = 0x00;
setup_ccp1(CCP_PWM); // Bat che do PWM cho RC1
setup_ccp2(CCP_PWM);
while(true)
{
setup_phim();
}
}
void setup_phim()
{

if((tien == bam))
{
bamxung(310,475);
}
else if((tien = lui = trai = phai = nang = ha = kep = tha == nha))
{
bamxung(0,0);
}

}

void bamxung(duty1,duty2)
{
set_pwm1_duty(duty1);
set_pwm2_duty(duty2);
setup_timer_2(T2_DIV_BY_16,154,1);//Ta co PR2=199,prescale=1
}

Theo như mình tính thì duty1 và duty2 = 620 thì chạy 100%
nhưng ở code này khi mình set 2 pwm thì xung ra lại không như thế.

giả sử mình muốn pwm1 là 50% và pwm2 là 75% thì không thể làm được,
nếu để duty1 = duty2 thì cả 2 cũng đều ko thể đặt được 50% như mong muốn.
mình nghĩ là nó thực hiện hết duty1 rồi mới thực hiện duty2 có phải ko nhỉ.

rất mong được giúp đỡ.để mình send mô phỏng của mình bạn xem hộ nha
File Kèm Theo
File Type: rar test.rar (13.5 KB, 124 lần tải)

thay đổi nội dung bởi: thangkho89, 27-10-2010 lúc 05:46 PM.
thangkho89 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bà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à 05:36 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