PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

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

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 03-06-2006, 01:51 PM   #1
thang0105
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 4
:
Hay quá, vậy mà mình cứ tìm hoài không ra, để mình thử lại xem sao rồi nhắn lại cho anh em biết nhé. Cảm ơn bạn "nhh" nhiều.
thang0105 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 02:29 PM   #2
thang0105
Nhập môn đệ tử
 
Tham gia ngày: Jun 2006
Bài gửi: 4
:
Ban "nhh" cho mình hỏi tiếp nhé. Mình đã chỉnh sửa lại đoạn code rồi. Mình có gởi kèm đoạn code cho bạn xem đấy. Mình đã bỏ phần: Tạo hàm Delay, mà thay vào đó là viết luôn vào các Loop, tuy nhiên trình biên dịch MPLAB vẫn còn báo lỗi. Lần này lại phải nhờ tiếp đến bạn "nhh" và các anh chị em nữa rồi, giúp đỡ anh em với nhé.
File Kèm Theo
File Type: txt code 2.txt (570 Bytes, 271 lần tải)
thang0105 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2006, 06:56 PM   #3
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi thang0105
Ban "nhh" cho mình hỏi tiếp nhé. Mình đã chỉnh sửa lại đoạn code rồi. Mình có gởi kèm đoạn code cho bạn xem đấy. Mình đã bỏ phần: Tạo hàm Delay, mà thay vào đó là viết luôn vào các Loop, tuy nhiên trình biên dịch MPLAB vẫn còn báo lỗi. Lần này lại phải nhờ tiếp đến bạn "nhh" và các anh chị em nữa rồi, giúp đỡ anh em với nhé.
Mình vừa edit lại bài gởi trên kia, có nhầm lẫn về sử dụng lệnh DECFSZ, những chỗ nào bạn sử dụng lệnh này thì phải sửa lại cho đúng.Ví dụ như sau:
Code:
LOOP1		
        DECFSZ	REG_L,1            ;có thể thay số 1 bằng chữ F, số 0 bằng chữ W
	GOTO	LOOP1
	GOTO	LOOP2
Một điều nữa trong phần SET_POTRTS, bạn khai báo còn lằn nhằn lắm.Tham khảo các set chân IO trong đoạn code sau:
Code:
        BCF 	STATUS,RP1
	BSF 	STATUS,RP0 	; chon BANK 1 = cách xóa bit RP1, set bit RP0
        CLRF	TRISA           ; toàn bộ PORTA là output nè.
	MOVLW	b'11110000'	
	MOVWF	TRISB		;Bit nào bằng 1, chân tương ứng là input, 
				;ngược lại bằng 0 là output.Chân RB0 = output, RB6 = input,....	
	BCF 	STATUS,RP0 	; chon BANK 0 = cách xóa bit RP0, xóa bit RP1; ở đây RP1 bằng 0 rồi nên không cần.
Bạn phải nắm chắc phần này, nếu không sẽ gặp rắc rối lắm đó.Để viết được chương trình đèn giao thông, có led 7 thanh không phải đơn giản.Trước tiên bạn phải xuất nhập port thành thạo đã, tiếp đến là làm phần delay, tức tạo trễ.

Chương trình sau sẽ làm sáng bừng 8 con led nối với portb của PIC6F84 qua 8 điện trở 220 Ohm:
Code:
;====================================================================
;Auhor:		NHH
;Date:		10/02/06
;Hardware:	PIC16F84 
		;XTAL 10MHz, PORTB noi voi 8 LED qua 8 dien tro 220Ohm 
;======================================================================
	TITLE 		"ON-LED"
	PROCESSOR	PIC16f84 
	INCLUDE<P16f84.inc> 
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF

;=========================CHUONG TRINH CHINH=========================
	ORG 0x000
	GOTO 	MAIN

MAIN
	BCF STATUS,RP1
	BSF STATUS,RP0 		; select BANK 1
	CLRF TRISB 		; PORTB output
	BCF STATUS,RP0 		;  select BANK 0

	MOVLW	d'255'
	MOVWF	PORTB 		;  sáng 8 led đi nào!		
	END
Thật là đơn giản phải không!

Còn đây là chương trình nhấp nháy 8 con led trong trường hợp trên, thời gian trễ là 1s
Code:
;========================================
;Auhor:		NHH
;Date:		10/02/06
;Hardware:	PIC16F84 
		;XTAL 10MHz, PORTB noi voi 8 LED qua 8 dien tro 220Ohm 
;========================================
	TITLE 		"ON-OFF LED 1 SECOND"
	PROCESSOR	PIC16f84 
	INCLUDE<P16f84.inc> 
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF
;=============================================================================	
	COUNT1 EQU 0x20
	COUNT2 EQU 0x21
	COUNT3 EQU 0x22
;=========================CHUONG TRINH CHINH=========================
	ORG 0x000
	GOTO 	MAIN

MAIN
	BCF STATUS,RP1
	BSF STATUS,RP0 		; select BANK 1
	CLRF TRISB 		; PORTB output
	BCF STATUS,RP0 		;  select BANK 0

	MOVLW	d'255'
	MOVWF	COUNT1		;<-COUNT1=255	
	MOVWF	COUNT2		;<-COUNT2=255
NEXT	
	MOVLW	d'14'
	MOVWF	COUNT3		;<-COUNT3=13
	MOVLW	b'11111111'	;LED ON
	MOVWF	PORTB
	CALL	LOOP

	MOVLW	d'14'
	MOVWF	COUNT3		;<-COUNT3=13
	MOVLW	b'00000000'	;LED OFF
	MOVWF	PORTB	
	CALL	LOOP
	
	GOTO	NEXT		
;========================CHUONG TRINH CON====================
LOOP
	DECFSZ	COUNT1,1
	GOTO	LOOP
	DECFSZ	COUNT2,1
	GOTO	LOOP
	DECFSZ	COUNT3,1
	GOTO	LOOP		
	RETURN
		
	END
Chỉ cần bạn viết được chương trình nhấp nháy led như trên thì vấn đề của bạn đã được giải quyết rồi !
Chúc học tốt nhé!
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263

thay đổi nội dung bởi: nhh, 03-06-2006 lúc 06:59 PM. Lý do: Nothing
nhh 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


Múi giờ GMT. Hiện tại là 03:42 AM.


Đượ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