PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

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

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 27-05-2005, 10:46 AM   #1
trung
Đệ tử 1 túi
 
Tham gia ngày: May 2005
Bài gửi: 12
:
Cho hỏi Hiệp và các bạn khác post bài trong diễn đàn này, ...tôi mong muốn chuyển mấy bài viết của Hiệp, và những bài của các bạn khác ,...sang PDF, để đưa lên website www.vetecom.com.vn ....cho mọi người download ..Tất nhiên có bản quyền, ghi rõ tên tuổi, địa chỉ liên hệ của tác giả, .....
Lý do là thế này..., nhiều khi các bạn có nhiều bài viết rất chất lượng, nhưng người post vào forum thì nhiều khi chỉ ai hay vào mới biết ...nên những người ít vào sẽ ko biết đâu mà tìm
PicVietnam sau một thời gian cũng nên có portal. Hiện tại admin đang ôn thi, nên chắc phát triển sau
Không biết ý các bạn thế nào ...???
trung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-05-2005, 02:09 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
Ngắt

Bài 3: Ngắt (interrupt)

Giới thiệu:

Khái niệm ngắt là một khái niệm rất phổ biến trong tất cả các hệ thống vi điều khiển, vi xử lý và máy tính. Vậy ngắt là gì?

Các bạn hình dung hình ảnh chúng ta đang đi xe máy trên bờ ruộng, con đường đi rất dài và rất thẳng, bỗng nhiên có một con bò chạy ngang, húc chúng ta xuống ruộng. Cả xe và người lao xuống ruộng. Chúng ta lồm cồm bò dậy, phủi quần áo, chửi đổng lên một cái vì chẳng biết chửi ai, thế là chúng ta đem ông trời ra chửi. Sau đó, chúng ta dắt xe máy lên bờ ruộng, tại cái chỗ mà chúng ta bị húc té xuống, rồi chúng ta lấy xe chạy tiếp. Nếu lỡ có một con bò nào khác, lại húc chúng ta.. thì....

Hoạt động ngắt cũng giống như vậy, khi chúng ta đang chạy một chương trình chính nào đó, bỗng nhiên có một sự kiện xảy ra, chúng ta phải dừng việc chúng ta đang làm lại, và giải quyết cái sự việc xảy ra đó. Cuối cùng, chúng ta lại quay trở về cái chỗ mà chúng ta đã tạm dừng lại lúc nãy và tiếp tục công việc đang làm.

Khái niệm ngắt chỉ đơn giản như vậy, tuy nhiên, đối với vi điều khiển nói chung, và PIC nói riêng, ngắt có thể do rất nhiều nguồn xảy ra, và với mỗi nguồn ngắt khác nhau, chúng ta có thể định trước rằng trong ngắt đó chúng ta sẽ làm việc gì. Cũng như khi đi trên bờ ruộng, chúng ta có thể bị bò húc, cũng có thể bị trâu húc, cũng có thể bị vấp cục đã, cũng có thể bị lọt ổ gà... Và nếu như bị bò húc thì chúng ta chửi ông trời, bị trâu húc chúng ta mắng ông trăng, bị vấp cục đá chúng ta tự trách mình xui xẻo, và đến khi vấp ổ gà... thì chúng ta vô nhà thương...

Các nguồn ngắt trong PIC:

Số lượng và loại nguồn ngắt trong PIC rất đa dạng, và rất khác nhau ở mỗi dòng PIC. Do vậy không thể liệt kê hết ra đây tất cả các dòng PIC và tất cả các loại ngắt trong từng dòng được. Chúng ta chỉ đưa ra đây sơ đồ tổng quát của các nguồn ngắt, và đi sâu vào một số loại ngắt phổ biến.



Hình 1: mô tả tất cả các nguồn ngắt của dòng PIC Midrange

Chúng ta chú ý đến một số điểm sau:

1) Trong hình có các ký hiệu cổng logic AND và OR



Đây là cổng AND, có nghĩa là chỉ khi đầu vào của hai cổng này đều có giá trị là 1, thì đầu ra mới có giá trị là 1. Chúng ta quan sát một góc hình bên trái phía dưới TXIF và TXIE, chúng đi qua cổng AND, chỉ khi nào bit TXIE bật lên, và bit TXIF cũng được bật lên, thì lúc đó ngõ ra nối vào cổng OR phía trên mới có giá trị.



Đây là cổng OR, có nghĩa là chỉ cần một trong các tín hiệu ngõ vào có giá trị là 1, thì ngõ ra sẽ có giá trị là 1. Như vậy, nếu cả TXIE và TXIF đều có giá trị 1, thì ngõ ra sau cổng AND của chúng sẽ có giá trị 1 và ngõ ra sau cổng OR cũng có giá trị 1, bởi vì ít nhất cổng OR ở đây cũng có 1 ngõ vào có giá trị 1.

Chúng ta cứ tiếp tục như vậy mà suy ra.

2) Điểm thứ hai, là các chữ đuôi IE và IF:

IE ở đây là viết tắt của chữ Interrupt Enable, và IF ở đây viết tắt của Interrupt Flag.

IE có nghĩa là chúng ta cho phép kích hoạt một loại ngắt nào đó xảy ra hay không. Đây là tín hiệu mà chúng ta có thể quy định ngay từ ban đầu. Mặc định, tất cả chúng đều có giá trị 0, chỉ khi nào chúng ta cho phép một ngắt nào đó xảy ra, thì về sau nó mới xảy ra ngắt đó thôi.

Cũng giống như, ban đầu trên bờ ruộng có dãy rào chắn, thì con bò không thể nào húc bạn té được, nếu bạn bỏ hàng rào ra, thì nếu có con bò húc bạn, bạn sẽ té. Nguyên lý này đơn giản như vậy thôi.

IF ở đây là các cờ ngắt. Tức là khi bạn bị bò húc, thì có một người cầm cờ giơ lên báo là bạn đã bị bò húc, để những người dưới ruộng reo hò...hihi... Và tất nhiên, khi bạn không phá rào cản thì người trên ruộng vẫn có. Và khi con bò lao vào bạn, thì người ta cũng phất cờ lên như thường, nhưng bị cái rào cản nên bạn cứ thoải mái mà đi con đường của bạn, chẳng phải quan tâm đến việc té xuống, chửi bới hay trèo lên làm gì.

Cái rào cản chính là IE và cái sự việc cuối cùng mà bạn vẫn đi hay lồm cồm bò dậy đó chính là cái cổng AND mà chúng ta vừa nói trên kia.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-05-2005, 10:25 PM   #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
Bài 3: Ngắt (tt)

3) Điểm thứ ba, các lớp ngắt:

Bạn thấy rằng, trong hình, rõ ràng có 2 lớp ngắt. Lớp thứ nhất nằm bên tay trái ngoài cùng, lớp thứ hai nằm ở giữa hình. Lớp thứ ba chỉ có một cổng AND nên chúng ta không kể tới làm gì.

Lớp thứ nhất được gọi là lớp ngắt ngoại vi.

Thực chất lớp này vì có quá nhiều nguồn ngắt, và các nguồn ngắt này đều là một số chuẩn giao tiếp, hoặc chức năng đặc biệt của PIC, cho nên người ta phân ra làm lớp ngắt ngoại vi. Để các ngắt ngoại vi hoạt động, trước tiên chúng ta phải cho phép ngắt ngoại vi, tức là bật bit PIE lên. Còn cụ thể muốn cho ngắt ngoại vi nào hoạt động, thì chúng ta bật ngắt đó lên. Trên sơ đồ các bạn cũng thấy rõ thông qua các cổng AND và OR.

Lớp thứ hai tạm gọi là lớp ngắt phổ thông.

Khi muốn dùng các nguồn ngắt phổ thông, chúng ta chỉ việc bật các bit IE của nguồn ngắt này. Tất nhiên, cuối cùng, chúng ta phải bật ngắt toàn cục GIE thì ngắt mới được phép xảy ra (kể cả ngắt ngoại vi và ngắt phổ thông. Khi đó, PIE được coi là một nguồn ngắt phổ thông.

Điều này cũng giống như khi bạn chạy xe trên bờ ruộng, một hàng rào dài chạy dọc theo con đường, chính là ngắt toàn cục GIE. Lớp bên ngoài thứ hai là lớp ngắt phổ thông, bao gồm luôn cả ngắt ngoại vi PIE. Và ngoài cùng là các hàng rào thuộc lớp ngắt ngoại vi.

Nếu các bạn bật các nguồn ngắt, mà không bật ngắt toàn cục GIE thì cho dù ngắt có xảy ra, thì chương trình vẫn không dừng để thực hiện ngắt, giống như con bò có thể lao qua hàng rào ngoài cùng đã được mở, nhưng vẫn còn hàng rào trong cùng.

Như vậy, các bạn đã hiểu một cách tổng quan về hoạt động ngắt của PIC, những nguyên tắc phải bật hay tắt ngắt.

Điểm lưu ý cuối cùng, đó là tôi muốn giới thiệu với các bạn rằng, chữ ký hiệu trong bảng, là tên các bit liên quan đến việc bật tắt ngắt. VD: bit PIE, INTE.. nằm trong thanh ghi INTCON (ngắt phổ thông), các bit quy định ngắt ngoại vi nằm trong các thanh ghi PIR và PIE.

Vectơ ngắt của PIC:

Như lần trước đã giới thiệu, vectơ ngắt của PIC nằm ở vị trí 0x0004 các bạn xem lại hình sau:

Khác với khi bạn bị té ruộng, bạn té xuống ngay tại chỗ bạn bị húc, đối với vi điều khiển, khi xảy ra interrupt, nó sẽ nhảy về một địa chỉ cố định, và thực hiện công việc tại đó. Sau khi thực hiện xong, nó sẽ quay trở về vị trí mà từ đó nó đã thoát ra. Vị trí cố định mà nó sẽ nhảy về khi xảy ra ngắt là vị trí 0x0004.

Chương trình ngắt:

Lại quay về thí dụ té ruộng, có lẽ tôi thích cái thí dụ này vì nó có thể giúp bạn hình dung mọi thứ. Bây giờ các bạn hãy chia giai đoạn từ khi bị bò húc, té xuống ruộng, rồi bạn chửi đổng lên, rồi bạn lồm cồm bò lên. Vậy cho dù bạn bị bò húc, hay bị vấp ổ gà, thì chỉ có giai đoạn bạn chửi đổng lên là khác nhau, còn lại, giai đoạn bạn té xuống ruộng là té xuống ruộng, và sau đó thì bạn cũng bò lên.

Vậy ngắt cũng giống thế, khi nhảy vào ngắt, bạn sẽ có một giai đoạn cần phải nhảy vào ngắt, và một giai đoạn nhảy ra khỏi ngắt, còn bên trong ngắt đó các bạn làm cái gì là nội dung cần thực hiện của từng nguồn ngắt.

Tôi cung cấp ra đây đoạn chương trình ngắt chuẩn, từ nay về sau, các bạn chỉ cần copy đoạn chương trình này và sử dụng:
Code:
;===================================================================
			ORG 	0x0000
			GOTO	MAIN
			ORG	0x0004
			GOTO	INTERRUPT
			ORG	0x0005
MAIN
; đây là phần chương trình chính của các bạn

;===================================================================

INTERRUPT

			RETFIE
;===================================================================
; Các chương trình con được viết ở đây

;===================================================================
			GOTO	$
			END
;===================================================================
Như vậy, một lần nữa, chúng ta bổ sung sườn chương trình của chúng ta một cách chi tiết hơn. Chúng ta vừa thêm vào một đoạn chương trình con INTERRUPT. Thực ra, gọi INTERRUPT là một chương trình con cũng không sai, nhưng vì nó khá đặc biệt, nên chúng ta cứ tách rời nó ra.

Khởi tạo và kết thúc ngắt:

Tôi cung cấp dưới đây đoạn chương trình khởi tạo và kết thúc ngắt đầy đủ cho PIC, từ nay về sau, khi muốn sử dụng ngắt, các bạn chỉ cần copy và paste đoạn code này lại, hoàn toàn không cần sửa chữa gì và cứ thế sử dụng.

Tôi sẽ dành cho các bạn đặt câu hỏi về phần này để từ các câu hỏi, có thể giải thích rõ hơn vì sao chúng ta lại viết như vậy, từng điểm một. Nếu không, tôi không thể có thời gian để viết tất cả mọi vấn đề về ngắt ra đây được.
Code:
;============================================================================================
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
;====================================================================================================
Như vậy, chương trình ngắt được chia làm 3 phần chính.
Phần thứ nhất là phần bắt đầu vào ngắt, đây là đoạn chương trình bắt buộc, tất nhiên không hoàn toàn nghiêm ngặt như vậy, vì thực tế nhiều khi bạn không dùng đến tất cả các lệnh này, nhưng vì mục đích cung cấp các khái niệm cơ sở, và công cụ làm việc đầy đủ, tôi cung cấp cho bạn chương trình ngắt chi tiết. Phần thứ hai là phần chương trình ngắt của bạn. Khi xảy ra ngắt, bạn muốn làm cái gì, thì bạn bắt đầu viết từ phần này trở đi. Phần thứ ba là phần kết thúc ngắt, bạn cứ viết nguyên bản như vậy không cần sửa đổi.

Tạm thời, sẽ không có các phân tích chi tiết giống như các bài học trước, các bạn có thể tự tìm hiểu thêm, nếu không, có thể đặt câu hỏi, và chúng ta sẽ từ từ tìm hiểu rõ hơn về ngắt của PIC.

Thời gian tới đây, có lẽ tôi hơi bận, cho nên tôi không thể viết bài liên tục được, mong rằng các bạn cố gắng tìm hiểu và học tốt PIC. Đến giai đoạn này, các bạn đã có thể dùng con PIC, giống như một con 89C51 thông thường. Và các bạn thấy đấy, thực sự PIC chỉ cần 1 ngày để học.

Chúng ta vừa học xong 3 bài học cơ bản nhất của một con vi điều khiển: Điều khiển port, viết hàm delay và viết chương trình ngắt.

Phần thứ tư của bài viết chương trình ngắt, sẽ đi chi tiết vào các ngắt và giải thích rõ nghĩa từng ngắt. Nhưng thiết nghĩ, tôi nên kết hợp bài học này ở đây, và kết hợp phần thứ tư vào bài học sau: Nút bấm và các ngõ vào của PIC.

Tài liệu tham khảo:

http://www.microchip.com/stellent/id...pnote=en011006
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2005, 02:27 AM   #4
zero2one
Đệ tử 1 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 19
:
Code:
;============================================================================================
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
;====================================================================================================
theo em biết thì khi vào chương trình ngắt ta phải lưu lại giá trị của hai thanh ghi : STATUS và W để sau khi thực hiện trình phục vụ ngắt sẽ khôi phục lại. Còn PC thì được tự động lưu vào STACK. Vậy, các tác động vào PCLATH... trên đoạn CODE của bác là nhằm mục đích gì vậy ?

còn nữa : CLRF STATUS
thì chưa chắc STATUS = 0 ! vì trong STATUS có một số bit không chịu tác động - giá trị của chúng không đổi ?

em mới học, mong bác chỉ rõ hơn.
zero2one vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2005, 10:55 AM   #5
tuanva
Đệ tử 2 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 33
:
Mình muốn biết thêm về W reg (Work register)? Chưa thấy Falleaf nói rõ về thanh ghi này.
__________________
I'm beginner.
tuanva vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2005, 09:26 PM   #6
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
Z,

1) Ngắt có nhiều tác vụ, có thể bị tràn stack, hoặc dùng nhiều ngắt cùng lúc, làm động tác này, khóa cứng tất cả luôn.

2) Đã có lệnh SWAPF trước đó để lưu lại giá trị thanh STATUS rồi, chú ý.

T,

Dạo này mình hơi bạn, chưa thể viết bài được, hẹn đầu tháng 7 viết tiếp.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-06-2005, 03:04 AM   #7
zero2one
Đệ tử 1 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 19
:
Trích:
Nguyên văn bởi falleaf
Z,

1) Ngắt có nhiều tác vụ, có thể bị tràn stack, hoặc dùng nhiều ngắt cùng lúc, làm động tác này, khóa cứng tất cả luôn.
hiểu rồi, thanks bác nhiều.
zero2one vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-06-2005, 09:48 AM   #8
tuanva
Đệ tử 2 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 33
:
Mình hỏi thêm về không gian địa chỉ của PIC. Giới hạn mở rộng bộ nhớ của PIC (mấy loại thường dùng ấy, 16F... và 18F...) là bao nhiêu? Nếu như mình cần mở rộng đến 10MB bộ nhớ có được không nhỉ?

To Falleaf:
Xin lôĩ vì đã quấy rầy khi cậu đang bận. Mình sẽ đợi đến lúc cậu rảnh. Chúc cậu thành công.
__________________
I'm beginner.
tuanva vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-07-2005, 02:55 PM   #9
tuanva
Đệ tử 2 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 33
:
Tôi đã làm mạch chạy theo hướng dẫn. Tôi dùng thạch anh 10Mhz. Xin hỏi nếu tôi muốn PIC chạy tốc độ < 10Mhz (8 MHz chẳng hạn) mà ko thay thạch anh có được không? Làm thế nào?

Thank.
__________________
I'm beginner.
tuanva vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-07-2012, 05:51 PM   #10
dinhquanghiep
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 1
:
Code:
;============================================================================================
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
;====================================================================================================
em có thắc mắc ở chương trình trên, em không hiểu dòng này:

MOVWF W_SAVE ;W_SAVE(bank unknown!) = W

giả sử các biến W_SAVE,STAT_SV,PCH_SV được khai báo ở bank0 (địa chỉ từ 0X20 đến 0x7F), khi chương trình chính đang làm việc ở bank 2 thì xảy ra ngắt vậy thì câu lệnh trên không thực hiện đúng do biến W_SAVE được lưu ở bank0, các anh giải thik giúp em chỗ này với ạ
dinhquanghiep vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ð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
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 4 10-10-2005 06:23 PM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf PIC - Thiết kế và Ứng dụng 4 10-10-2005 06:23 PM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf Chương trình dịch & các công cụ mô phỏng 0 24-05-2005 12:52 AM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf MPASM 0 24-05-2005 12:52 AM
Các bạn mới học PIC lưu ý luồng này (Upd. 16/10/2005) falleaf dsPIC - Bộ điều khiển tín hiệu số 16-bit 0 24-05-2005 12:52 AM


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