PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 01-10-2006, 11:51 PM   #11
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Talking

Trích:
Nguyên văn bởi nhh View Post
Code:
;========================================
;Author:		NHH
;Date:		02/03/06
;Hardware:	PIC16F877A ,Crystal 4MHz
;========================================
	PROCESSOR	PIC16f877A 
	INCLUDE<P16f877A.inc> 
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF
;========================================
	COUNT		EQU	0x20
	COUNT1		EQU	0x21
	COUNT2		EQU	0x22
	COUNT3		EQU	0x23
	COUNT4		EQU	0x24
	COUNT5		EQU	0x25
	COUNT6		EQU	0x26
	COUNT7		EQU	0x27
	
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 	0x00
	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
;******************************************************************************
	DECFSZ	COUNT,F
	GOTO	CHECK
	MOVLW	d'1'
	MOVWF	COUNT	
	INCF	COUNT1,F
	GOTO	CHECK	
BACK	BCF	INTCON,TMR0IF	;xoa co ngat TMR0
;******************************************************************************
	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

CHECK	
	CALL	CHECK1
	CALL	CHECK2
	CALL	CHECK3
	CALL	CHECK4
	CALL	CHECK5
	GOTO	BACK
;==============	CHUONG TRINH CHINH===============
MAIN
	BCF 	STATUS,RP1
	BSF 	STATUS,RP0 		; chon BANK 1
	MOVLW	b'11111111'		;PORTA=Input
	MOVWF	TRISA
	MOVLW	b'00000001'		;RB0=Input
	MOVWF	TRISB
	CLRF	TRISD
;------------------------------
;Khoi tao ngat Timer0
;------------------------------
	BSF	OPTION_REG,PS0		;TMR0 rate 1: 64
	BSF	OPTION_REG,PS1
	BCF	OPTION_REG,PS2
	BCF	OPTION_REG,PSA		;Prescaler is assigned to the Timer0 module
	BCF	OPTION_REG,T0CS		
	BCF 	STATUS,RP0 		;select BANK 0

	BSF	INTCON,GIE
	BSF	INTCON,TMR0IE
	BCF	INTCON,TMR0IF

	MOVLW	d'246'
	MOVWF	COUNT
	CLRF	COUNT1
	CLRF	COUNT2
	CLRF	COUNT3
	CLRF	COUNT4
	CLRF	COUNT5
	CLRF	COUNT6
	CLRF	COUNT7
LOOP
	CALL	DISPLAY1
	CALL	DISPLAY2
	CALL	DISPLAY3
	CALL	DISPLAY4
	CALL	DISPLAY5
	CALL	DISPLAY6
	
	BTFSC	PORTB,0
	GOTO	LOOP
	GOTO	MODIFY
MODIFY
	BCF	INTCON,GIE
	
	BTFSC	PORTA,0
	GOTO	$+2
	CALL	LED34
	BTFSC	PORTA,1
	GOTO	$+2
	CALL	LED56
	BTFSS	PORTB,0
	GOTO	MODIFY
	BSF	INTCON,GIE
	GOTO	LOOP
LED34
	INCF	COUNT3,F
	MOVLW	d'10'
	SUBWF	COUNT3,W
	BTFSS	STATUS,0
	RETURN
	CLRF	COUNT3
	INCF	COUNT4,F
	MOVLW	d'6'
	SUBWF	COUNT4,W
	BTFSS	STATUS,0
	RETURN
	CLRF	COUNT4
	RETURN
LED56
	INCF	COUNT5,F
	MOVLW	d'4'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	RETURN
	MOVLW	d'2'
	SUBWF	COUNT6,W
	BTFSS	STATUS,0
	GOTO	LED5
	CLRF	COUNT6
	RETURN
	
LED5
	MOVLW	d'10'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	GOTO	MODIFY
	CLRF	COUNT5
	INCF	COUNT6,F
	GOTO	MODIFY

;============CHUONG TRINH CON===
DISPLAY1
	MOVLW	b'11111101'
	MOVWF	PORTB
	MOVF	COUNT1,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD		
	RETURN
DISPLAY2
	MOVLW	b'11111011'
	MOVWF	PORTB
	MOVF	COUNT2,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY3
	MOVLW	b'11110111'
	MOVWF	PORTB
	MOVF	COUNT3,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY4
	MOVLW	b'11101111'
	MOVWF	PORTB
	MOVF	COUNT4,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY5
	MOVLW	b'11011111'
	MOVWF	PORTB
	MOVF	COUNT5,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY6
	MOVLW	b'10111111'
	MOVWF	PORTB
	MOVF	COUNT6,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN

DECREATE
	DECFSZ	COUNT7
	GOTO	DECREATE
	RETURN

;........................................................
CHECK1
	MOVLW	d'10'
	SUBWF	COUNT1,W
	BTFSS	STATUS,0
	GOTO	BACK
	CLRF	COUNT1
	INCF	COUNT2,F
	RETURN
CHECK2
	MOVLW	d'6'
	SUBWF	COUNT2,W
	BTFSS	STATUS,0
	GOTO	BACK
	CLRF	COUNT2
	INCF	COUNT3,F
	RETURN
CHECK3
	MOVLW	d'10'
	SUBWF	COUNT3,W
	BTFSS	STATUS,0
	GOTO	BACK
	CLRF	COUNT3
	INCF	COUNT4,F
	RETURN
CHECK4
	MOVLW	d'6'
	SUBWF	COUNT4,W
	BTFSS	STATUS,0
	GOTO	BACK	
	CLRF	COUNT4
	INCF	COUNT5,F
	RETURN
CHECK5
	MOVLW	d'10'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	GOTO	BACK	
	CLRF	COUNT5
	INCF	COUNT6,F
	RETURN
CHECK6
	INCF	COUNT5,F
	MOVLW	d'4'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	RETURN
	MOVLW	d'2'
	SUBWF	COUNT6,W
	BTFSS	STATUS,0
	CALL	LED_5
	CLRF	COUNT6
	RETURN
	
LED_5
	MOVLW	d'10'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	RETURN
	CLRF	COUNT5
	INCF	COUNT6,F
	RETURN
;----------------------------------------------------------

; Bang tra ve Digital tu 0 den 9 va OFF
; Chi so dau truy cap la 0
; Bang o PAGE 0

	ORG 07F0h
TABLE
;----------------------------------------------------------
	ADDWF 	PCL, F 			; bat dau tai 0x90
	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'00111111' 		; 0
		
	END
Anh NHH xem lại chương trình nay đi,em mắc mạch như trong hình ( mô phỏng bằng Proteus )nhưng chương trình chạy không đúng.
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 26 07-05-2024 08:55 AM
TUT về USART trong PIC16F877A mafd_47a MPASM 11 04-05-2024 04:43 AM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM
CCS C for PIC16F877A nhh Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 405 24-04-2008 12:00 PM


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