السلام عليكم
اغتنمت فرصة قيامي بمراجعة برمجة الميكرو 16F84 لكتابة هذا البرنامج لكن حذاري لم اجربه وربما يحتاج الى كثير من التعديلات وبه كثير من الاخطاء والثغرات
حيث
RA2 هو مخرج يتحكم في تروزيستور عارض الاحاد
RA3 هو مخرج يتحكم فيترونزيستور عارض العشرات
RA0 هو مدخل التصفير RESET
RB0 مدخل اشارة العد
من RB1 الى RB7 تتحكم من A الى G للعارض
كود:
list p=16F84A
#include <p16F84A.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
AA EQU 0x000C
BB EQU 0x000D
DD EQU 0x000F
MM EQU 0x0010
STORSTATUS EQU 0x0011
VV EQU 0x0012
TT EQU 0x0013
WSTOR EQU 0x0014
GG EQU 0x0015
OPPTION EQU 0x0081
#DEFINE BANK1 BSF STATUS,05
#DEFINE BANK0 BCF STATUS,05
ORG 0x0000
GOTO STAR
ORG 0x0004
BCF INTCON,1
MOVWF WSTOR
SWAPF STATUS,W
MOVWF STORSTATUS
CALL T20MS
INCF AA
SWAPF STORSTATUS,W
MOVWF STATUS
SWAPF WSTOR,F
SWAPF WSTOR,W
RETFIE
STAR
BANK1
MOVLW b'00001000'
MOVWF OPPTION
MOVLW b'00000001'
MOVWF TRISB
MOVLW b'11110011'
MOVWF TRISA
BSF INTCON,4
BSF INTCON,7
BANK0
CLRF VV
TEST
BTFSC PORTA , 0
CLRF AA
MOVF AA,W
MOVWF DD
CLRF BB
TRANS
BSF STATUS,C
MOVLW b'00001010'
SUBWF DD,W
BTFSS STATUS,C
GOTO LOOP
INCF BB
MOVLW b'00001010'
SUBWF DD
BTFSC STATUS,C
GOTO TRANS
LOOP
COMF VV
BTFSC VV,0
CALL AHAD
BTFSS VV,0
CALL HACHARAT
CALL X10
GOTO TEST
AHAD
MOVF DD ,w
MOVWF TT
BSF PORTA,2
BCF PORTA,3
RETURN
HACHARAT
MOVF BB ,w
MOVWF TT
BCF PORTA,2
BSF PORTA,3
RETURN
X10
BCF STATUS,Z
MOVLW 0
SUBWF TT,W
BTFSC STATUS,Z
CALL NOMBRE0
MOVLW 1
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE1
MOVLW 2
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE2
MOVLW 3
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE3
MOVLW 4
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE4
MOVLW 5
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE5
MOVLW 6
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE6
MOVLW 7
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE7
MOVLW 8
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE8
MOVLW 9
SUBWF TT,w
BTFSC STATUS,Z
CALL NOMBRE9
RETURN
NOMBRE0
MOVLW b'01111110'
MOVWF PORTB
RETURN
NOMBRE1
MOVLW b'00001100'
MOVWF PORTB
RETURN
NOMBRE2
MOVLW b'10110110'
MOVWF PORTB
RETURN
NOMBRE3
MOVLW b'10011110'
MOVWF PORTB
RETURN
NOMBRE4
MOVLW b'11001100'
MOVWF PORTB
RETURN
NOMBRE5
MOVLW b'11011010'
MOVWF PORTB
RETURN
NOMBRE6
MOVLW b'11111010'
MOVWF PORTB
RETURN
NOMBRE7
MOVLW b'00001110'
MOVWF PORTB
RETURN
NOMBRE8
MOVLW b'11111110'
MOVWF PORTB
RETURN
NOMBRE9
MOVLW b'11011110'
MOVWF PORTB
RETURN
T1ms
MOVLW 0xf9
MOVWF MM
loop1
NOP
DECFSZ MM
goto loop1
RETURN
T20MS
movlw 0x14
movwf GG
loop3
CALL T1ms
DECFSZ GG
GOTO loop3
RETURN
NOP
NOP
NOP
NOP
END