![]() |
chương trình ngắt cho PIC16F877A
1 Attachment(s)
em đang làm đề tài cảm biến nhiệt độ dùng pic 16f877a hiển thị lên 3 led 7 đoạn dùng ngôn ngữ C,jờ e muốn khi đến nhiệt độ 80*C thì chuông sẽ reo,nếu như vậy mình có cần sử dụng ngắt ko mấy anh và chương trình như thế nào?xin mấy anh giúp dùm,em cám ơn
|
có ai júp em với,đang cần lắm..hix
|
dùng ngắt hay ko thì tùy bạn, theo mình thì nên dùng ngắt, chương trình voi main() thì bạn viết cho nó hiển thị led và đọc ADC, bên trong ngắt thì bạn tạo xung PWM cho chuông nó reo.
trong void main() thì viết khai báo, hiển thị led va đọc ADC bình thường, để ngắt xảy ra thì Set bit GIE, vì ADC là ngoại vi nên Set them bit PEIE, sau đó sét bitADIE, và ngắt xảy ra khi ADIF = 1, việc muốn nó bao nhiêu thì ngắt là bạn quyết định. cái sườn là vậy, bạn tự viết nhé! |
anh có thể nói rõ hơn được ko?em mới học về pic nên ko rành về ngắt lắm...
|
em down datasheet của nó về xem phần sơ đồ interrupt ấy.
để sử dụng chương trình ngắt thì GIE=1, để ngắt ngoại vi (timer1, timer2, ADC...) thì bít PEIE=1, (nếu dùng ngắt Timer0 thi ko cần), và để ngắt ADC thì set ADIE=1; |
Trích:
..... . . x=read_ADC(); x=x*2.049 //nếu ADC ở chế độ 10bit và sử dụng LM35 ,,nếu dùng loại khác thì tính toán lại// if(x>=80) { y=120 ; //giá trị này để cài dặt tần số để chuông reo..thường thì vài kHz xuatxung(); //đưa giá trị y=120 vào duty của PWM =>XUẤT XUNG } else { y=0; xuatxung(); //đưa 0 vào duty =>tắt xung } . . . . void xuatxung() { setup_ccp1(CCP_PWM); set_pwm1_duty(y); //đưa giá trị duty vào đây set_timer_2(t2_div_by_4,255,1) } chắc bạn đã hiểu ý mình rối chứ.chúc bạn thành công. |
Múi giờ GMT. Hiện tại là 09:32 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