View Single Post
Old 05-03-2006, 06:18 PM   #4
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
Ngắt ngoài với RB4 đến RB7

Đấy là chương trình quét 16 phím bấm hiển thị lên LED 7 đoạn các số từ 0 đến 9 và các chữ A,b,C,d,E,F.
Xem hình ở file đính kèm!
Code:
;========================================
;Auhor:		NHH
;Date:		02/03/06
;Hardware:	PIC16F877A connect PORTB by R220
;========================================
	TITLE 		"Giai ma ban phim dung interrupt RB4...RB7"
	PROCESSOR	PIC16f877A 
	INCLUDE<P16f877A.inc> 
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF
;========================================
	COUNT	EQU	0x20	
w_temp		EQU	0x71		; variable used for context saving 
status_temp	EQU	0x72		; variable used for context saving
pclath_temp	EQU	0x73		; variable used for context saving			

;=============================================================================
;CHUONG TRINH CHINH
;=============================================================================
	ORG 0000h
	GOTO 	MAIN
	ORG 0004h
	GOTO	INTERRUPT

;==============================INTERRUPT PROGRAM===========================		
INTERRUPT
	movwf w_temp	 ; save off current W register contents
	movf STATUS,w 	; move status register into W register
	movwf status_temp	 ; save off contents of STATUS register
	movf PCLATH,w	 ; move pclath register into w register
	movwf pclath_temp 	; save off contents of PCLATH register
;******************************************************************************
	BCF	INTCON,RBIF
	
	MOVLW	b'00000001'
	MOVWF	PORTB
	BTFSS	PORTB,4
	GOTO	DIS_1
	MOVLW	d'0'	;0
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_1
	BTFSS	PORTB,5
	GOTO	DIS_2
	MOVLW	d'1'	;1
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_2
	BTFSS	PORTB,6
	GOTO	DIS_3
	MOVLW	d'2'	;2
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_3
	BTFSS	PORTB,7
	GOTO	DIS_4
	MOVLW	d'3'	;3
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_4
	MOVLW	b'00000010'
	MOVWF	PORTB
	BTFSS	PORTB,4
	GOTO	DIS_5
	MOVLW	d'4'	;4
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_5
	BTFSS	PORTB,5
	GOTO	DIS_6
	MOVLW	d'5'	;5
	CALL	TABLE
	MOVWF	PORTC
	retfie 

DIS_6
	BTFSS	PORTB,6
	GOTO	DIS_7
	MOVLW	d'6'	;6
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_7
	BTFSS	PORTB,7
	GOTO	DIS_8
	MOVLW	d'7'	;7
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_8
	MOVLW	b'00000100'
	MOVWF	PORTB
	BTFSS	PORTB,4
	GOTO	DIS_9
	MOVLW	d'8'	;8
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_9
	BTFSS	PORTB,5
	GOTO	DIS_A
	MOVLW	d'9'	;9
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_A
	BTFSS	PORTB,6
	GOTO	DIS_b
	MOVLW	d'11'	;A
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_b
	BTFSS	PORTB,7
	GOTO	DIS_C
	MOVLW	d'12'	;b
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_C
	MOVLW	b'00001000'
	MOVWF	PORTB
	BTFSS	PORTB,4
	GOTO	DIS_d
	MOVLW	d'13'	;C
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_d
	BTFSS	PORTB,5
	GOTO	DIS_E
	MOVLW	d'14'	;d
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_E
	BTFSS	PORTB,6
	GOTO	DIS_F
	MOVLW	d'15'	;E
	CALL	TABLE
	MOVWF	PORTC
	retfie 
DIS_F
	BTFSS	PORTB,7
	GOTO	$+4
	MOVLW	d'16'	;F
	CALL	TABLE
	MOVWF	PORTC
	retfie 




;******************************************************************************
	movf pclath_temp,w 		; retrieve copy of PCLATH register
	movwf PCLATH 		; restore pre-isr PCLATH register contents
	movf status_temp,w 		; retrieve copy of STATUS register
	movwf STATUS 		; restore pre-isr STATUS register contents
	swapf w_temp,f
	swapf w_temp,w 		; restore pre-isr W register contents
	retfie 			; return from interrupt
;==============	CHUONG TRINH CHINH===============
MAIN
	BCF 	STATUS,RP1
	BSF 	STATUS,RP0 	; chon BANK 1
	MOVLW	b'11110000'	;RB0=Input
	MOVWF	TRISB
	CLRF	TRISC
	
	BCF 	STATUS,RP0 	; chon BANK 0
	BSF	INTCON,GIE
	BSF	INTCON,RBIE	;cho phep ngat RB4...RB7

	MOVLW	d'10'
	CALL	TABLE
	MOVWF	PORTC
LOOP		
	MOVLW	b'00001111'
	MOVWF	PORTB	
	GOTO	LOOP
;----------------------------------------------------------
; Bang tra ve Digital tu 0 den 9 va  A....F
; Chi so dau truy cap la 0
; Bang o PAGE 0

	ORG 0x90
TABLE
;----------------------------------------------------------
	ADDWF 	PCL, F 		; bat dau tai 0x80
	RETLW 	b'00111111' 		; 0
	RETLW 	b'00000110' 		; 1
	RETLW 	b'01011011' 		; 2
	RETLW 	b'01001111' 		; 3
	RETLW 	b'01100110' 		; 4
	RETLW 	b'01101101' 		; 5
	RETLW 	b'01111101' 		; 6
	RETLW 	b'00000111' 		; 7
	RETLW 	b'01111111' 		; 8
	RETLW 	b'01101111' 		; 9
	RETLW 	b'00000000' 		; NODISPLAY
	RETLW 	b'01110111' 		; A
	RETLW 	b'01111100' 		; B
	RETLW 	b'00111001' 		; C
	RETLW 	b'01011110' 		; d
	RETLW 	b'01111001' 		; E
	RETLW 	b'01110001' 		; F
			
	END
Hình Kèm Theo
File Type: gif Giai ma ban phim.gif (5.9 KB, 1466 lần tải)
__________________
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, 09-03-2006 lúc 12:12 PM.
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn