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 31-12-2005, 02:45 PM   #1
chuabietgi
Đệ tử 1 túi
 
chuabietgi's Avatar
 
Tham gia ngày: Nov 2005
Bài gửi: 17
:
Pic-thac Mac

;================================================= ===========================
ORG 0x0000
GOTO MAIN

ORG 0x0005
MAIN
BANKSEL TRISB
CLRF TRISB ; đặt portb là output

MOVLW D'255'
MOVWF COUNT_L ; COUNT_L là 1 byte

BANKSEL PORTB
LOOP BSF PORTB, 0
CALL DELAY
BCF PORTB, 0
CALL DELAY
GOTO LOOP

;================================================= ============================
; Các chương trình con
;================================================= ============================
DELAY DECFSZ COUNT_L, F
GOTO DELAY
RETURN

;================================================= ============================
GOTO $
END
chuabietgi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-12-2005, 09:00 PM   #2
mafd_47a
Đệ tử 3 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 54
:
Trích:
Nguyên văn bởi chuabietgi
Nếu tôi dùng 2 biến địa chỉ count1 và count2 sau khi đã nạp "255" vào 2 biến trên như sau


PHP Code:
LOOP1      DECFSZ    COUNT1F
               
GOTO       LOOP2
               
RETURN
LOOP2      DECFSZ    COUNT2W
               
GOTO       LOOP2
               
GOTO       LOOP1 
Sau khi COUNT2 xuống 0,lệnh nhảy về LOOP1,rồi quay lại LOOP2
COUNT2 luc này có được 255 không?
Tôi viết và cho chạy SIM nhưng rất khó giải thích?
Phiền các bác giải giúp!

Đoạn Code bạn nói ở đây có phải là dùng cho hàm Delay đúng không

Nguyên tắc là như thế này

Tất nhiên là nó sẽ trở về 255 rồi vì câu lệnh tiếp theo nó sẽ tự dộng chuyển từ 0 đến 255.

Lưu ý đến ý nghĩa của lệnh Decfsz , lệnh này có tác dụng là trừ trước rồi mới check. Có nghĩa là nếu thanh ghi của bạn trước Decfsz bằng 1 thì nó sẽ kép, vì 1-1=0, và =0 nên nó sẽ nhảy

Còn nếu thanh ghi là 0 thì khi trừ 0-1 =255, khác 0

Chỉ đơn giản thế thôi

Àh còn một điều nữa là trong đoạn code của bạn sai lệnh goto main: phải sửa thành Return

thay đổi nội dung bởi: mafd_47a, 31-12-2005 lúc 09:03 PM.
mafd_47a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-12-2005, 09:07 PM   #3
mafd_47a
Đệ tử 3 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 54
:
Delay là hàm rất hay được sử dụng trong PIC đê thuận tiện bạn nên dùng hàm delay mẫu sau ( đoạn delay này có trong www.piclist.com )

Dung cho thach anh 4M
PHP Code:
                                  Su dung thanh ghi r3,r2,r4
DELAY255    movlw    0xff        
;delay 255 mS
        
goto    D0
DELAY250    MOVLW    .250
        
GOTO    D0
DELAY100    movlw    d
'100'        ;delay 100mS
        
goto    D0
DELAY50        movlw    d
'50'        ;delay 50mS
        
goto    D0
DELAY20        movlw    d
'20'        ;delay 20mS
        
goto    D0
DELAY10        MOVLW   D
'10'
        
GOTO    D0
DELAY5        movlw    0x05        
;delay 5.000 ms (4 MHz clock)
D0        movwf    R2
D1        movlw    0xC7            
;delay 1mS
        movwf    R3
        movlw    0x01
        movwf    R4
Delay_0
        decfsz    R3
f
        
goto    $+2
        decfsz    R4
f
        
goto    Delay_0

        decfsz    R2    
,f
        
goto    D1
        retlw    0x00 
mafd_47a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2006, 09:16 AM   #4
chuabietgi
Đệ tử 1 túi
 
chuabietgi's Avatar
 
Tham gia ngày: Nov 2005
Bài gửi: 17
:
Xin hoi may bac!Cai mach nap PIC1 cua toi nap bang IC Prog!Sao khi verify ket thuc no luon bao "verify failed at address 0000h"Toi ktra chan ky lam roi.VDD-VSS van 5V!

Nho cac bac chi giup!Thanks!

thay đổi nội dung bởi: chuabietgi, 14-01-2006 lúc 09:21 AM.
chuabietgi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-01-2006, 09:49 AM   #5
mafd_47a
Đệ tử 3 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 54
:
Nguyên nhân theo mình là do cắm lỏng chân, tiếp xúc không tốt. Mình cũng rất hay bị như vậy bạn nên thử vài lần xem vị trí cắm thế nào cho hợp lý.

Còn một điều nữa bạn thử dùng WinPc800 để nạp thử xem. Cái này xài hay hơn đấy
( chọn chế độ ban đầu : bạn vào setting => hardware => chọn JDM Programmer trong mục selection of Hardware )
Mình thấy chương trình nạp này nhanh hơn nhiều và cũng ổn định hơn ICprog

Chúc bạn thành công
mafd_47a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-01-2006, 07:57 AM   #6
chuabietgi
Đệ tử 1 túi
 
chuabietgi's Avatar
 
Tham gia ngày: Nov 2005
Bài gửi: 17
:
Tớ thử với WinPIC800,check hardware nó báo ERRORHardware is not responding.Detect PIC, nó pó tay luôn ko nhận ra chú 16F877A rất xinh đang nằm đó.Program all, nó cũng báo ERROR nốt.
Mà phải công nhận WinPIC800 nạp nhanh khủng khiếp! Tiếc quá chưa nạp được bác mafd_47a ơi!
Thanks!
chuabietgi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-02-2006, 12:28 PM   #7
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Smile

Trích:
Nguyên văn bởi chuabietgi
Tớ thử với WinPIC800,check hardware nó báo ERRORHardware is not responding.Detect PIC, nó pó tay luôn ko nhận ra chú 16F877A rất xinh đang nằm đó.Program all, nó cũng báo ERROR nốt.
Mà phải công nhận WinPIC800 nạp nhanh khủng khiếp! Tiếc quá chưa nạp được bác mafd_47a ơi!
Thanks!
Bạn có thế đem mạch nạp đến nơi bán để check lại mà!!!
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh 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


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