View Single Post
Old 04-11-2010, 08:40 PM   #1
dien44
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 4
:
Question Hiển Thị số 00 - 99 trên led 7 đoạn ( code asm )

Chào mọi người. Em là người mới tham gia vào học PIC. em có viết 1 chương trình để hiển thị các số từ 00 - 99 bằng có asm như nó không chạy được. Em k biết bị lỗi ở chỗ nào, mong mọi người xem giúp và cho em vài ý kiến.
Code như sau:
Code:
;=========================================
;CHUONG TRINH DIEU KHIEN LED 7 DOAN HIEN THI CAC SO TU 0 - 99
;=========================================
PROCESSOR	16F877A			;khai bao vi dieu khien
INCLUDE		<p16f877a.inc>	;file header cua vi dieu khien
;====================================================
							;khai bao cac bien cau hinh
__CONFIG	_CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
;====================================================
							;khai bao dia chi cac thanh ghi dung cho chuong trinh delay
count1		EQU	0x20
counta		EQU	0x21
countb		EQU	0x22
COUNT_DV	EQU	0x23
COUNT_CHUC	EQU	0x24
;====================================================
			ORG	0x00		;dia chi bat dau chuong trinh
	GOTO	start
start
							;chon BANK0 de xoa PORTB, PORTD
	BCF		STATUS,RP0
	BCF		STATUS,RP1
	CLRF	PORTB
	CLRF	PORTD
							;chon BANK1 de set portb, d la output
	BSF		STATUS,RP0
	MOVLW	0x00
	MOVWF	TRISB
	MOVLW	0x00
	MOVWF	TRISD
							;chon lai bank 0 de xuat gia tri mong muon ra portb
	BCF		STATUS,RP0

	CLRF	COUNT_DV
	CLRF	COUNT_CHUC
	INCF	COUNT_CHUC,1
	GOTO	loop
;QUY DINH. PORT B XUAT HANG CHUC, PORT D XUAT HANG DON VI
;o day dung led co cac cathode noi cung 1 diem. --> sang o muc 1
;==============================================================
loop
	INCF	COUNT_DV,1
	MOVF	COUNT_DV,0
	XORLW	D'10'
	BTFSC	STATUS,Z
	GOTO	reset_
	GOTO	sang
reset_
	CLRF	COUNT_DV
	INCF	COUNT_CHUC,1
	GOTO	loop
sang
	;MOVF	COUNT_DV,0
	CALL	table
	MOVWF	PORTD
	CALL	delay_100ms
;----------- COPY NOI DUNG PCL VAO COUNT_DV, SAU DO XOA PCL DI ---------
	MOVF	PCL,0
	MOVWF	COUNT_DV
	CLRF	PCL
;----------- DUA GIA TRI CUA THANH COUNT_CHUC VAO THANH PCL -----------
	MOVF	COUNT_CHUC,0
	CALL	table
	MOVWF	PORTB
	CALL	delay_100ms
;---------- LUU NOI DUNG PCL VAO COUNT_CHUC VA XOA PCL DI -------------
	MOVF	PCL,0
	MOVWF	COUNT_CHUC
	CLRF	PCL
;----------- TRO VE CHUONG TRINH CHINH --------------------------------
	GOTO	loop
	
table
	ADDWF	PCL,1
						;so_0
	RETLW	b'00111111'
						;so_1
	RETLW	b'00000110'
						;so_2
	RETLW	b'01011011'
						;so_3
	RETLW	b'01001111'
						;so_4
	RETLW	b'01100110'
						;so_5
	RETLW	b'01101101'
						;so_6
	RETLW	b'01111100'
						;so_7
	RETLW	b'00000111'
						;so_8
	RETLW	b'01111111'
						;so_9
	RETLW	b'01101111'

delay_100ms
	MOVLW	d'250'
	MOVWF	count1
d1
	MOVLW	0xC7
	MOVWF	counta
	MOVLW	0x01
	MOVWF	countb
delay_0
	DECFSZ	counta,1
	GOTO	$+2
	DECFSZ	countb,1
	GOTO	delay_0
	DECFSZ	count1,1
	GOTO	d1
	RETLW	0x00
END
dien44 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn