![]() |
|
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 |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Apr 2011
Bài gửi: 10
: |
Ngắt RB0
Anh chị nào giúp em viết dùm đoạn code bằng hợp ngữ ASM dùng ngắt nha. Đề bài là ban đầu led 7 đoạn hiển thị số 0. Sau 1s tăng 1 đơn vị, nếu đến 9 sau 1s trở về 0. Nút N là nút tạm dừng(Pause). Anh chị nào viết dùm em khi viết chú thích các dòng cho em hiểu với nha. Em có gửi mô phỏng bằng protus cho các anh chị. Thanks các anh chị
|
![]() |
![]() |
![]() |
#2 |
Đệ tử 5 túi
Tham gia ngày: Dec 2010
Bài gửi: 101
: |
Gửi bạn tham khảo nhé
Trong file này củng dùng ngắt rb0 đây nhưng có đều chương trình chạy như thế này.cái này bạn xem file mình gửi cho bạn nhé. Lúc trước mình hay sài asm bây giờ bỏ lâu quá củng không mấy nhớ lệnh cho lắm.nhưng mình có thễ gợi ý bạn làm như thế này . Ban đầu vào chương trình main cho biến nào đó bằng 0 hiện thi xong rồi tăng lên một quay về chương trình chính goto main cho hiển thị tiếp nhé mổi lần hiển thị xem nó bằng 10 chưa nếu bẳng 10 thì không cho hiển thị và xóa biến đó về 0 cho hiển thị lại nhé . Khi nhấn nút xảy ra ngat nhảy vào ngắt bạn chỉ cần đảo bít sao mổi lần ngắt là xong sao do kiểm tra biến đó bắng 0 hay bằng 1 lưu ý trong asm kiểm tra bit của biến đó dùng btfss hoac btfsc tùy bạn thôi có thể làm như sau:
Equ dem 20h movlw b'00000001' xorwf dem,0 lệnh này đặt trong chương trình ngắt nhé .lệnh này giúp mỗi lần ngắt thì bít 0 của biến dem được đảo. Trong chương trình main btfss dem,0 goto hienthiled // nếu bít 0 của dem bằng 0 thì hiển thị led goto loop hienthiled .............. Hiển thị tại đây tăng biển hien thị goto main loop // dây chuong trình không làm gì cả vì vòng lập vô hạn hiện thị led tại đây nhưng không cho bien hiển thị tăng nhé goto loop end còn về ngắt bạn xem trong ví dụ của mình sẻ hiểu . Bạn không nên thay đổi những cái trong đó mình quy định nhé mình chỉ giúp bạn nhiêu đây thôi nếu là ccs thì viết rất dể và ngắn nửa . Bạn cứ học asm rành đi rồi chuyển sang ccs nhé để viết các chương trình lớn dể dàng hơn so với asm .chúc thành công. thay đổi nội dung bởi: phatcddt08a, 30-05-2011 lúc 07:33 PM. |
![]() |
![]() |
![]() |
|
|