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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc 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 23-06-2006, 04:26 PM   #1
hoanf
Đệ tử 3 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 51
:
Cám ơn ý kiến của anh Nguyễn Trung Chính.
Em rất mong vấn đề này được nhiều người góp ý hơn nữa để chúng ta có một hướng đi tốt nhất và ngắn nhất.
hoanf vẫn chưa có mặt trong diễn đàn  
Old 23-06-2006, 05:26 PM   #2
ncv
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 16
:
Trích:
Nguyên văn bởi ntc
...
Có một điểm chung ở đây, đó là dù đứng trên phương diện nào, cũng cần phải tìm hiểu thấu đáo các công cụ mình đang tiếp cận.
...
Tôi hoàn toàn đồng ý với quan điểm trên. Dùng bất kỳ ngôn ngữ hay công cụ nào, đó cũng chỉ là phương tiện để đạt được một mục đích nào đó. Mục đích càng cao, người dùng công cụ phải càng sáng suốt. Mục đích càng liên quan đến nhiều người, việc lựa chọn công cụ càng phải vừa cẩn thận vừa thoáng đạt.
ncv vẫn chưa có mặt trong diễn đàn  
Old 23-06-2006, 02:57 PM   #3
chuthong1
Nhập môn đệ tử
 
Tham gia ngày: Mar 2006
Bài gửi: 7
:
Cam' on Anh Nguyen Trung Chinh'
Anh lam on post bai tiep di Em dang doc thay rat hay, rat de hieu.
chuthong1 vẫn chưa có mặt trong diễn đàn  
Old 30-06-2006, 10:28 AM   #4
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Cảm ơn anh NTC,anh viết khá hay,đọc rất là dễ hiểu.
Em đã đi rất nhiều hiệu sách,tìm trên mạng cũng khá nhiều tài liệu
Nhưng vì mới học nên ko biết bắt đầu như thế nào
Đọc bài của anh,mọi thứ dường như đã sáng tỏ.
Thanks
typhn vẫn chưa có mặt trong diễn đàn  
Old 30-06-2006, 10:34 AM   #5
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Anh cho em hỏi chút,ở bài 2 của anh,khi khai báo biến
count1 equ 0x20
counta equ 0x21
countb equ 0x22
anh có thể giải thích chi tiết hơn được ko? equ la khai bao j? va nhat thiet phai la 0x20,21,22 ko?
nếu em khai báo như sau có được ko:

count1 db 0 ;khai bao 3 bien va cho chung gia tri ban dau la 0
cuonta db 0
countb db 0
thanks
typhn vẫn chưa có mặt trong diễn đàn  
Old 30-06-2006, 10:54 AM   #6
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
ah,còn nữa,ở bài 2,có đoạn:

Code:
delay_0
     decfsz        counta,1        ;giam counta va so sanh voi 0
     goto          $+2               ;neu khac 0 thi th lenh nay( bo qua lenh tiep theo)
     decfsz        countb,1        ;neu bang 0 thi giam countb va sau lenh nay 
                                          ; countb =0 nen ko thuc hien lenh tiep theo
     goto          delay_0           ;neu counta khac 0 thi tro lai va giam tiep
     decfsz        count1,1
     goto          d1
     return
Bây giờ,em ko dung biến countb nữa mà em làm như sau:

Code:
delay_0
     decfsz        counta,1  
     goto          $+2       
     goto          tro_ve  
     goto          delay_0       
tro_ve     
     decfsz        count1,1
     goto          d1
     return
2 chương trình này có giống nhau ko anh?
thanks

thay đổi nội dung bởi: ntc, 30-06-2006 lúc 01:55 PM.
typhn vẫn chưa có mặt trong diễn đàn  
Old 30-06-2006, 11:02 AM   #7
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Xin lỗi anh,em edit nhưng ko được
Hơi khó nhìn 1 chút
thanks
typhn vẫn chưa có mặt trong diễn đàn  
Old 30-06-2006, 02:01 PM   #8
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Không nhất thiết, bạn có thể khai báo ở các ô nhớ khác. Bạn cũng có thể tham khảo thêm tài liệu hướng dẫn sử dụng cho trình biên dịch để hiểu thêm. Cái tài liệu gì ấy anh Nam nhỉ, tự nhiên em quên mất tiêu. Hình như là MPLAB, MPASM & MPLINK user guide gì đó.

Còn vấn đề vè delay, bạn chịu khó nghiền ngẫm một tí là hiểu ngay í mà.

__________________


thay đổi nội dung bởi: ntc, 30-06-2006 lúc 02:04 PM.
ntc vẫn chưa có mặt trong diễn đàn  
Old 30-06-2006, 05:25 PM   #9
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
Tài liệu đó là "MPASM Assembler, MPLINK Object Linker, MPLIB Object Librarian User's Guide". Phiên bản hiện tại là DS33034J, download tại đây:
http://ww1.microchip.com/downloads/e...Doc/33014J.pdf

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  
Old 01-07-2006, 11:09 AM   #10
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Đấy, hèhè.

Cảm ơn anh Nam cứu bồ.

__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 01-07-2006, 07:24 PM   #11
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Em mới học pic nên muốn mua 1 bộ nạp píc.
Bác nào có mạch nạp PG2C nạp cho con pic16F877A bán cho em cái
thanks
Email của em: typhn1985@yahoo.com
typhn vẫn chưa có mặt trong diễn đàn  
Old 02-07-2006, 01:16 PM   #12
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
bạn nên viết chương trình delay theo dạng như sau sẽ rất tiện:
Code:
DELAY
             MOVLW D'xx'
             MOVWF COUNTA
             CLRF COUNTB
HERE
             NOP                         ;1us
             DECFSZ COUNTB,F      ;1us
             GOTO HERE                ;4us*255~1000uS=1ms
             DECFSZ COUNTA,F
             GOTO HERE                ;'xx' ms
;            DECFSZ COUNTx,F      
;            GOTO HERE
             RETURN
bạn thay COUNTA và COUNTB như thế này cũng được :
             DECFSZ 0X22,F
             GOTO HERE
             DECFSZ 0X21,F
             GOTO HERE
bạn muốn tạo trễ bao lâu chỉ cần thêm biến COUNTx rồi nạp giá trị ban đầu cho nó ,không mất công nhảy tới nhảy lui--->chóng mặt ^_^

được không bạn ?

thay đổi nội dung bởi: newuser, 19-08-2006 lúc 06:49 PM.
newuser vẫn chưa có mặt trong diễn đàn  
Old 02-07-2006, 09:21 PM   #13
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   #14
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  
Old 03-07-2006, 08:37 AM   #15
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
cảm ơn anh!
Em sửa được rồi.
Nhưng cái lỗi này thì em chưa hiểu lắm:
Message[302] D:\PIC\B3.ASM 26 : Register in operand not in bank 0. Ensure that bank bits are correct.
Sao thanh ghi lại ko ở trong bank 0 hả anh?
Anh giải thích giùm em với
thanks
typhn vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá

Ðiều Chỉnh
Xếp Bà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
TUT về USART trong PIC16F877A mafd_47a MPASM 18 09-03-2026 12:46 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à 01:40 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