![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#2 |
Đệ tử 4 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
: |
![]() Chào bạn!
Mình vừa tải File mô phỏng của bạn về chạy thử. Nó vẫn chạy bình thường theo như ý bạn viết trong code mà. Tuy nhiên, mình đã sửa lại đôi chút để số đếm hàng đơn vị không bị xóa sau mỗi lần bấm nút. Ở đây dùng PIC6F877A thì nên để clock là 20MHz. Bạn thử lại với code sau xem: Code:
#include <16f877a.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #byte portb=0x06 #byte portd=0x08 unsigned int16 dem=0, hang_chuc, hang_dvi; const unsigned char digital[]={0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110,\ 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111}; #int_ext void dem_xung() { dem++; if(dem<=30) { hang_dvi= dem%10; hang_chuc= dem/10; output_a(0); portd=digital[hang_chuc]; delay_ms(100); output_a(1); portd=digital[hang_dvi]; delay_ms(10); } if(dem>30) { dem=0; // Reset bien dem neu lon hon 30 } } void main() { while(true) { set_tris_B(0b00000001); set_tris_d(0); set_tris_a(0); enable_interrupts(global); enable_interrupts(int_ext); ext_int_edge(H_to_L); } } Mình cũng mới ngâm cứu về Pic nên còn gà mờ lắm. Theo như sơ đồ nguyên lý của bạn thì 2 LED 7 thanh của bạn nối chung với PORTD của Pic. Do vậy, để hiển thị được cả hai LED thì phải dùng phương pháp quét (đánh lừa đôi mắt!). (Hình như là dùng ngắt timer để quét). Bác nào có thể trợ giúp tiếp không ạ? - Làm thế nào để khi LED hàng đơn vị đếm. LED hàng chục vẫn hiển thị?
__________________
Mechatronics Department University of Engineering and Technology, VNUH. thay đổi nội dung bởi: Delfy_Coltech, 10-11-2009 lúc 08:01 PM. Lý do: Thay đổi nội dung |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|