![]() |
|
|
|
|
#1 |
|
Đệ tử 2 túi
Tham gia ngày: Jun 2007
Bài gửi: 43
: |
chà mình đã chuẩn bị chạy rồi .mình biết sau khi mình post bài mình đã thiếu yêu cầu như bạn comment và vẽ lại mạch mô phỏng như bạn nhắc nhở.Nhưng vẫn cứ lặng thinh.Mong bạn và các bạn trong diễn đàn chạy thử lại và test giùm mình như bạn đã nói,và cùng correct lại mạch và code như yêu cầu mình mong muốn xem sao.Còn về ứng dụng trong CCS ,rất phức tạp.Mình muốn tự mình lập trình theo yêu cầu ,post code xem mình sai đúng chỗ nào,để sữa lỗi và tiện học hỏi luôn như vạy dễ hiểu hơn.Mong các bạn thông cảm .Chúc vui
|
|
|
|
|
#2 |
|
Đệ tử 7 túi
|
Đã test lại giúp bạn, tất cả đều ổn, mình gửi luôn cái hình để bạn xem lại, còn về code mình chỉ thêm đúng vào 2 câu mà mình đã nói ở trên
![]()
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________ _ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _ . . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . . |
|
|
|
|
#3 |
|
Đệ tử 2 túi
Tham gia ngày: Jun 2007
Bài gửi: 43
: |
Mình thật sự cảm ơn bạn thaithienthanh rất nhiều về vấn đề này.Mình đã làm lại và chạy ngon lành.Nhưng để thực tế hơn mình đã làm một cái keypadcalulate thay cho mấy cái button .Mạch như sau:
![]() Code:#include <16F877A.h> #include <DEFS_16F877A.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #define RS RD0 #define RW RD1 #define E RD2 #define LCD PORTC /*Ham yeu cau goi lenh dieu khien LCD*/ void comnwrt(void) { RS = 0; RW = 0; E = 1; E = 0; delay_ms(1); } /*Ham yeu cau goi du lieu hien thi len LCD*/ void datawrt(void) { RS = 1; RW = 0; E = 1; E = 0; delay_ms(1); } #int_RB void ngat_RB(void) { if(RBIE && RBIF) { //hang A if ((RB0) && (RB4)) { LCD = '7'; datawrt(); } if (RB0 && RB5) { LCD = '8'; datawrt(); } if (RB0 && RB6) { LCD = '9'; datawrt(); } if (RB0 && RB7) { LCD = ':'; datawrt(); } //Hang B if ((RB1) && (RB4)) { LCD = '4'; datawrt(); } if (RB1 && RB5) { LCD = '5'; datawrt(); } if (RB1 && RB6) { LCD = '6'; datawrt(); } if (RB1 && RB7) { LCD = 'x'; datawrt(); } //Hang C if ((RB2) && (RB4)) { LCD = '1'; datawrt(); } if (RB2 && RB5) { LCD = '2'; datawrt(); } if (RB2 && RB6) { LCD = '3'; datawrt(); } if (RB2 && RB7) { LCD = '-'; datawrt(); } //Hang D if ((RB3) && (RB4)) { LCD = 0x0C; comnwrt(); } if (RB3 && RB5) { LCD = '0'; datawrt(); } if (RB3 && RB6) { LCD = '='; datawrt(); } if (RB3 && RB7) { LCD = '-'; datawrt(); } } } void main(void) { set_tris_b(0b00001111); set_tris_c(0); set_tris_d(0); portb=0; portc=0; portd=0; enable_interrupts(global); enable_interrupts(int_RB); ext_int_edge(H_TO_L); LCD = 0x38; // Hai hang, ma tran dot 5*7, 8 bit interface comnwrt(); LCD = 0x0C; // Bat hien thi, tat con tro comnwrt(); while(true) { } } Khi compile thì chương trình dịc ok nhưng khi mô phỏng mình lại thấy LCD tiếp tục đứng im .Hee, mong các bạn tiếp tục giúp đỡ cho trọn vẹn nha. Mình làm về project này là để làm một cái smallcal có dạng như trên hình vẽ, mình cùng đang tìm hiểu thuật toán của nó,đây là thuật toán trong sách Interfacing PIC về các phép tình đơn giản: Calculate result IF key = ‘+’, Add IF key = ‘-‘, Subtract IF key = ‘x’, Multiply IF key = ‘/’, Divide Add Add Num1 + Num2 Load result, CALL Two digits Subtract Subtract Num1 – Num2 IF result negative, load minus sign, CALL Display character Load result, CALL Display character Multiply REPEAT Add Num1 to Result Decrement Num2 UNTIL Num2= 0 Load result, CALL Two digits Divide REPEAT Subtract Num2 from Num1 Increment Result UNTIL Num1 negative Add Num2 back onto Num1 for Remainder Load Result, CALL Display character Load Remainder, CALL Display character Two digits Divide result by 10, load MSD, CALL Display character Load LSD, CALL Display character Mình viết bằng ASM thì được chứ còn CCS thì non tay lắm .Mong các bạn giúp đỡ mình hoàn thành project này.Cảm ơn nhiều.Chúc vui. thay đổi nội dung bởi: cuopbienquin, 01-09-2007 lúc 05:13 PM. |
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|
Similar Threads
|
||||
| Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
| TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
| TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
| Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
| Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
| Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |