PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Pic-thac Mac (http://www.picvietnam.com/forum/showthread.php?t=272)

chuabietgi 31-12-2005 02:45 PM

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

mafd_47a 31-12-2005 09:00 PM

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

mafd_47a 31-12-2005 09:07 PM

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 


chuabietgi 14-01-2006 09:16 AM

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! :mad:

Nho cac bac chi giup!Thanks!

mafd_47a 14-01-2006 09:49 AM

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

chuabietgi 15-01-2006 07:57 AM

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!

nhh 12-02-2006 12:28 PM

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à!!!


Múi giờ GMT. Hiện tại là 04:07 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam