R
ripkars
Guest
Zdravím všechny,
Jsem setkávají glitching / artefakt účinky na výstupu zámky spojené s PORTA, PORTB a PORTC registrů PIC 16F870.
Kód, který píše tyto porty je:
Kód:SCL_UP EQU H'0020 '
SCL_DN EQU H'0021 '
SDA_ORG EQU H'0022 '
TBYTE EQU H'0023 '
LAMP1 EQU H'0024 '
LAMP2 EQU H'0025 '
T_LAMP1 EQU H'0026 '
T_LAMP2 EQU H'0027 '
TEMPB EQU H'0028 '
TEMPC EQU H'0029 'ORG 00H
; PORTA -> LED diod TLAČÍTKO
; PORTB -> DATA (SDA)
; PORTC -> CLOCK (SCK)BCF STATUS, 7, vypněte všechny přerušeníBSF STATUS, 5; Přepnout do banky 1
MOVLW b'00000111 '; nastavit Porta kolíky na digitální vysílání
MOVWF ADCON1, I / O (místo analogický)
MOVLW b'00000001 '; Nastavte Port kolíky
MOVWF TRISA; pro výstup (s výjimkou RA0).
BSF STATUS, 5; Přepnout do banky 1 znovu (není nutné?)
MOVLW b'00000000 '; set port B na výstup
MOVWF TRISB;
BSF STATUS, 5; Přepnout do banky 1 znovu (není nutné?)
MOVLW b'00000000 '; Set Port C na výstup
MOVWF TRISC;
BCF STATUS, 5; přepnout zpět do banky 0MOVLW d'5 '
MOVWF SCL_UP
MOVLW d'5 '
MOVWF SCL_DN
MOVLW d'150 '
MOVWF LAMP1
MOVLW d'150 '
MOVWF LAMP2
MOVF LAMP1, 0
MOVWF T_LAMP1
MOVF LAMP2, 0
MOVWF T_LAMP2
MOVLW B'00000000 '; inicializovat adresu registru
MOVWF TBYTE
CLRW; Hlavní cyklus
RESTART
BSF PORTA, 2, zapněte RA2 (zelená dioda LED)
CALL GENERIC_DELAY
BCF PORTA, 2; vypnout RA2
BTFSS PORTA, 0, pokud je RA0 UP -> begin
GOTO RESTART
BCF PORTA, 2
; GOTO (OTHER_CODE_NOT_POSTED_BUT_FOR_SURE_NOT_IMPORTANT); Loop blikající LED
GENERIC_DELAY
CLRW
DLY_GEN DECFSZ LAMP1, 1
GOTO DLY_GEN
DECFSZ LAMP2, 1
GOTO DLY_GEN
; RICARICO LAMP1 E LAMP2
MOVF T_LAMP1, 0
MOVWF LAMP1
MOVF T_LAMP2, 0
MOVWF LAMP2
RETURN
Jsem setkávají glitching / artefakt účinky na výstupu zámky spojené s PORTA, PORTB a PORTC registrů PIC 16F870.
Kód, který píše tyto porty je:
Kód:SCL_UP EQU H'0020 '
SCL_DN EQU H'0021 '
SDA_ORG EQU H'0022 '
TBYTE EQU H'0023 '
LAMP1 EQU H'0024 '
LAMP2 EQU H'0025 '
T_LAMP1 EQU H'0026 '
T_LAMP2 EQU H'0027 '
TEMPB EQU H'0028 '
TEMPC EQU H'0029 'ORG 00H
; PORTA -> LED diod TLAČÍTKO
; PORTB -> DATA (SDA)
; PORTC -> CLOCK (SCK)BCF STATUS, 7, vypněte všechny přerušeníBSF STATUS, 5; Přepnout do banky 1
MOVLW b'00000111 '; nastavit Porta kolíky na digitální vysílání
MOVWF ADCON1, I / O (místo analogický)
MOVLW b'00000001 '; Nastavte Port kolíky
MOVWF TRISA; pro výstup (s výjimkou RA0).
BSF STATUS, 5; Přepnout do banky 1 znovu (není nutné?)
MOVLW b'00000000 '; set port B na výstup
MOVWF TRISB;
BSF STATUS, 5; Přepnout do banky 1 znovu (není nutné?)
MOVLW b'00000000 '; Set Port C na výstup
MOVWF TRISC;
BCF STATUS, 5; přepnout zpět do banky 0MOVLW d'5 '
MOVWF SCL_UP
MOVLW d'5 '
MOVWF SCL_DN
MOVLW d'150 '
MOVWF LAMP1
MOVLW d'150 '
MOVWF LAMP2
MOVF LAMP1, 0
MOVWF T_LAMP1
MOVF LAMP2, 0
MOVWF T_LAMP2
MOVLW B'00000000 '; inicializovat adresu registru
MOVWF TBYTE
CLRW; Hlavní cyklus
RESTART
BSF PORTA, 2, zapněte RA2 (zelená dioda LED)
CALL GENERIC_DELAY
BCF PORTA, 2; vypnout RA2
BTFSS PORTA, 0, pokud je RA0 UP -> begin
GOTO RESTART
BCF PORTA, 2
; GOTO (OTHER_CODE_NOT_POSTED_BUT_FOR_SURE_NOT_IMPORTANT); Loop blikající LED
GENERIC_DELAY
CLRW
DLY_GEN DECFSZ LAMP1, 1
GOTO DLY_GEN
DECFSZ LAMP2, 1
GOTO DLY_GEN
; RICARICO LAMP1 E LAMP2
MOVF T_LAMP1, 0
MOVWF LAMP1
MOVF T_LAMP2, 0
MOVWF LAMP2
RETURN