PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

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

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 14-11-2009, 12:32 PM   #1
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Em có tí thắc mắc về PWM !

các anh ơi . cho em hỏi 1 tí về phần PWM con 16F877A. tình hình hiện tại là em muốn tạo xung ra ở 3 chân PORTB là RB0,RB1,và RB2 dùng PWM, vậy có được không ạ. hay chỉ có thể tạo 1 xung thôi? ( em đang viết trên ASM). mong được giúp đỡ.
__________________
Cùng nhau chia sẻ tri thức
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-11-2009, 01:23 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
Trích:
Nguyên văn bởi zero07a View Post
các anh ơi . cho em hỏi 1 tí về phần PWM con 16F877A. tình hình hiện tại là em muốn tạo xung ra ở 3 chân PORTB là RB0,RB1,và RB2 dùng PWM, vậy có được không ạ. hay chỉ có thể tạo 1 xung thôi? ( em đang viết trên ASM). mong được giúp đỡ.
Nếu bạn muốn dùng chế độ PWM của module CCP trong PIC, bạn chỉ có thể dùng chân RC2/CCP1 hoặc RC1/CCP2 của PIC16F877A. Nếu bạn tự hiện thực chức năng PWM bằng phần mềm (dùng timer với ngắt được cho phép chẳng hạn), bạn có thể dùng bất kỳ chân digital output nào.

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 14-11-2009, 04:19 PM   #3
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Cảm ơn anh đã quan tâm bài em.em xin lỗi vì chưa đọc kĩ tài liệu mà hỏi vậy.à vậy là chỉ có 2 chân RC1/CCP2 và RC2/CCP1 mới dùng được trong PWM.em muốn là viết chương trình dùng PWM tạo 2 xung ở 2 chân này mãi mãi luôn.còn những pin khác làm vấn đề khác,ví dụ đọc ADC,..nghĩa là vừa tạo xung,vừa làm chuyện khác.không biết có được không anh nhỉ?à cho em hỏi luôn,em dùng proteus mô phỏng thử chân RA0 là ngõ ra(đã khai báo I/O)làm sáng thử 1 chú led mà sao không được ta.phải chăng em phải khai báo nó là chân Output digital phải không anh?nếu là input thì em cũng phải khai báo là in digital à.anh cho em ví dụ khai báo RAO là input đi.cho em hiểu vấn đề với.cảm ơn anh nhiều.
__________________
Cùng nhau chia sẻ tri thức
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 12:57 AM   #4
dung h
Đệ tử 4 túi
 
Tham gia ngày: May 2009
Bài gửi: 74
:
bạn chỉ cần setup ccpx ở chế độ pwm
setup_ccp1(ccp_pwm);
và thiết lập lập duty(độ rộng xung) cho nó
set_pwm1_duty(value);
tại những thời điểm khác nhau bạn có thể thay đổi duty cho nó
nó sẽ tạo xung mãi mãi đến khi nào bạn bạn setup nó làm việc ở chế độ khác hay ccp_of

để cho các chân là đầu ra hay đầu vào banj chỉ cần set_tris_x(xx)
vd all port là đầu vào : set_Tris_a(0xff);
RA0 là đầu vào còn lại là đầu ra : set_tris_a(0x01);
bít đó là 1 là đầu vào,0 là đầu ra
dung h vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 11:36 PM   #5
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Anh có thể cho em biết cụ thể về thiết lập duty cycle tại những thời điểm khác nhau được không ạ!ví dụ minh họa thì tốt quá.C òn về chuyện cái PORTA em thử viết 1 ví dụ mà em thử chạy mà không thấy tín hiệu gì hết nhe:
Code:
PROCESSOR 16F877A
;khai bao phan cung
;......
INCLUDE <P16F877A.INC>
ORG 0000H
BCF STATUS,RP0
BCF STATUS,RP1
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0
BSF TRISA,0
BCF TRISB,0
BCF STATUS,RP0
MAIN 
BTFSC PORTA,0
GOTO MAIN
BSF POSTB,0
GOTO $
END
trên là đoạn chương trình em thử I/O.nhưng chạy trên proteus thấy có gì đâu,con led ngay chân RB0 đâu có sáng đâu.chỗ này em chưa hiểu.mong các anh giúp đỡ em với.cảm ơn nhiều.
__________________
Cùng nhau chia sẻ tri thức

thay đổi nội dung bởi: namqn, 17-11-2009 lúc 01:44 PM. Lý do: định dạng code
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2009, 05:56 PM   #6
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
ec ec. các bạn cùng mình trao đổi đi nào. làm gì mà chẳng ai thèm trao đổi thế nhỉ. giấu nghề à. vậy tham gia picvietnam làm gì. chả nhẽ không phải học hỏi lẫn nhau?????
__________________
Cùng nhau chia sẻ tri thức
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2009, 11:41 PM   #7
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Hic.có vẻ như mọi người ít hứng thú với ASM lắm thì phải.tội nghiệp thân tôi.học dốt C quá nên bây giờ mới khổ đây mà.heyd.
__________________
Cùng nhau chia sẻ tri thức
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-11-2009, 12:54 PM   #8
congdatquan
Nhập môn đệ tử
 
Tham gia ngày: May 2009
Bài gửi: 8
:
Trích:
Nguyên văn bởi zero07a View Post
Hic.có vẻ như mọi người ít hứng thú với ASM lắm thì phải.tội nghiệp thân tôi.học dốt C quá nên bây giờ mới khổ đây mà.heyd.
uh tôi cũng thấy dùng nhiều C có lẽ chuyển sang học C trao đổi cho ngon cơm.
congdatquan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-11-2009, 01:24 PM   #9
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Uh.thôi từ nay đi tìm sư học C để theo kịp anh em vậy.
__________________
Cùng nhau chia sẻ tri thức
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-11-2009, 01:48 PM   #10
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 zero07a View Post
Anh có thể cho em biết cụ thể về thiết lập duty cycle tại những thời điểm khác nhau được không ạ!ví dụ minh họa thì tốt quá.C òn về chuyện cái PORTA em thử viết 1 ví dụ mà em thử chạy mà không thấy tín hiệu gì hết nhe:
Code:
PROCESSOR 16F877A
;khai bao phan cung
;......
INCLUDE <P16F877A.INC>
ORG 0000H
BCF STATUS,RP0
BCF STATUS,RP1
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0
BSF TRISA,0
BCF TRISB,0
BCF STATUS,RP0
MAIN 
BTFSC PORTA,0
GOTO MAIN
BSF POSTB,0
GOTO $
END
trên là đoạn chương trình em thử I/O.nhưng chạy trên proteus thấy có gì đâu,con led ngay chân RB0 đâu có sáng đâu.chỗ này em chưa hiểu.mong các anh giúp đỡ em với.cảm ơn nhiều.
Sơ đồ mô phỏng trong Proteus đã đúng chưa? Có hai loại LED trong Proteus, bạn cần chọn loại LED mà phần mô tả của nó có ghi "Animated LED model ..." thì nó mới sáng khi bạn phân cực thuận cho nó.

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 17-11-2009, 02:33 PM   #11
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Dạ em đã lấy rồi mà.mấy con led đó em dùng hoài chứ đâu.còn đoạn code ý em là em cho RAO mức logic ở ngõ vào.nếu RAO lên 1 thì led chân RBO có điện trở 330 đi kèm sẽ sáng mãi theo GOTO $.vậy mà không thấy led sáng anh ạ.
__________________
Cùng nhau chia sẻ tri thức
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2009, 05:17 PM   #12
wanah
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 1
:
Trích:
Nguyên văn bởi zero07a View Post
Dạ em đã lấy rồi mà.mấy con led đó em dùng hoài chứ đâu.còn đoạn code ý em là em cho RAO mức logic ở ngõ vào.nếu RAO lên 1 thì led chân RBO có điện trở 330 đi kèm sẽ sáng mãi theo GOTO $.vậy mà không thấy led sáng anh ạ.
Bạn thử bỏ đi dòng "BTFSC PORTA,0" và "GOTO MAIN" xem thử led có sáng ko (trong proteus bạn thử kíck đúp vào con điện trở rùi đổi thông số là Analog thành Digital xem sao)
Thân !!
wanah vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-11-2009, 12:02 AM   #13
kiemsi_88
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 5
:
sao bạn lại cần dòng lệnh này?
BTFSC PORTA,0
GOTO MAIN

nếu bạn chỉ muốn Led sáng thì cần dòng lệnh này làm j
kiemsi_88 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-11-2009, 12:44 AM   #14
zero07a
Đệ tử 1 túi
 
zero07a's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Ý em ở đây là em cho mức logic ở ngõ vào RA0(0 và 1).bình thường là mức 0,khi em cho RA0 lên mức 1 thì led tại chân RB0 sẽ sáng lun.thế đấy mà làm hoài chẳng được.anh nào cho em vài ví dụ dùng PWM tại những thời điểm khác nhau với.để em thấy được tầm quan trọng của PWM,chứ như giờ thì mơ hồ quá.
zero07a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-11-2009, 08:43 AM   #15
Yokel
Đệ tử 1 túi
 
Yokel's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 21
:
Bạn thử khai báo RA0 là ngõ vào D như trong khai báo ADC thử xem!
__________________
Yokel is me
Yokel 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à 04:02 PM.


Đượ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