PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Học PIC trong 1 ngày (Upd. 01/01/2006) (http://www.picvietnam.com/forum/showthread.php?t=5)

falleaf 31-10-2005 08:51 PM

Tập lệnh PIC Midrange
 
Các bạn download tài liệu Tập Lệnh PIC Midrange bằng link này:

www.picvietnam.com/download/taplenh.pdf

Lưu ý với các bạn rằng, vì lý do đay là tài liệu chúng tôi biên soạn cho cuốn sách sắp hoàn thành, do đó, chúng tôi không cho phép in ấn hoặc copy.

Các bạn có thể download về để tham khảo.

Một chú ý nữa, đó là tài liệu này chưa được viết xong, còn các lệnh tôi chỉ mới sửa chữa sơ sơ, chủ yếu là phần chú thích, tôi nghĩ sau khi viết xong phần này, có thể đã giúp ích cho rất nhiều kỹ sư từng làm việc quen với vi điều khiển khác chuyển sang học PIC. Họ có thể tra cứu nhanh và nắm bắt các nguyên tắc lập trình PIC.

Cuối cùng, nếu các bạn sử dụng tài liệu này để soạn lại, hoặc đưa vào luận văn, hoặc các tài liệu của các bạn, xin các bạn ghi rõ nhóm tác giả picvietnam.com

Kể từ nay cho đến khi chúng tôi viết xong cuốn sách, các bạn được phép sử dụng các tài liệu như thế này một cách hoàn toàn miễn phí, cho mục đích cá nhân, không được phép công bố, sao chép.

Lý do tôi thông báo điều này, vì có bạn đã hỏi tôi về việc sử dụng tài liệu của tôi cho lớp dạy học sắp mở của các bạn đó, tôi rất hoan nghênh việc mở lớp của tất cả những người có nguyện vọng truyền thụ kiến thức cho sinh viên. Song vì có quá nhiều lớp sẽ mở ra, và có nhiều người sử dụng tài liệu do tôi biên soạn, để đảm bảo uy tín cho picvietnam, tôi mới đề nghị như trên, bởi vì tôi không tham gia chính thức vào bất kỳ lớp dạy học nào, ngoại trừ lớp của Bình Anh ở Hà Nội và lớp của Doãn Minh Đăng tại HCMC với vai trò cố vấn.

Chúc vui.

falleaf 02-01-2006 02:10 PM

Chương trình tính toán Timer
 
http://www.picvietnam.com/download/P...imerCalcV4.zip

Một điều không có gì cần thiết lắm, nhưng đôi khi nó lại làm cho chúng ta bối rối, đó là tính toán các con số delay, timer với thời gian thực.

Chương trình trên đây giúp chúng ta đỡ mất công suy nghĩ và tính toán hơn khi thao tác với timer. Đây chỉ là một chương trình bổ trợ nhỏ, nhưng cũng có lẽ sẽ giúp ích khi chúng ta đã làm việc quá lâu với máy tính, và có thể vài con số sẽ làm chúng ta bối rối.

Mong rằng nó giúp được cho các bạn.

Lưu ý, các bạn mới học PIC, khi tính toán với Timer, các bạn cố gắng tự tính bằng tay, sau đó sử dụng chương trình này để kiểm tra lại kết quả, để xem mình đã hiểu đúng về hoạt động của timer chưa.

Chúc vui.

sinhluc 11-04-2006 04:16 PM

bai viet của bac falleaf that la tuyệt voi. rất bài bản khoa học và có tính sư phạm cao, de hiểu lắm. đọc song là em máu làm luôn. tuong là có thể làm ngay, nhung khi bắt đầu thì lại khong biết là viết trên chuong trình biên dịch nào dịch, viet vào đâu... chi thấy nói là bấm alt-f10. Nên em vừa định bắt đầu lại tắc tịt luôn.
Mong bác bổ xung thêm chỗ này, em chưa biết một chuong trình biên dịch nào, bác cho em cai nào ngon ngon dễ sử dụng, hay bác co trình nào chuyen nghiệp thi làm một tutorial. em dang mau quá. Cam on bac !

nhh 12-04-2006 10:28 AM

Trích:

Nguyên văn bởi sinhluc
bai viet của bac falleaf that la tuyệt voi. rất bài bản khoa học và có tính sư phạm cao, de hiểu lắm. đọc song là em máu làm luôn. tuong là có thể làm ngay, nhung khi bắt đầu thì lại khong biết là viết trên chuong trình biên dịch nào dịch, viet vào đâu... chi thấy nói là bấm alt-f10. Nên em vừa định bắt đầu lại tắc tịt luôn.
Mong bác bổ xung thêm chỗ này, em chưa biết một chuong trình biên dịch nào, bác cho em cai nào ngon ngon dễ sử dụng, hay bác co trình nào chuyen nghiệp thi làm một tutorial. em dang mau quá. Cam on bac !

Trình biên dịch là MPLAB,do microchip cung cấp miễn phí
Qua bên này học pic cơ bản:
http://www.picvietnam.com/forum//showthread.php?t=4

sinhluc 12-04-2006 11:31 AM

thank you namqn và nhh. Minh biet la rat gian nan, hy vong các ban giup do.

Mnh da cai MPLAB roi, chi nhac bac falleaf bo xung mot it thieu sot nhu da noi o tren do thoi.

falleaf 12-04-2006 02:48 PM

1 Attachment(s)
Trích:

Nguyên văn bởi sinhluc
thank you namqn và nhh. Minh biet la rat gian nan, hy vong các ban giup do.

Mnh da cai MPLAB roi, chi nhac bac falleaf bo xung mot it thieu sot nhu da noi o tren do thoi.

Thành thật xin lỗi bạn, thời gian này mình đang rất bận, vừa phải lên lớp, vừa phải làm dự án, chuẩn bị thư viện điện tử cho picvietnam và dientuvietnam, xem xét sản xuất bộ sản phẩm thứ hai phát triển pic và picvietnam, và đang làm việc với anh Nam để chuẩn hóa MPASM, rồi viết cuốn sách MPASM...

Với khối lượng việc như vậy, mình không thể đảm bảo trả lời hết các bài viết của các bạn, mong các bạn thông cảm, và rất nhiều thành viên có thể giúp đỡ các bạn thêm trong thời gian này.

Đây là một bản dịch tài liệu hướng dẫn mà mình đã cho sinh viên mình soạn từ 2 năm trước, nó đã được đăng trên diendandientu.com. Tuy nhiên, vì mình thấy tài liệu chưa tốt, nên không phổ biến trên picvietnam. Một khi đã phổ biến trên picvietnam, mình muốn nó luôn luôn là tài liệu chuẩn hóa và có giá trị cao đối với thành viên.

Khi các bạn gặp khó khăn nhất thời, có thể tạm sử dụng tài liệu này. Tuy nhiên, mình tuyên bố, đây không phải là tài liệu chính thức của picvietnam. Tất cả các tài liệu chính thức của picvietnam, đều được post theo form chuẩn, và lưu trữ trong host của picvietnam với đường link www.picvietnam.com/download/.....

Chúc vui

falleaf 12-04-2006 03:44 PM

Post xong thấy bực mình quá, vì F vốn không thích kiểu làm việc như vậy. Nên đây, các bạn có thể download tạm tài liệu này để sử dụng có vẻ tốt hơn.

Một là tài liệu này cũng không phải là tài liệu chính thức. F chỉ viết chơi và chỉnh sửa lại một chút cho nó đúng form nhìn cho nó tốt hơn. Nhưng mà mặt khác F nghĩ nó cũng đã khá tốt rồi. Tài liệu này được viết từ cách đây gần 2 năm rồi, nên một số chỗ F còn để là diendandientu.com (vì lúc đó chưa có www.picvietnam.com), hoặc là mã số bài viết bên trong sai với tên tập tin bên ngoài, hoặc còn một số sai sót hoặc lời viết lung tung, bởi vì F copy qua lại, mong các bạn thông cảm.

Trong bài hướng dẫn này, F sử dụng mạch nạp PIC1 để hướng dẫn.

http://www.doanhiep.com/~ulsan/Taili....DH.100406.pdf

Chúc vui

namqn 21-04-2006 11:55 PM

Tutorial ngắn về tập tin .hex
 
Theo đề nghị của chú F, tôi viết tutorial ngắn này để các bạn mới bắt đầu học PIC không thắc mắc về kích thước của tập tin .hex, cùng với cách tính số word, kword trong chương trình của PIC.

Trong thế giới số:
1 k = 2^10 = 1024
1 mega = 2^20 = 1048576

1 kword = 1024 word
và, 8 kword = 8x1024 = 8192 word

Các chip PIC16 với bộ nhớ 8 kword, chẳng hạn như 16F877A, có 4 trang bộ nhớ Flash, mỗi trang là 2 kword. Nếu chương trình tràn khỏi biên của một trang thì người viết chương trình phải tự đảm bảo là các lệnh nhảy có thể thực hiện thành công, do đó trình biên dịch thường có thông báo nhắc nhở.

Đối với tập tin .hex, các byte được ghi bằng ký tự ASCII thể hiện mã hexadecimal của byte. Mỗi lệnh của PIC16 dài 14-bit, được ghi vào tập tin .hex bằng 2 byte, và mỗi byte được ghi bằng 2 ký tự ASCII, như vậy mỗi lệnh cần dùng tới 4 ký tự ASCII để ghi vào tập tin .hex. Ngoài ra còn có các thông tin định dạng và kiểm tra lỗi cho mỗi dòng trong tập tin .hex và các thông tin khác cho cấu hình của chip, nếu có dùng, và một số thông tin khác, chẳng hạn như địa chỉ bắt đầu của vùng nhớ được điền vào. Mỗi dòng cần có thêm 11 ký tự ASCII cho mục đích định dạng và kiểm tra lỗi, và mỗi dòng chỉ mã hóa cho tối đa 32 byte, tức là 16 lệnh. Các trình dịch PIC thường chỉ dùng 16 byte cho mỗi dòng trong tập tin .hex, do đó thường cần 1 dòng cho mỗi 8 lệnh.

Lấy ví dụ một chương trình dài 2048 lệnh, với cách ghi thành tập tin .hex thông thường, sẽ cần 256 dòng, mỗi dòng dùng hết 4x8 + 11 = 43 ký tự, và 256 dòng sẽ cần 11008 ký tự cho riêng phần mã lệnh, các thông tin khác cũng sẽ dùng thêm khoảng 200 ký tự. Do đó, chương trình này khi được ghi thành tập tin .hex sẽ có kích thước lớn hơn 11 kbyte (hơn 11 ngàn ký tự).

Thân,

tuanla 23-05-2006 04:19 PM

Các bác ơi, Tôi thấy có 1 số chỗ trong chương trình Led_1_1 phải sửa thì mới chạy ngon được: các bác tham khảo nhé - tui dùng PIC16F84A

1. Chỗ khai báo PROCESSOR không ghi tắt được mà phải đầy đủ là PROCESSOR PIC16F84A

2. Chỗ BSF PROTB,0 : TRƯỚC đó cần khởi tạo giá trị =0 chẳng hạn cho thanh ghi này đã, nếu không hình như nó có RÁC hay sao đó - hi hi. Tôi đã thêm lệnh CLRF PORTB vào trước dòng này, thì đèn LED mới hiển thị đúng - chỉ 1 đèn ở RB0.

3. Chỗ kết thúc : sau cái END không có dấu chấm .

Ngoài ra, nếu bác nào dùng ICPROG theo hướng dẫn mà Verify .... cứ báo lỗi thì các bác cứ chuyển đại sang chế độ Direct I/O ( không dùng chế độ Windows API nữa), các bác sẽ thấy nạp ngon ngay, lại còn nhanh hơn vài lần . Hê Hê.

Newbie xin đóng góp 1 tị.

falleaf 23-05-2006 04:33 PM

Trích:

Nguyên văn bởi tuanla
Các bác ơi, Tôi thấy có 1 số chỗ trong chương trình Led_1_1 phải sửa thì mới chạy ngon được: các bác tham khảo nhé - tui dùng PIC16F84A

1. Chỗ khai báo PROCESSOR không ghi tắt được mà phải đầy đủ là PROCESSOR PIC16F84A

2. Chỗ BSF PROTB,0 : TRƯỚC đó cần khởi tạo giá trị =0 chẳng hạn cho thanh ghi này đã, nếu không hình như nó có RÁC hay sao đó - hi hi. Tôi đã thêm lệnh CLRF PORTB vào trước dòng này, thì đèn LED mới hiển thị đúng - chỉ 1 đèn ở RB0.

3. Chỗ kết thúc : sau cái END không có dấu chấm .

Ngoài ra, nếu bác nào dùng ICPROG theo hướng dẫn mà Verify .... cứ báo lỗi thì các bác cứ chuyển đại sang chế độ Direct I/O ( không dùng chế độ Windows API nữa), các bác sẽ thấy nạp ngon ngay, lại còn nhanh hơn vài lần . Hê Hê.

Newbie xin đóng góp 1 tị.

1) Dòng khai báo Processor có hai cách, viết đầy đủ cũng được, còn một cách viết khác (hic, dạo này không thể nhớ nổi những cái này nữa, các bạn xem lại có hai cách khai báo processor, một cách viết P, một cách viết PIC).

3) END lưu ý không có dấu . là chính xác, có một cái tut F có viết sai là có dấu . (chấm), vì theo thói quen kết thúc bài viết, qmk đã có sửa lại, các bạn chú ý.

newuser 24-05-2006 12:27 PM

đúng thế đấy bạn, nếu bạn xuất led mà không có dòng CLRF PORTx là thấy chạy sai liền, Protues mô phỏng y chang...

falleaf 30-05-2006 04:00 PM

Từ hôm nay, F cắt các bài trong phần Học PIC trong 1 ngày ra thành Thảo luận xung quanh Học PIC trong 1 ngày, lý do rằng một số bài đi lan man, và cứ nhấn tới các câu hỏi.

Trong luồng này, chỉ lưu các tutorial của picvietnam, nhưng câu hỏi và trả lời liên quan đến bài học, nhằm giúp đỡ những người mới học tham gia và đọc một cách dễ dàng nhất.

Vì vậy, khi quyết định viết bài vào luồng này, các bạn phải thật cân nhắc, nếu không bài của các bạn sẽ bị di chuyển sang luồng khác.

http://www.picvietnam.com/forum/showthread.php?t=446

Liên quan đến bài học là thế nào? Là bạn đọc bài học ở đây, làm theo và có thắc mắc, hoặc là bạn có viết thêm các tutorial để bổ sung vào luồng này cho người học có thêm tài liệu phong phú. Nếu không phải là một trong hai trường hợp này, đề nghị các bạn không viết bài vào luồng này, để tránh các thành viên mới rất khó kiếm bài và rất khó hệ thống tài liệu học.

Chúc vui.

dtnbk 05-07-2006 12:46 AM

Sao Em Download File Tập Lệnh Về Lại Ko Thể Mở Xem Duoc Vậy Nhỉ.
Nó Cứ Bảo File Damaged And Could Not Repair....

falleaf 05-07-2006 01:42 AM

Nhiều người download thành công, và F cũng kiểm tra lại rồi, mọi thứ ok. Có thể đường truyền ở Việt Nam có vấn đề, cho nên đôi khi download giữa chừng nó bị hỏng, và dẫn tới file down về bị hư.

Chúc vui

friends 04-08-2006 09:36 AM

Interrupt
 
Cac anh cho em hoi, khi dung chuong trinh ngat theo mau nhu ben duoi ,thi co can khai bao cac vung ram ben duoi khong

Vi du: co can khai bao nhu the nay khong?

…………….

Org 0x20
W_SAVE
STAT_SV
PCH_SV
FSR_SV
ORG 0X0000
…………………..

;DAY LA CHUONG TRINH NGAT THEO MAU
;================================================= ===========================================
INTERRUPT

;-------------------------------------------
;Doan ma bat buoc de vao ngat
;-------------------------------------------

MOVWF W_SAVE ;W_SAVE(bank unknown!) = W
SWAPF STATUS, W
CLRF STATUS ; force bank 0 for remainder of handler
MOVWF STAT_SV ; STAT_SV = swap_nibbles( STATUS )
; STATUS = 0
MOVF PCLATH, W
MOVWF PCH_SV ; PCH_SV = PCLATH
CLRF PCLATH ; PCLATH = 0
MOVF FSR, W
MOVWF FSR_SV ; FSR_SV = FSR
; 10 cycles from interrupt to here!

;-----------------------------------
;Doan chuong trinh ngat
;-----------------------------------

; cac ban se viet chuong trinh ngat o day

;--------------------------------------------------
;Doan ma bat buoc de ket thuc ngat
;--------------------------------------------------

MOVF FSR_SV, W
MOVWF FSR ; FSR = FSR_SV
MOVF PCH_SV, W
MOVWF PCLATH ; PCLATH = PCH_SV
SWAPF STAT_SV, W
MOVWF STATUS ; STATUS = swap_nibbles( STAT_SV )
SWAPF W_SAVE, F
SWAPF W_SAVE, W ; W = swap(swap( W_SAVE )) (no change Z bit)

BSF INTCON, GIE
RETFIE
;================================================= ==================================================


Múi giờ GMT. Hiện tại là 04:04 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam