có thể giúp em về lệnh retlw,với thanh ghi PC được ko ạ.em viết chương trình đếm 0-9 sử dụng bảng dữ liệu cho led7 đoạn .mà sao xem debug nó cứ lặp lại chương trình từ :main - đến goto bangma đên retlw 0xC0 .chương trình đây ạ.mong các anh giúp đỡ.
#include "p16F887.inc"
; CONFIG1
; __config 0xE0D2
__CONFIG _CONFIG1, _FOSC_HS & _WDTE_OFF
; CONFIG2
; __config 0xFFFF
__CONFIG _CONFIG2, _BOR4V_BOR40V & _WRT_OFF
;--------------------khi bao bien--------------
cblock 0x20 ;start of general purpose registers
vong1,vong2,vong3
endc
;************************************************* *********************
;----------------------chong trinh chinh----------------------------------------
org 0x00
goto main ;
org 0x05 ;
main
bsf STATUS,5;
clrf TRISD ; chon port d la cong out
bcf STATUS,5
clrf PORTD
start ; chuong trinh dem
movlw d'0'
goto bangma
movwf PORTD;
goto Delay
;---------------------------
movlw d'1'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'2'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'3'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'4'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'5'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'6'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'7'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'8'
goto bangma
movwf PORTD
goto Delay
;-------------------------------
movlw d'9'
goto bangma
movwf PORTD
goto Delay
goto start
return
;----------------------------------------------------------------
Delay ;chuong trinh con tao tre
movlw d'120'
movwf vong1
movlw d'250'
movwf vong2
movlw d'3'
movwf vong3
decfsz vong1,1
goto $-1
decfsz vong2,1
goto $-3
decfsz vong3,1
goto $-5
return;tro ve ct chinh
bangma ;bang ma cho led
addwf PCL,f
retlw 0xC0
retlw 0xF9
retlw 0xA4
retlw 0xB0
retlw 0x99
retlw 0x92
retlw 0x82
retlw 0xF8
retlw 0x80
retlw 0x90
END
|