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 Bài Trong Ngày 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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 02-07-2006, 09:21 PM   #1
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Mấy bác ơi,giúp em với.
Em mới bắt đầu học pic,nhưng chưa có mạch nạp.
Em thử biên dịch chương trình bằng mplap.
Em làm y hệt anh NTC,cái bài cho led chạy từ trái sang phải ấy
code như sau:

Code:
;8 led o portb
;cho led chay tu trai sang phai 
;thoi gian delay la 100ms


        list		p=16f877A	; list directive to define processor
	#include	<p16f877A.inc>	; processor specific variable definitions
	
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

;==========================
;KHOI TAO CAC BIEN        

;==========================
            count1 equ 0X20
            counta equ 0X21       
            countb equ 0X22       
  
           ORG         0X0000
           GOTO        MAIN
                

MAIN
           BCF         STATUS,RP1     ;RP1=0
           BSF         STATUS,RP0     ;RP0=1=>CHON BANK1 
           CLRF        TRISB              ;XUAT DU LIEU RA PORTB
           
           BCF            STATUS,RP0   ;CHON BANK0
           MOVLW       B'10000000'
           MOVWF       PORTB           ;BAT LED O CHAN RB7
LOOP
           CALL          DELAY_100MS
           RRF            PORTB,1
           GOTO         LOOP

DELAY_100MS
          
           MOVLW       d'100'
           MOVWF       count1
DELAY0
  
           MOVLW       d'199'
           MOVWF       counta
           MOVLW       d'1'
           MOVWF       countb
D1
           DECFSZ      counta,1
           GOTO        $+2
           DECFSZ      countb,1
           GOTO        D1
           DECFSZ      count1,1
           GOTO        DELAY0
           RETURN
 end
Sau đó em nhấn alt+F10 để dịch ra file hex thì nó báo như sau:

Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\pic\B3.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877A "B3.ASM" /l"B3.lst" /e"B3.err"
Warning[207] D:\PIC\B3.ASM 15 : Found label after column 1. (count1)
Warning[207] D:\PIC\B3.ASM 16 : Found label after column 1. (counta)
Warning[207] D:\PIC\B3.ASM 17 : Found label after column 1. (countb)
Message[302] D:\PIC\B3.ASM 26 : Register in operand not in bank 0. Ensure that bank bits are correct.
Loaded D:\pic\B3.COD.
BUILD SUCCEEDED: Mon Jul 03 15:52:56 2006

Ko hiểu sao lại có mấy cái warning ở trên
Mấy bác giải thích dùm em với
thanks

thay đổi nội dung bởi: falleaf, 02-07-2006 lúc 09:34 PM.
typhn vẫn chưa có mặt trong diễn đàn  
Old 02-07-2006, 09:40 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi typhn

Code:
        list		p=16f877A	; list directive to define processor
	#include	<p16f877A.inc>	; processor specific variable definitions
	
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

;==========================
;KHOI TAO CAC BIEN        

;==========================
            count1 equ 0X20
            counta equ 0X21       
            countb equ 0X22
Em chú ý, nó báo warning cái đoạn này, khi em gán count1 equ 0x20, có nghĩa là em đặt cái 0x20 thay bởi count1, nghĩa là em đặt một cái nhãn cho 0x20. Thay vì sau này viết 0x20 thì em viết là count1.

Cách viết này, có thể dùng để đặt hằng số, có thể đặt biến, nếu em dùng nó như một thanh ghi, thì nó là biến, nếu em dùng nó như là số, thì nó là hằng.

Cho nên, lúc này em phải viết nó vào cột thứ nhất, như một cái nhãn.

Vì vậy, nó mới thông báo rằng tìm thấy một cái nhãn không viết trong cột 1. Hay dịch nguyên văn là nó tìm thấy một cái nhãn viết sau cột 1.

Trong phần này anh nhớ đã có viết rất chi tiết trong bài viết về tập lệnh, đặt biến. Khi đặt biến, em dùng cách đặt RES thì sẽ tốt hơn dùng equ. Sau này chuẩn hoá, đặt biến sẽ dùng RES chứ không dùng EQU nữa.

Chúc vui

PS, em nhớ phải đặt chương trình trong cái thẻ [code] [/ code] (viết liền lại), thì mọi người mới thấy đựơc những chỗ sai kiểu như thế này.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
CCS C for PIC16F877A nhh Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 405 24-04-2008 12:00 PM


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