PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

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

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 05-02-2007, 10:31 AM   #1
hungpq
Đệ tử 1 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 19
:
Cám ơn bác namqn đã quan tâm giúp đỡ. Tôi dùng hợp ngữ để lập trình cho PIC và dùng Mplap để mô phỏng. Tôi sử dụng đoạn Code dưới đây trong datasheet của con pic16f877a để thực hiện, nhưng mô phỏng chẳng thấy nó chạy đúng gì cả. Không hiểu là nó sai hay mình mô phỏng không đúng. Mong bác chỉ giúp.

Code:
; This write routine assumes the following:
;
; 1. A valid starting address (the least significant bits = ‘00’)is loaded in ADDRH:ADDRL
; 2. The 8 bytes of data are loaded, starting at the address in DATADDR
; 3. ADDRH, ADDRL and DATADDR are all located in shared data memory 0x70 - 0x7f
;
          BSF         STATUS,RP1     ;
           BCF         STATUS,RP0     ; Bank 2
           MOVF       ADDRH,W         ; Load initial address
           MOVWF    EEADRH            ;
           MOVF       ADDRL,W          ;
           MOVWF     EEADR             ;
           MOVF       DATAADDR,W    ; Load initial data address
           MOVWF    FSR ;
           LOOP       MOVF INDF,W    ; Load first data byte into lower
           MOVWF    EEDATA            ;
           INCF        FSR,F               ; Next byte
           MOVF       INDF,W            ; Load second data byte into upper
           MOVWF     EEDATH           ;
           INCF         FSR,F              ;
           BSF          STATUS,RP0     ; Bank 3
           BSF          EECON1,EEPGD  ; Point to program memory
           BSF          EECON1,WREN   ; Enable writes
           BCF          INTCON,GIE      ; Disable interrupts (if using)
           MOVLW     55h                 ; Start of required write sequence:
           MOVWF     EECON2           ; Write 55h
           MOVLW     AAh                 ;
           MOVWF     EECON2           ; Write AAh
           BSF          EECON1,WR      ; Set WR bit to begin write
           NOP                                         ; Any instructions here are ignored as processor
                                                ; halts to begin write sequence
           NOP                               ; processor will stop here and wait for write complete
                                                 ; after write processor continues with 3rd instruction
           BCF         EECON1,WREN     ; Disable writes
           BSF         INTCON,GIE        ; Enable interrupts (if using)
           BCF         STATUS,RP0       ; Bank 2
           INCF        EEADR,F            ; Increment address
           MOVF       EEADR,W           ; Check if lower two bits of address are ‘00’
           ANDLW     0x03                 ; Indicates when four words have been programmed
           XORLW     0x03                 ;
           BTFSC      STATUS,Z          ; Exit if more than four words,
           GOTO      LOOP                 ; Continue if less than four words

thay đổi nội dung bởi: namqn, 05-02-2007 lúc 06:21 PM.
hungpq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-02-2007, 06:45 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi hungpq View Post
Cám ơn bác namqn đã quan tâm giúp đỡ. Tôi dùng hợp ngữ để lập trình cho PIC và dùng Mplap để mô phỏng. Tôi sử dụng đoạn Code dưới đây trong datasheet của con pic16f877a để thực hiện, nhưng mô phỏng chẳng thấy nó chạy đúng gì cả. Không hiểu là nó sai hay mình mô phỏng không đúng. Mong bác chỉ giúp.
MPLAB SIM mô phỏng EEPROM với thời gian ghi là khoảng 10 ms (làm tròn đến số nguyên lần chu kỳ máy gần nhất), do đó sau lệnh set bit WR của EECON1 thì bộ xử lý sẽ dừng trong một số chu kỳ tương đương với 10 ms thời gian thực.

Bạn cần cho biết thêm 'chẳng thấy nó chạy đúng' là như thế nào, và đọc thêm phần nói về mô phỏng ngoại vi của PIC16 trong tài liệu "MPLAB IDE User's Guide" (DS51519), mục 16.3.3.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-02-2007, 10:26 AM   #3
hungpq
Đệ tử 1 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 19
:
Bác namqn ơi tôi đã đọc đoạn tài liệu đó rồi nhưng nó chỉ nói sơ qua về việc thực hiện mô phỏng với bộ nhớ EEPROM thôi. Còn ở đây tôi muốn hỏi bác về việc thực hiện ghi vào bộ nhớ Flash cơ. Tôi đã thực hiện chạy debug bình thường và sau khi chạy xong đoạn code đó thì xem lại bộ nhớ Flash xem có ghi được không, nhưng không thấy ghi được. Không biết đoạn code đó sai hay là MPLAB không cho mình xem dữ liệu ghi vào Flash.

thay đổi nội dung bởi: namqn, 07-02-2007 lúc 08:43 PM.
hungpq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-02-2007, 08:42 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi hungpq View Post
Bác namqn ơi tôi đã đọc đoạn tài liệu đó rồi nhưng nó chỉ nói sơ qua về việc thực hiện mô phỏng với bộ nhớ EEPROM thôi. Còn ở đây tôi muốn hỏi bác về việc thực hiện ghi vào bộ nhớ Flash cơ. Tôi đã thực hiện chạy debug bình thường và sau khi chạy xong đoạn code đó thì xem lại bộ nhớ Flash xem có ghi được không, nhưng không thấy ghi được. Không biết đoạn code đó sai hay là MPLAB không cho mình xem dữ liệu ghi vào Flash.
Ghi vào Flash thì vẫn phải chờ một khoảng thời gian, nếu MPLAB SIM mô phỏng đúng thì bạn cũng phải chờ một số chu kỳ máy tương đương với thời gian thực tự ghi vào Flash (theo datasheet thì bằng với thời gian đó của EEPROM). Những đoạn code kiểu này thì tôi chỉ chạy trên chip thực chứ không mô phỏng bao giờ.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Chuỗi được lưu trong Flash bien_van_khat Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 24 15-12-2010 09:43 AM
về Pickit 1 FLASH Starter Kit hawinter Cơ bản về vi điều khiển và PIC 2 19-12-2006 01:16 AM


Múi giờ GMT. Hiện tại là 05:03 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