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, 01:16 PM   #106
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   #107
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   #108
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   #109
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  
Old 03-07-2006, 10:39 AM   #110
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
http://www.picvietnam.com/forum//sho...p?t=238&page=5

Bạn tham khảo thêm ở chỗ này.

__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 03-07-2006, 04:11 PM   #111
phutdv
Nhập môn đệ tử
 
Tham gia ngày: Jul 2006
Bài gửi: 2
:
Send a message via Yahoo to phutdv
Thấy mấy anh bàn luận sôi nổi quá.
Em có 1 thắc mắc: khi trước, làm việc với 8051, em dùng ASM51 để biên dịch ra file hex. Bây giờ, học PIC, mấy anh cho em cái trình biên dịch cho PIC nhé, hình như là MPLAP như bác typhn có nói.
Rất mong sự giúp đỡ!
Thân mến!
phutdv vẫn chưa có mặt trong diễn đàn  
Old 03-07-2006, 05:12 PM   #112
txt
Đệ tử 2 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 32
:
Tui học PiC bằng C trước khi hoc bằng ASM và hiểu rõ PIC hoạt động bằng cách giám sát mã ASM dịch ngược cho mỗi dòng lệnh . Do vậy học C không có nghĩa là sẽ không thể hiểu rõ PIC làm gì ,vấn đề là ta có muốn hiểu hay không , và bởi vì không có trình biên dịch nào mà kho hàm dựng sẵn của nó lại đủ cho tất cả mục đích và mong muốn của chúng ta . Đôi khi bạn có thể viết như thể viết kiểu ASM nhưng lại đang dùng kiểu thể hiện ( phong cách viết ) theo C ( không cần chèn mã ASM) , nhưng sẽ rất dễ nhìn , rõ ràng , thấy ngay được mọi thứ , và có thể đơn giản nhiều thứ ( ví dụ như lặp lại hoài việc chuyển bank phiền phức ). Tôi khoái C và mặc dù đang viết "CCS tiếng Việt " dở dang , nhưng tôi có ý định viết thành 1 quyển sách " Lập trình C cho PIC ", sử dụng CCS là chính , kết hợp MPLAB . Chỉ nói về C , còn ASM chỉ nói như là giải thích cách hoạt động của hàm , chương trình . Không biết điều này có là ngược đời hay không ?( nắm C trước , ASM nắm sau thông qua làm việc với C ) . Rõ ràng có ưu điểm : C dễ hiểu và viết nhanh , ASM chỉ cần hiểu , không cần phải viết . Nhưng các bạn có đồng ý về điều này ?
txt vẫn chưa có mặt trong diễn đàn  
Old 03-07-2006, 06:06 PM   #113
acbossvn
Nhập môn đệ tử
 
Tham gia ngày: Jul 2006
Bài gửi: 4
:
Mình mới chuyển sang tiếp cận PIC sau khi đã nghiên cứu 89C51 với trình dịch Keil. Khi dùng trình dịch này mình đã thấy hết ưu điểm của ngôn ngữ C với Micro-controler. Vì vậy, hiện tại mình rất ủng hộ và tán thành việc nghiên cứu PIC bằng ngôn ngữ C và tạm thời dùng trình dịch CCS. Txt đã có 1 ý tưởng rất hay là viết sách. Hoan hô bác Txt vì thành ý của bác dành cho anh em mới và đang tiếp cận PIC. Chúc bác viết sách thành công và sớm up lên diễn đàn cho mọi người. Mình sẽ theo dõi liên tục vấn đề này trong thời gian tới. Mong mọi người chỉ bảo thêm...
acbossvn vẫn chưa có mặt trong diễn đàn  
Old 03-07-2006, 06:09 PM   #114
acbossvn
Nhập môn đệ tử
 
Tham gia ngày: Jul 2006
Bài gửi: 4
:
Dù mới tham gia, mình vẫn thấy luồng này vẫn lộn xộn quá. Nếu được, xin hãy tách riêng các bài viết bằng code C và ASM ra. Như vậy sẽ tiện theo dõi hơn.
acbossvn vẫn chưa có mặt trong diễn đàn  
Old 03-07-2006, 09:05 PM   #115
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
Bạn đọc kỹ tiêu đề, luồng này nói về 16F877A, cho nên mục tiêu là để phác thảo nên các tính năng, ứng dụng của nó. Đây là một cách học khác với cách học lập trình.

Để học lập trình, bạn vào từng mục cụ thể, MPASM hoặc Các ngôn ngữ lập trình khác, để thảo luận riêng về một ngôn ngữ nào đó.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn  
Old 04-07-2006, 09:26 AM   #116
acbossvn
Nhập môn đệ tử
 
Tham gia ngày: Jul 2006
Bài gửi: 4
:
Các huynh cho đệ hỏi chút: la cái CCS dịch xong chương trình ko thấy thông báo lỗi gì...nhưng khi debug lại ko được và có thông báo: cannot detect ICD type? Nghĩa là sao zaay....

vẫn có thông báo như thế kể cả khi tiểu đệ debug code cho CCS được viết trên diễn đàn này.

thay đổi nội dung bởi: falleaf, 04-07-2006 lúc 12:50 PM.
acbossvn vẫn chưa có mặt trong diễn đàn  
Old 04-07-2006, 09:36 PM   #117
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Mấy anh cho em hỏi về giao tiếp ICSP.
Có tài liệu tiếng anh nhưng em đọc ko hiểu lắm
thanks
typhn vẫn chưa có mặt trong diễn đàn  
Old 04-07-2006, 10:16 PM   #118
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
Trích:
Nguyên văn bởi acbossvn
Các huynh cho đệ hỏi chút: la cái CCS dịch xong chương trình ko thấy thông báo lỗi gì...nhưng khi debug lại ko được và có thông báo: cannot detect ICD type? Nghĩa là sao zaay....

vẫn có thông báo như thế kể cả khi tiểu đệ debug code cho CCS được viết trên diễn đàn này.
Bạn debug chương trình bằng CCS hay MPLAB?

Trong trường hợp MPLAB, nếu bạn không có ICD (thường là như vậy, vì ICD đâu có dễ gì mua được) thì bạn vẫn có thể debug bằng MPLAB SIM. Bạn vào mục mênu Debugger > Select Tool, chọn 2 MPLAB SIM.

Còn CCS thì tôi không dùng nên không rõ, nhưng có vẻ như nó chỉ hỗ trợ ICD hay MACH X là mấy cái debugger của riêng hãng CCS, cùng với việc liên kết với MPLAB SIM.

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 04-07-2006, 10:21 PM   #119
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
Trích:
Nguyên văn bởi typhn
Mấy anh cho em hỏi về giao tiếp ICSP.
Có tài liệu tiếng anh nhưng em đọc ko hiểu lắm
thanks
ICSP là giao tiếp dùng để đưa chương trình mã máy và các thông tin cấu hình, dữ liệu trong EEPROM (nếu có), vào chip thông qua một chuẩn nối tiếp, nó cho phép nạp chương trình cho chip ngay trong mạch đích.

Bạn dùng chức năng tìm kiếm của diễn đàn để tìm các luồng có liên quan đến ICSP để đọc thêm.

Để sử dụng thì chỉ cần có mạch nạp hỗ trợ ICSP, mạch đích được thiết kế theo khuyến cáo của hãng Microchip, và một số chú ý mà tôi đã nói qua trong các luồng khác khi trả lời về vấn đề này.

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 04-07-2006, 11:29 PM   #120
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Cảm ơn anh.Em cũng hơi hiểu rồi
Mạch nạp em sử dụng là PG2C.
Nếu cắm theo chuẩn ICSP thì ta có thể nạp cho PIC khi nó ở mạch ngoài mà ko cần cắm pic vào mạch nạp nữa.
Thanks
typhn 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à 09:06 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