M
mickbristol
Guest
Γεια σας, είμαι νέος στο ΣΜΕ.Προσπαθώ να ενεργοποιήσετε LEDs στην θύρα Δ χρησιμοποιώντας το timer0 και PRESCALER να φτάσουν στο 1 δευτερόλεπτο.
Διορθώστε με εάν im λάθος.
Χρησιμοποιώ ένα 8MHz κρύσταλλο.
έτσι τον κύκλο διδασκαλίας είναι 1 / (8000000 / 4) = 500ns,
χρησιμοποιώντας PRESCALER στα 256.κύκλος μου γίνεται 500ns x 256 = 128us
Θα κάνω 235 κύκλους σχετικά με τη δοκιμή του INTCON, 2
και 235 x 2 για τις ακόλουθες GOTO
θα κάνω το LOOP 11 φορές και συν τις λίγες Additionnal θ οδηγίες θα πρέπει να έχουν
(235x2) (235) 10 = 715
Loops 715x11 = 7865 κύκλοι
7865x128us = 1,00672 δευτερόλεπτα
αλλά για την ανάπτυξη του σκάφους μου .. είναι πολύ πιο γρήγορα!Θα έλεγα 0,5 sec
μπορεί κανείς να διορθώσει όπου είναι δικό μου λάθος;
σε ευχαριστώ πάρα πολύ
εδώ είναι ο κωδικός
p = κατάλογο 16F877A
# include P16F877A.inc
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _PWRTE_OFF & _BODEN_OFF & _WDT_OFF & _HS_OSC
org 0x0000
LOOP EQU 0x20
goto κύρια
κύριος
banksel PORTD
clrf PORTD? σαφές λιμάνι Δ
banksel TRISD? τράπεζα 1
movlw b'00000000 '? φορτίο 0000 0000
movwf TRISD? οδήγησε portD εξόδου
BCF OPTION_REG, 5? εσωτερικό ρολόι
BCF OPTION_REG, 3? prescale να TMR0
BSF OPTION_REG, 0? PRESCALER σε 1:256
BSF OPTION_REG, 1
BSF OPTION_REG, 2
L1
banksel LOOP
movlw d'11 '
movwf LOOP
L2
banksel TMR0? bank0
movlw d'20 '? φορτιστή 0001 0100
movwf TMR0? στο TMR0
BCF INTCON, 2? σαφή τη σημαία
L3 btfss INTCON, 2? Δοκιμή της σημαίας timer0
goto L3
decfsz LOOP, 1? Δεκέμβριο LOOP από 1 και παραλείψτε επόμενη instr αν LOOP = 0
goto L2
comf PORTD? συμπληρώνουν PORTD
L1 goto? go to LOOP
τέλος
Διορθώστε με εάν im λάθος.
Χρησιμοποιώ ένα 8MHz κρύσταλλο.
έτσι τον κύκλο διδασκαλίας είναι 1 / (8000000 / 4) = 500ns,
χρησιμοποιώντας PRESCALER στα 256.κύκλος μου γίνεται 500ns x 256 = 128us
Θα κάνω 235 κύκλους σχετικά με τη δοκιμή του INTCON, 2
και 235 x 2 για τις ακόλουθες GOTO
θα κάνω το LOOP 11 φορές και συν τις λίγες Additionnal θ οδηγίες θα πρέπει να έχουν
(235x2) (235) 10 = 715
Loops 715x11 = 7865 κύκλοι
7865x128us = 1,00672 δευτερόλεπτα
αλλά για την ανάπτυξη του σκάφους μου .. είναι πολύ πιο γρήγορα!Θα έλεγα 0,5 sec
μπορεί κανείς να διορθώσει όπου είναι δικό μου λάθος;
σε ευχαριστώ πάρα πολύ
εδώ είναι ο κωδικός
p = κατάλογο 16F877A
# include P16F877A.inc
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _PWRTE_OFF & _BODEN_OFF & _WDT_OFF & _HS_OSC
org 0x0000
LOOP EQU 0x20
goto κύρια
κύριος
banksel PORTD
clrf PORTD? σαφές λιμάνι Δ
banksel TRISD? τράπεζα 1
movlw b'00000000 '? φορτίο 0000 0000
movwf TRISD? οδήγησε portD εξόδου
BCF OPTION_REG, 5? εσωτερικό ρολόι
BCF OPTION_REG, 3? prescale να TMR0
BSF OPTION_REG, 0? PRESCALER σε 1:256
BSF OPTION_REG, 1
BSF OPTION_REG, 2
L1
banksel LOOP
movlw d'11 '
movwf LOOP
L2
banksel TMR0? bank0
movlw d'20 '? φορτιστή 0001 0100
movwf TMR0? στο TMR0
BCF INTCON, 2? σαφή τη σημαία
L3 btfss INTCON, 2? Δοκιμή της σημαίας timer0
goto L3
decfsz LOOP, 1? Δεκέμβριο LOOP από 1 και παραλείψτε επόμενη instr αν LOOP = 0
goto L2
comf PORTD? συμπληρώνουν PORTD
L1 goto? go to LOOP
τέλος