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 ...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 26-11-2005, 02:22 AM   #6
mafd_47a
Đệ tử 3 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 54
:
Trích:

Trong 8051 co cau lenh: CJNE A,#number, diachi

Cau lenh nay dung de so sanh mot thanh ghi voi mot so va rat hay duoc dung trong ASM(8051) vay cac bac hay cho biet su tuong duong trong MPASM

Huong cua em dang dinh giai quyet : tru W cho so can so sanh, xet bit Z neu = 1 thi nhay

Nhung cach nay cung kha dai, va cung ko tien loi lam
Khi lập trình cho VĐK, ta rất hay gặp những câu lệnh so sánh, Và trong PIC ko có hỗ trợ so sách giữa thanh ghi với một số, thanh ghi với thanh ghi. Để làm được điều này ta sẽ phải gây dựng bằng phần mêm.

Để so sánh một thanh ghi với một số, nếu ko bằng thì nhảy tới vị trí con trỏ địa chỉ nào đó ta có thể làm như sau:

(VD cho việc so sánh thanh ghi ACC ( địa chỉ 0x20 trong ram ) với số 0x05 , nếu ko bằng thì nhẩy tới NEXT_INS )

PHP Code:
ACC  EQU  0x20

MAIN
.........
        
MOVLW   0x05
        SUBWF   ACC
,W
        BTFSS   STATUS
,Z
        
GOTO    NEXT_INS
.....................
NEXT_INS 


Và mỗi lần so sánh ta lại phải tương nguyên cái bộ khung ấy vào. Sẽ rất mệt.

Trong Mplab có hỗ trợ chế độ Macro, tức là có sự thay thế tương ứng nhờ trình dịch. Như vậy ta chỉ cần khai báo như sau

PHP Code:
CJNEMACRO THANHGHI,SO,CONTRO
        MOVLW   SO
        SUBWF   THANHGHI
,W
        BTFSS   STATUS
,Z
        
GOTO    CONTRO
        ENDM 

Voi VD khi dùng ta chỉ việc gọi ra:

PHP Code:
CJNE  ACC,0x05NEXT_INS
......
NEXT_INS 
Với việc thay thế này các bạn sẽ thấy nhàn hơn rất nhiều trong việc lập trình. Băng một vài phép biến đổi ta có thể thêm vài chương trình nữa . Chắc chắn sau này sẽ được sử dụng rất linh hoạt

PHP Code:
CJNEMACRO THANHGHI,SO,CONTRO
        MOVLW   SO
        SUBWF   THANHGHI
,W
        BTFSS   STATUS
,Z
        
GOTO    CONTRO
        ENDM
NCJNE
MACRO THANHGHI,SO,CONTRO1
        MOVLW   SO
        SUBWF   THANHGHI
,W
        BTFSC   STATUS
,Z
        
GOTO    CONTRO1
        ENDM
FJNE
MACRO THANHGHI1,THANHGHI2,CONTRO
        MOVF    THANHGHI2
,W
        SUBWF   THANHGHI1
,W
        BTFSS   STATUS
,Z
        
GOTO    CONTRO
        ENDM
FJE
MACRO THANHGHI1,THANHGHI2,CONTRO
        MOVF    THANHGHI2
,W
        SUBWF   THANHGHI1
,W
        BTFSC   STATUS
,Z
        
GOTO    CONTRO
        ENDM 
CJNE là so sánh một số với thanh ghi, nếu ko băng thì nhảy tới vị trí con trỏ
NCJNE ngược lại với câu lệnh trên , nếu bằng thì nhảy tới vị trí con trỏ
FJNE là so sánh thanh ghi với thanh ghi , nếu ko bằng nhau thì nhảy tới vị trí con trỏ
FJE ngược lại nếu bằng thỉ nhảy tới vị trí con trỏ

Đây là công cụ tôi rất hay dùng trong các chương trình ứng dụng gần đây, với nó tôi thấy thoải mái và linh hoạt lên rất nhiều. Mong giúp ích được gì đó cho các bạn

thay đổi nội dung bởi: mafd_47a, 26-11-2005 lúc 11:40 PM.
mafd_47a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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
Library cho MPASM, các module cơ bản mafd_47a MPASM 12 06-09-2009 03:51 PM
cho tôi fan mềm MPASM hoặc đường line dowload lep Chương trình dịch & các công cụ mô phỏng 3 12-10-2008 03:00 AM
Trình dịch cho MPASM của Microchip. mafd_47a MPASM 8 20-03-2008 12:37 AM
Sườn chương trình cơ bản bằng MPASM falleaf MPASM 6 19-05-2006 03:28 PM
Xin moi nguoi giup do! anzuus Cảm biến 13 19-01-2006 02:49 PM


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


Đượ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