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-02-2009, 07:47 PM   #1
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
mình muốn chạy led nhièu hiệu ứng cùng lúc làm thể nào

mình vẫn dùng con pic 16f84a ,đièu khiển portb 8 chân và porta a chân .
mình có một số thắc măc mà làm mãi không được .
1,mình muỗn ghép 2 port a và b để điều khiển chạy led theo cùng một hiệu ứng ,như vậy mình sẽ có 12 chân điều khiển .
2.mình muốn hỏi có thể đièu khiển cùng một lúc các chân với các hiệu ứng khác nhau ko ?
VD: portb có 8 chan là Rb0->rb7
vậy chia đôi ra từ rb0->rb3 là 1 hiệu ứng ,và 4 chân còn lại 1 hiệu ứng khác mà lại chạy cùng lúc song song nhau ,thời gian trễ khác nhau có dc ko ?

mình đang định làm một cái biển quảng cáo cafe bằng đèn led ,dung pic 16f84a 8 bit
mình muốn dùng 3 chân của portb để đièu khiển chạy viền xung quanh ,các chân còn lại để đièu khiển các chữ trong bên trong bảng ,một bài toán là viền ngoài vẫn chạy bình thường và chữ bên trong vẫn nháy loạn lên cùng một thòi điểm .v.v.
thanks ,rất mong dc chỉ giáo
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-02-2009, 10:13 PM   #2
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
nội dung bạn làm đơn giản,bạn làm tới đâu rùi pót lên mọi người góp ý cho, chưa làm mà hỏi e rằng kô ai trả lời đâu...
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 10:58 AM   #3
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi vuthien86 View Post
mình vẫn dùng con pic 16f84a ,đièu khiển portb 8 chân và porta a chân .
mình có một số thắc măc mà làm mãi không được .
1,mình muỗn ghép 2 port a và b để điều khiển chạy led theo cùng một hiệu ứng ,như vậy mình sẽ có 12 chân điều khiển .
2.mình muốn hỏi có thể đièu khiển cùng một lúc các chân với các hiệu ứng khác nhau ko ?
VD: portb có 8 chan là Rb0->rb7
vậy chia đôi ra từ rb0->rb3 là 1 hiệu ứng ,và 4 chân còn lại 1 hiệu ứng khác mà lại chạy cùng lúc song song nhau ,thời gian trễ khác nhau có dc ko ?

mình đang định làm một cái biển quảng cáo cafe bằng đèn led ,dung pic 16f84a 8 bit
mình muốn dùng 3 chân của portb để đièu khiển chạy viền xung quanh ,các chân còn lại để đièu khiển các chữ trong bên trong bảng ,một bài toán là viền ngoài vẫn chạy bình thường và chữ bên trong vẫn nháy loạn lên cùng một thòi điểm .v.v.
thanks ,rất mong dc chỉ giáo
theo mình nghĩ bạn làm thế này :
việc hiện thị nội dung các chữ thì bạn chạy bình thường, còn chương trình chạy viền thì bạn viết trong ngắt ấy,đia chỉ ngắt của 16f84 là 04h, mỗi một " nháy loạn "( từ bạn viết) thì minh goi 1 ngắt, nguyen lý của ngắt là nếu chương trình chính đang chạy nếu có một ngắt xảy ra thì nó sẽ dừng lại để thực hiện ngắt sau đó tiếp tục quay trở lại chương trình chính thực hiện tiếp
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 11:49 AM   #4
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
uh ý mình là thế đó ,mình mới học ccs và pic dc 4 ngày thôi ,có nghe đến ngắt nhưng chưa hiểu lắm ,và mình nghĩ là chắc phải dùng đến ngắt .
bạn có thể chỉ cho mình thêm về ngắt ,có đọc một số tài liệu nhưng ko hiểu lắm ,
cú pháp của nó như thế nào ?
theo như bạn nói ,một chương trình chính đang chạy có ngắt thì sẽ dừng lại để thực hiện trong ngắt ,vậy nếu chương trình chính là nháy chữ bên trong thì mỗi một "nháy" cua chương trình chính mình gọi ngắt ,chương trình chính sẽ dừng lại đê thực hiện ngắt ,
mình có đièu chỉnh đuọc thời gian ngắt ,.v.v. nói chung là bạn có thể cho mình những kiến thức cơ bản nhất vè ngắt .thanks
đi vào cái này mới thấy có nhiều vấn đề học mãi ko hết
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 02:52 PM   #5
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi vuthien86 View Post
uh ý mình là thế đó ,mình mới học ccs và pic dc 4 ngày thôi ,có nghe đến ngắt nhưng chưa hiểu lắm ,và mình nghĩ là chắc phải dùng đến ngắt .
bạn có thể chỉ cho mình thêm về ngắt ,có đọc một số tài liệu nhưng ko hiểu lắm ,
cú pháp của nó như thế nào ?
theo như bạn nói ,một chương trình chính đang chạy có ngắt thì sẽ dừng lại để thực hiện trong ngắt ,vậy nếu chương trình chính là nháy chữ bên trong thì mỗi một "nháy" cua chương trình chính mình gọi ngắt ,chương trình chính sẽ dừng lại đê thực hiện ngắt ,
mình có đièu chỉnh đuọc thời gian ngắt ,.v.v. nói chung là bạn có thể cho mình những kiến thức cơ bản nhất vè ngắt .thanks
đi vào cái này mới thấy có nhiều vấn đề học mãi ko hết
các lệnh dùng cho ngắt trong CCs:
enable_interrupts(level);//cho phép ngằt kiểu level
disable_interrupts(level);//cấm ngắt kiểu level
ext_int_edge(edge);// chọn lấy xung cạnh thấp hay cao
level bao gồm:

GLOBAL : ngắt toàn cục
INT_RTCC : tràn TMR0
INT_RB : có thay đổi trạng thái một trong các chân RB4 đến RB7
INT_EXT : ngắt ngoài
INT_AD : chuyển đổi AD đã hoàn tất
INT_TBE : bộ đệm chuyển RS232 trống
INT_RDA : data nhận từ RS232 sẵn sàng
INT_TIMER1 : tràn TMR1
INT_TIMER2 : tràn TMR2
INT_CCP1 : có capture hay compare trên CCP1
INT_CCP2 : có capture hay compare trên CCP2
INT_SSP : có hoạt động SPI hay I2C
INT_PSP : có data vào cổng parallel slave
INT_BUSCOL : xung đột bus
INT_EEPROM : ghi vào eeprom hoàn tất
INT_TIMER0 : tràn TMR0
INT_COMP : kiểm tra bằng nhau comparator

edge bao gồm:

L_TO_H : cạnh lên
H_TO_L : cạnh xuống
vi du ban viết cho ngằt INT_RB ( ngắt khi có thay đổi trạng thái của các chân RB4 ->RB7)
#INT_RB
void chayvien()
{....code....ban viết để điều khiển viền theo ý bạn}
trong main bạn phai viết các lệnh trên dể có thể sử dụng nó ( cho phép nó và nó xày ra khi nào :xung thap hay cao )
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 05:27 PM   #6
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
thanks mình phải ngâm kíu thêm ,"cho phép nó và nó xày ra khi nào :xung thap hay cao )" ở trong mian ,cái này chuă hiểu lắm ,để mình đọc thêm tài liệu về ngắt đã ,có gì ko hiểu sẽ hỏi bạn tiếp .cảm ơn nhièu

bạn có đoạn code nào sử dụng ngắt cho mình xem làm vi dụ với ,1 chương trình hoàn chỉnh .

thay đổi nội dung bởi: vuthien86, 20-02-2009 lúc 06:03 PM.
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-02-2009, 10:27 PM   #7
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
trong hàm main bạn khai báo sử dụng loại ngắt (timer, ngắt ngoài,...)(cho phép ngắt), nhưng khi nào thì xảy ra ngắt...mỗi loại ngắt có một tác động riêng khi dấu hiệu này bị tác động sẽ gây ra ngắt (ví dụ timer ngắt khi bị trào, ngắt ngoài khi thay đổi xung,...)
đoạn code đầy đủ sử dụng ngắt timer đây
Code:
//********************************************************************
#include <16F877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
////#use fast_io(b)
#byte portc=0x07     ///khai bao dia chi portb
#byte portb=0x06
////#define led pin_B0
int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(0);
++count;
if(count==560)
   {
count=0;
a=a<<1;  // dich trai a 1bit
   }
if(a==256)
   {
a=1;
count=0;
   }
}
//Chuong trinh chinh
main()
{
set_tris_c(0);
set_tris_b(0);
enable_interrupts(global);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
set_timer0(0);
count=0;
a=1;
while(true)
   {
portc=a;
portb=0x01010101;
   }
}

thay đổi nội dung bởi: namqn, 20-02-2009 lúc 10:52 PM.
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-02-2009, 08:58 AM   #8
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
cảm ơn bạn nhiệt tình quá ,để mình thử làm xem .
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-02-2009, 09:11 AM   #9
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
INT_TIMER0 : tràn TMR0

INT_TIMER1 : tràn TMR1
INT_TIMER2 : tràn TMR2

ngắt timer khi bị trào là thế nào hả bác
trong code bạn giải tyhichs hộ mình
giá trị (count==560) là gì ,giá trị 560 mình ko hiểu

thay đổi nội dung bởi: vuthien86, 23-02-2009 lúc 10:20 AM.
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-02-2009, 10:27 AM   #10
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Đơn giản ví dụ bạn đặt thời gian cho Timer là 1s thì sau đúng 1 s sẽ xảy ra ngắt.
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-02-2009, 10:44 AM   #11
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
Code:
#include <16F877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
////#use fast_io(b)
#byte portc=0x07     ///khai bao dia chi portb
#byte portb=0x06
////#define led pin_B0
int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(0);
++count;
if(count==560)
   {
count=0;
a=a<<1;  // dich trai a 1bit
   }
if(a==256)
   {
a=1;
count=0;
   }
}
//Chuong trinh chinh
main()
{
set_tris_c(0);
set_tris_b(0);
enable_interrupts(global);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
set_timer0(0);
count=0;
a=1;
while(true)
   {
portc=a;
portb=0x01010101;
   }
}
cái code của bạn mình thử chạy thì ban đầu portc các led chạy sáng chạy nhanh ,cổng b chỉ có một đèn sáng
nhưng mình thử chèn thêm một đoạn code cho cổng b sáng theo ý mình thì portc đèn chạy chậm lại .vậy là sao nhỉ ,

thay đổi nội dung bởi: namqn, 23-02-2009 lúc 04:35 PM.
vuthien86 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-02-2009, 08:39 PM   #12
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
bạn xem kỹ chương trình, khi gán giá trị timer là số bất kỳ (tùy timer0,1,..giá trị đếm lên khác nhau) sau dòng lệnh set_timer thi timer sẽ đếm đến giá trị 8bit hay 16 bit nó trào sinh ra ngắt nhảy đến ngắt thực thi xong sẽ nhảy về chổ cũ lúc gọi ...
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-02-2009, 09:56 AM   #13
vuthien86
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 13
:
mình hiểu rồi ,thanks các bác .em hoàn thành dc cái biển quảng cáo roài hihi .
vuthien86 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à 07:49 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