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 06-02-2006, 09:40 AM   #1
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
Xin lỗi các bạn, đoạn chương trình trên đã có sự nhầm lẫn, F đã được báo về vẫn đề lỗi chương trình ngay từ hôm đầu NTC post lên, nhưng vẫn không có thời gian sửa chữa chương trình. Có lẽ các bạn vào đây thường xuyên thì cũng biết F đang làm việc gì. Vì vậy, thành thật xin lỗi các bạn vì sự lầm lẫn trên.

Nếu bạn nào có thời gian, xin sửa chữa giúp đoạn code trên để bạn đọc không bị vướng vào lỗi sai này nữa.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn  
Old 06-02-2006, 10:07 AM   #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
Code:
MOVLW d’255’
MOVWF delay‐reg1 ; đưa giá trị 255 vào thanh ghi “delay‐reg1”
loop
DECFSZ delay‐reg1,0 ; giảm giá trị thanh ghi “delay‐reg1”và so sánh với 0
GOTO loop1 ; nếu chưa bằng 0 nhảy tới label “loop1”
GOTO next ; nếu đã băng 0 chương trình delay hoàn tất
loop1
MOVLW d’255’
MOVWF delay‐reg2 ; đưa vào thanh ghi “delay‐reg2” giá trị 255
DECFSZ delay‐reg2,0 ; giảm giá trị thanh ghi “delay‐reg2” và so sánh với 0
MOVWF loop1 ; nếu chưa bằng 0 thì nhảy đến label “loop1”
GOTO loop ; nếu bằng 0 thì nhảy đến label “loop”
next
Xin lỗi các bạn vì hiện nay diễn đàn đang được sửa chữa, vì vậy không thể trình bày tốt được.

F sửa luôn đoạn code trên để tránh các bạn mắc lỗi sai. Bản sửa sẽ được NTC cập nhật lại sau:

Code:
MOVLW d’255’
MOVWF delay_reg1 ; đưa giá trị 255 vào thanh ghi “delay_reg1”
loop
DECFSZ delay_reg1, F ; giảm giá trị thanh ghi “delay_reg1”và so sánh với 0 và ghi lại vào delay-reg1
GOTO loop1 ; nếu chưa bằng 0 nhảy tới label “loop1”
GOTO next ; nếu đã băng 0 chương trình delay hoàn tất
loop1
MOVLW d’255’
MOVWF delay_reg2 ; đưa vào thanh ghi “delay_reg2” giá trị 255

DECFSZ delay_reg2, F ; giảm giá trị thanh ghi “delay_reg2” và so sánh với 0 và ghi lại vào delay_reg2
GOTO $-1 ; nếu chưa bằng 0 thì nhảy lên trên để tiếp tục giảm delay_reg2
; vòng lặp này nhằm giảm delay_reg2 về đến 0
; thời gian giảm delay_reg2 chính là thời gian delay_trong vòng lặp con.
GOTO loop ; nếu bằng 0 thì nhảy đến label “loop”
next
Cách viết hai:

À thôi, H hiểu vì sao NTC viết sai rồi... oki,

để F nói NTC sửa lại sau ... sorry cả nhà...

Chúc vui...

thay đổi nội dung bởi: falleaf, 12-02-2006 lúc 01:38 PM.
falleaf vẫn chưa có mặt trong diễn đàn  
Old 06-02-2006, 10:18 AM   #3
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
Trong cách viết trên, F cũng đồng thời chỉ ra hai cách viết cho lệnh GOTO.

Code:
LOOP   GOTO    LOOP


Code:
GOTO  $
Hai cách viết này tương đương nhau. Trong đó, $ thay cho vị trí con trỏ tại vị trí lệnh đang thực hiện.

Chính vì vậy, trong đoạn code trên, thay vì viết

Code:
loop
DECFSZ delay_reg1, F ; giảm giá trị thanh ghi “delay_reg1”và so sánh với 0 và ghi lại vào delay-reg1
GOTO loop1 ; nếu chưa bằng 0 nhảy tới label “loop1”
GOTO next ; nếu đã băng 0 chương trình delay hoàn tất
loop1
...
Chúng ta co thể thay thành:

Code:
loop
DECFSZ delay_reg1, F ; giảm giá trị thanh ghi “delay_reg1”và so sánh với 0 và ghi lại vào delay-reg1
GOTO $+2 ; nếu chưa bằng 0 nhảy tới label “loop1”
GOTO next ; nếu đã băng 0 chương trình delay hoàn tất
...
Và đoạn code phía dưới:

Code:
loop1
MOVLW d’255’
MOVWF delay_reg2 ; đưa vào thanh ghi “delay_reg2” giá trị 255

DECFSZ delay_reg2, F ; giảm giá trị thanh ghi “delay_reg2” và so sánh với 0 và ghi lại vào delay_reg2
GOTO $-1 ; 
...
chúng ta co thể thay lại thành:

Code:
loop1
MOVLW d’255’
MOVWF delay_reg2 ; đưa vào thanh ghi “delay_reg2” giá trị 255
loop2
DECFSZ delay_reg2, F ; giảm giá trị thanh ghi “delay_reg2” và so sánh với 0 và ghi lại vào delay_reg2
GOTO loop2;
...
Chúc vui.

thay đổi nội dung bởi: falleaf, 12-02-2006 lúc 01:40 PM.
falleaf vẫn chưa có mặt trong diễn đàn  
Old 30-10-2007, 01:11 PM   #4
nttnew
Nhập môn đệ tử
 
Tham gia ngày: Jun 2007
Bài gửi: 1
:
Angry Hỏi đoạn delay

Tôi đã down cái tutorial của NTC và thấy khó hiểu ở đoạn delay sau:
movlw 20
movwf delay-reg
loop decfsz delay-reg,1
goto loop
...
Tại sao tổng số chu kỳ lệnh để thực hiện đoạn delay trên là: (20+1)3ti?
theo tôi tính thì chỉ có [(20-1)3+2+2 ]ti.
Tác giả còn nói là nếu nạp vào reg_delay già trị là N thì Tdelay=(N+1)3ti?
Tôi mới học pic nên còn non lắm.Mong các bác giúp thêm
thanks!
nttnew vẫn chưa có mặt trong diễn đàn  
Old 12-10-2008, 05:37 AM   #5
phamquocdai
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 2
:
Thumbs up Cam on ban ve bai viet!

Minh dang hoc lap trinh cho pic nhung khong biet bat dau tu dau? Bai viet cua ban rat hay hy vong minh se nhan tiep bai viet moi cua ban!!!!
Thanks!!!!!!!!!!!!
phamquocdai vẫn chưa có mặt trong diễn đàn  
Old 25-12-2005, 11:50 PM   #6
tinhthanthep
Đệ tử 6 túi
 
tinhthanthep's Avatar
 
Tham gia ngày: Jun 2005
Bài gửi: 141
:
Bài 1 của bác hay lắm, đọc dễ hiểu. Bác có thể viết tiếp về ngắt, timer, counter, comparator, PWM... Đây mới là những phần đáng để ngâm cứu.
tinhthanthep vẫn chưa có mặt trong diễn đàn  
Old 06-01-2006, 12:31 AM   #7
minhtienbk
Đệ tử 5 túi
 
minhtienbk's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 120
:
Send a message via ICQ to minhtienbk Send a message via Yahoo to minhtienbk
sao trong doan code ko có phần khai báo hả anh ,ví dụ trisb equ 03h chẳng hạn ,em vẫn ko hiểu ,anh chỉ giùm !
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11
bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com
Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ.
minhtienbk vẫn chưa có mặt trong diễn đàn  
Old 09-01-2006, 08:29 PM   #8
tinhthanthep
Đệ tử 6 túi
 
tinhthanthep's Avatar
 
Tham gia ngày: Jun 2005
Bài gửi: 141
:
Trích:
Nguyên văn bởi minhtienbk
sao trong doan code ko có phần khai báo hả anh ,ví dụ trisb equ 03h chẳng hạn ,em vẫn ko hiểu ,anh chỉ giùm !
----------------------

cần gì phải khai báo. vì trong chương trình có tác động trực tiếp lên trisb rồi.
movfw b'00000000'
movwf trisb
mplap sẽ tự hiểu trisb nằm ở địa chỉ 03h
tinhthanthep vẫn chưa có mặt trong diễn đàn  
Old 10-01-2006, 03:12 PM   #9
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
Chính đang phải đi mổ chân, cho nên không thể viết bài tiếp được, hôm nọ anh quên mất vì quá nhiều việc.

Mọi người thông cảm. Khi nào Chính hồi phục sẽ viết bài tiếp cho các bạn học.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn  
Old 04-02-2006, 04:57 PM   #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
Chào năm mới. Chúc mọi người một năm mới vui vẻ, hạnh phúc, và thành đat.
Đây là bài viết thứ hai, mời mọi người cùng xem.

http://www.picvietnam.com/download/T...TCR.300106.pdf
__________________

ntc vẫn chưa có mặt trong diễn đàn  
Old 05-02-2006, 10:01 AM   #11
nily
Nhập môn đệ tử
 
nily's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 3
:
cảm ơn nhiều ,chúc mau bình phục và chúc mừng năm mới luôn .
__________________
nilyforever
nily vẫn chưa có mặt trong diễn đàn  
Old 29-07-2006, 07:27 PM   #12
nam03
Nhập môn đệ tử
 
Tham gia ngày: Feb 2006
Bài gửi: 7
:
cam on su huynh. Bai cua huynh hay lam.
nam03 vẫn chưa có mặt trong diễn đàn  
Old 30-09-2008, 02:38 PM   #13
nutiepthi4
Nhập môn đệ tử
 
Tham gia ngày: Jul 2008
Bài gửi: 3
:
Lập trình PIC 16f877a trên Linux với SDCC

SDCC là trình biên dịch nhỏ gọn, ban đầu được phát triển trên Linux để biên dịch chương trình viết bằng C cho vi xử lý. Đối tượng ban đầu của SDCC là các vi xử lý họ 8051, vế sau được phát triển cho các vi điều khiển. Hiện nay SDCC lả trình biên dịch khá mạnh cho PIC chạy trên Linux (mặc dù đã có bản chạy trên MS Windows). Đi kèm với SDCC là trình mô phỏng GPSIM, và các chương trình hỗ trợ khác như gputils,...
Tôi giới thiệu giới thiệu trình biên dịch này bởi vì cấu trúc chương trinh viết bằng SDCC đơn giản, các file header (*.h) mô tả các vi điều khiển rất sát với Dataset của vi điều khiển. Ví dụ: trên Dataset của Microchip PIC 16f877a, mô ghi tên các chân cổng A là RA0, RÁ, ..., thanh ghi điều khiển vào ra cổng A là TRISA thì
trên SDCC muốn xuất mức 1 cho chân RA0, bạn chỉ cần viết:
TRISA0 = 0;
RA0 = 1;
Trông có vẻ đơn giản phải không? Vì vậy để điều khiển PIC bằng SDCC, gần như bạn chỉ cần học Dataset, bởi vì SDCC quá đơn giản và sát với Dataset!
Kiến thức về vi điều khiển của mình còn co hạn. Mong các bạn chỉ giáo thêm, Cảm ơn!
nutiepthi4 vẫn chưa có mặt trong diễn đàn  
Old 08-02-2009, 04:42 PM   #14
kyo
Đệ tử 1 túi
 
Tham gia ngày: Feb 2008
Bài gửi: 13
:
Smile Tài liệu về điều khiển từ xa!

Mình đang nghiên cứu về điều khiển từ xa bằng hồng ngoại và sóng radio. Mọi người ai có tài liệu gì về đề tài này thì chia sẻ cho mình với nhé. Cảm ơn nhiều!
kyo vẫn chưa có mặt trong diễn đàn  
Old 09-01-2006, 04:14 PM   #15
acom
Nhập môn đệ tử
 
Tham gia ngày: Dec 2005
Bài gửi: 2
:
Cam on ban ntc ve bai viet do. Rat co ban va chi tiet. Dieu nay se giup cho nguoi moi tim hieu ve PIC co cai nhin don gian ve PIC hon. Mong bac co nhieu bai viet moi de giup anh em trong dien dan tiep can voi PIC nhanh hon.
acom 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 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à 03:31 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