View Single Post
Old 02-01-2010, 02:22 AM   #3
thanh_nam1977
Đệ tử 2 túi
 
thanh_nam1977's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Ho Chi Minh
Bài gửi: 27
:
Send a message via Yahoo to thanh_nam1977
Trích:
Nguyên văn bởi motu View Post
Mình tìm hiểu PIC cũng khá lâu, nhưng ít khi thực hành với PIC (vì là dân ngoại đạo). nhưng khi làm mạch thì đụng chuyện với chân RB5, không hiểu sao chân này không lên dù với 1 code đơn giản.
Code:
 
;=======================================================
		TITLE 		"Mach test LED_2"
		PROCESSOR	PIC16F877A
		INCLUDE 	<P16F877A.inc>
		__CONFIG   	_CP_OFF	& _PWRTE_ON & _WDT_OFF &_HS_OSC

;=======================================================
;Khoi tao bien
;=======================================================
count1	EQU 0x20	;bien cho ham delay
counta	EQU 0x21
countb	EQU 0x22
;===============================================================================
		ORG	0x0000
		GOTO	MAIN


		ORG	0x0005

MAIN		
		BCF		STATUS,RP1
		BSF		STATUS,RP0		; bank1 select
		CLRF	TRISB			; trisb = 00000000
								; portb = output
		MOVLW 	b'00000000'
		MOVWF 	TRISB			
		BCF		STATUS,RP0		; bank0 select
;======================
;Vong lap chinh
;======================
		CLRF 	PORTB			;tat tat ca LED	
		CALL	delay_100ms
	loop
		MOVLW 	b'10000001'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		MOVLW 	b'01000010'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		MOVLW 	b'00100100'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		MOVLW 	b'00011000'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		MOVLW 	b'00111100'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		MOVLW 	b'01111110'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		MOVLW 	b'11111111'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		MOVLW 	b'00000000'
		MOVWF 	PORTB			
		CALL 	delay_100ms
		GOTO	loop			;tro ve loop
;======================
;chuong trinh con
;======================
delay_100ms						;label bat dau chuong trinh con
		MOVLW	d'200'
		MOVWF	count1
	d1
		MOVLW	d'199'
		MOVWF	counta
		MOVLW	d'1'
		MOVWF	countb
	delay_0
		DECFSZ	counta,1
		GOTO	$+2
		DECFSZ	countb,1
		GOTO	delay_0
		DECFSZ	count1,1
		GOTO	d1
		RETURN					;ket thuc chuong trinh con
	
		END						; lenh bat buoc de ket thuc
;================================================================================
Lúc đầu mình tự làm mạch để test, chân RB5 không sáng đèn (hoăc sáng mờ mờ), nghĩ là PIC (mình xài 16F887) bị lỗi.
Mình mua 3 con mới về thử, cũng không lên.
Chắc là mạch amatuer của mình bị chạm, làm thêm cái mạch khác
.........cũng không lên.
Ghét quá mua cái EasyPIC về test luôn, kết quả là ........... cũng không lên, nản quá!!!
Ai giúp mình giải quyết vấn đề nhức đầu này với, không chắc bỏ PIC xài con khác quá.
THk cả nhà, Năm mới hạnh phúc!
Làm nhà Q7 xong cả năm rồi mà hôm nay mới có nước máy.Nằm chờ nước chảy mà mừng quá,cũng rảnh tranh thủ lướt qua diễn đàn .Vấn đề mà bạn gặp tôi cũng đã từng gặp.Đã kiểm tra code bạn viết rồi.Chạy tốt lắm.Chỉ là phần configuration bit (Hiểu nôm na là cài đặt cấu hình phần cứng cho con PIC) chưa đúng.Cái này hối tháng trước mình cũng bị vậy, muốn điên luôn mà không hiểu tại sao.Có 2 cách để đặt configuration bit.Một cách là khai báo mềm __config vào luôn trong chương trình, để chi tiết tham khảo file 16f877A.INC tương ứng. Cách thứ 2 là cách mà mình trình bày sau đây:
1.Bỏ phần __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC trong chương trình
2.Dịch chương trình ra file HEX đặt tên là testled.hex chẳng hạn
3.
Nếu bạn dùng MPLAB V8.40 thì bạn vào mục Configure chọn Configuration bits với cấu hình như sau:



Sau đó bạn vào File chọn Export


Ở cửa sồ hiện ra chọn File format



Rồi save file vào cùng tên file Hex mà bạn đã biên dịch (testled.hex)
Và kết quả chạy ở đây:

PS: Các bạn mới học gặp khó ban đầu dễ nản lắm đề nghị mọi người giúp đỡ tận tình nhé, càng chi tiết càng tốt (Kết quả chụp bằng HTC HD2 nhìn ngon hơn Iphone 3GS kg bà con:X)
thanh_nam1977 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn