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 Bài Trong Ngày 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 24-12-2007, 04:26 PM   #1
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
Tham gia ngày: Sep 2006
Bài gửi: 100
:
Mạch test đó bạn làm những việc gì? Chương trình viết như thế nào? không ổn định như thế nào? Lúc chạy lúc không hay thế nào? Bây giờ bạn có thể làm như thế này để Test ngắt Timer1: Giả dụ bạn có 1 cái mạch nào đó có gắn LED trên chân cổng, bạn viết chương trình trễ để chớp tắt LED đi. Còn cái ngắt Timer1 thì chỉ có thế, không quá phức tạp. Không có chuyện nó chạy thiếu ổn định, chỉ là do mình quản lý hệ thống chương trình chưa tốt.
__________________
Do more than exist, LIVE
Jerry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-12-2007, 05:14 PM   #2
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi Jerry View Post
Mạch test đó bạn làm những việc gì? Chương trình viết như thế nào? không ổn định như thế nào? Lúc chạy lúc không hay thế nào? Bây giờ bạn có thể làm như thế này để Test ngắt Timer1: Giả dụ bạn có 1 cái mạch nào đó có gắn LED trên chân cổng, bạn viết chương trình trễ để chớp tắt LED đi. Còn cái ngắt Timer1 thì chỉ có thế, không quá phức tạp. Không có chuyện nó chạy thiếu ổn định, chỉ là do mình quản lý hệ thống chương trình chưa tốt.
Cái chương trình test của mình giống y như bạn nói, chỉ nhấp nhấp led ở portB chu kỳ 100ms. Khi nạp chương trình cho PIC, thử ngay trên mạch đó, chương trình chạy tốt. Sau đó mình tháo con PIC ra gắn qua mạch đồ án coi thử trên mạch đồ án nó chạy như thế nào, kết quả là không chạy được nhưng lắc cái dây nguồn vài lần thì lại OK (lần thử nào cũng vậy). Mình lại tháo con PIC từ mạch đồ án ra, gắn lại vào mạch test, cấm nguồn vào mạch test, nó không chạy(có nguồn đàng hoàng mà vẫn ko chạy). Lại phải cấm ra cấm vô cái dây nguồn vài lần, nó lại chạy được.
Những hiện tượng trên chỉ xảy ra khi mình viết ngắt timer1, những chương trình khác như quét phím, đọc xung từ timer0 chạy rất tốt, không việc gì cả. Mình không hiểu tại sao nữa.
Chương trình nhâp nháy led .
Code:
processor	16f877a						;vi dieu khien duoc su dung la PIC16F877A cua Microchip
	include		<p16f877a.inc>				;header file kem theo
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
;===================================================================================================
;NHOM CAC THANH GHI TRONG CHUONG TRINH NGAT
	W_save		EQU	0x20
	PCLATH_save	EQU	0x21
	STATUS_save	EQU	0x22
	FSR_save	EQU	0x23
	DEM			EQU	0X24

	count1		EQU 0x25		
	counta		EQU 0x26		
	countb		EQU 0x27
;===================================================================================================

	
	ORG		0X004
	GOTO	ISR
ISR
;===================================================================================================
;DOAN CHUONG TRINH BAT BUOC KHI VAO NGAT
	MOVWF		W_save
	SWAPF		STATUS_save,W
	CLRF		STATUS
	MOVWF		STATUS_save
	MOVF		PCLATH,W
	MOVWF		PCLATH_save
	CLRF		PCLATH
	MOVF		FSR,W
	MOVWF		FSR_save
;===================================================================================================
;CHUONG TRINH CHINH CUA NGAT
;===================================================================================================
	BTFSS	PIR1,TMR1IF
	GOTO	exit_int
	BCF		PIR1,TMR1IF

	BCF		T1CON,TMR1ON
	CLRF	T1CON
	CLRF	TMR1L
	CLRF	TMR1H
	MOVLW	0X00
	MOVWF	T1CON
	MOVLW	0XFC
	MOVWF	TMR1H
	MOVLW	0X17
	MOVWF	TMR1L
	BSF		T1CON,TMR1ON
	

	DECFSZ	DEM,1
	GOTO	exit_int
	COMF	PORTB,1
	MOVLW	D'100'
	MOVWF	DEM
	GOTO	exit_int
	
;===================================================================================================
;DOAN CHUONG TRINH BAT BUOC KHI KET THUC CHUONG TRINH NGAT
exit_int
	MOVF		FSR_save,W
	MOVWF		FSR
	MOVF		PCLATH_save
	MOVWF		PCLATH
	SWAPF		STATUS_save,W
	MOVWF		STATUS
	SWAPF		W_save,1
	SWAPF		W_save,0
	RETFIE


	ORG		0X0000
	GOTO	start
	ORG		0X050
;=================================================================================================
;CHUONG TRINH CHINH
;=================================================================================================
start
	BSF 	STATUS, RP0 	; Select Bank 1
	MOVLW 	0x06 		; Configure all pins
	MOVWF 	ADCON1 		; as digital inputs
	BCF 	STATUS, RP0 	; Select Bank 0


	BCF		STATUS,RP1
	BSF		STATUS,RP0
	MOVLW	0X00
	MOVWF	TRISB
	BCF		STATUS,RP0
	
	MOVLW	D'100'
	MOVWF	DEM
	

;------------------------------------------------------------------------------------------------
;KHOI TAO TIMER 1
;------------------------------------------------------------------------------------------------

	CLRF	T1CON
	CLRF	INTCON
	BSF		STATUS,RP0
	CLRF	PIE1
	BSF		PIE1,TMR1IE
	BCF		STATUS,RP0
	CLRF	PIR1
	MOVLW	0XFC
	MOVWF	TMR1H
	MOVLW	0X17
	MOVWF	TMR1L

	BSF		T1CON,TMR1ON
	BSF		INTCON,TMR1IE
	BSF		INTCON,PEIE
	BSF		INTCON,GIE


	MOVLW	B'10000110'
	MOVWF	PORTB
	GOTO	$
END
Cảm ơn bạn Jerry.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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:22 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