PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 02-10-2006, 03:06 PM   #1
lythanhthuan
Nhập môn đệ tử
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Ha Noi
Bài gửi: 8
:
Send a message via Yahoo to lythanhthuan
Lỗi do lập trình hay do trình biên dịch ?

Tại sao khi viết chương trình ngắt trong MPLAB (7.31) mặc dù đã theo đúng khung chương trình ngắt do bác falleaf giới thiệu nhưng chưong trình vẫn bị Faile(Lỗi).
Cụ thể là viết chương trình như sau :



Code:
PROCESSOR  PIC16F877
          INCLUDE  <P16F877.INC>
          __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF & _CPD_OFF
          
          DATAOUT      EQU 0x20 
          W_save       EQU 0x21
          PCLATH_SAVE  EQU 0X22
          STATUS_SAVE  EQU  0X23
          FSR_SAVE     EQU  0X24 

          ORG   0x0000
          GOTO batdau

          ORG     0x004           ;<<=======================(thay bởi 0x005 thì thành công)
          GOTO    ISR_NGAT
ISR_NGAT  
          MOVWF    W_save
          MOVWF    STATUS_SAVE 
          MOVF     PCLATH,W
          CLRF     PCLATH 
          MOVF     FSR,W
          MOVWF    FSR_SAVE
          
     
          BTFSS   PIR1,PSPIF

          GOTO    thoat

          
          BCF   PIR1,PSPIF
                                                  
          BSF   STATUS,RP0
          BTFSC  TRISE,OBF
          
          GOTO      thoat


          BCF  STATUS,RP0
          MOVF   DATAOUT,0
          MOVWF  PORTD
thoat
         BCF   STATUS,RP0
         MOVF   FSR_SAVE
         MOVWF   FSR
         MOVF    PCLATH_SAVE
         MOVWF   PCLATH
         SWAPF   STATUS_SAVE,W

         MOVWF    STATUS
         SWAPF     W_save,1
         SWAPF   W_save,0
         RETFIE 


         ORG     0x000
         CLRF   STATUS
         CLRF   PCLATH

         GOTO   batdau


         ORG   0x050
batdau
         BCF  STATUS,RP1
         BCF  STATUS,RP0
         CLRF  PORTD
         BSF   STATUS,RP0

         MOVLW  B'00010111'

         MOVWF  TRISE
         MOVLW  0x006
         MOVWF ADCON1

         BSF  PIE1,PSPIE

         BCF  STATUS,RP0
         BSF  INTCON,GIE
         BSF  INTCON,PEIE

         MOVLW  b'01010101'
         MOVWF  DATAOUT
         MOVF   PORTD
         
         GOTO  $

         END
Nếu dòng ORG 0x004 (ở đầu chương trình ngắt) ta thay 0x004 bởi 0x005 thì trình dịch báo sucess.
Phiền các bạn giải thích hộ ?
Thanks !
lythanhthuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bà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à 09:26 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