.


:




:

































 

 

 

 


. 1. MPLAB IDE




1. MPLAB IDE.

2. .

3. MPLAB IDE, .

4. .

, P16F877:

#include <P16F877.inc>

;

MAX_COUNT_STEP equ D'14';

MIN_COUNT_STEP equ D'6';

DREB equ D'10';

;

PAUSE equ D'150';

COUNT_STEP_UP_KEY equ D'20';

;

COUNT_STEP_DOWN_KEY equ H'21';

;

COUNT_STEP equ H'22';

BIT_NER equ H'23';

JZ macro LBL;

; LBL

;

;

btfsc STATUS,Z;

;

goto LBL;

endm;

ORG 0;

goto START; START

 

OUTPUT addwf PCL,F;

;

retlw B'00000000';

retlw B'00000000';

retlw B'00000000'

retlw B'00000000'

retlw B'00000000'

retlw B'00000000'

retlw B'00011111'

retlw B'00001111'

retlw B'00000111'

retlw B'00000011'

retlw B'00000000'

retlw B'00100001'

retlw B'00100101'

retlw B'00101101'

retlw B'00111101'

retlw B'00000000'

retlw B'00000000'

retlw B'00000000'

 

START bsf STATUS,RP0; 1

clrf TRISB; TRISB

bsf OPTION_REG,NOT_RBPU;

; PORTB

clrf PORTB; PORTB

bcf STATUS,RP0; 0

clrf PORTA;

movlw D'10';

movwf COUNT_STEP;

START0 btfsc PORTA,1; 1 PORT (

; )

goto ASDF; ASDF

call STEP_UP_KEY;

;

goto NEXT; NEXT

ASDF btfsc PORTA,2; 2 PORT (

;)

goto IN_ZERO_COUNT; IN_ZERO_COUNT

call STEP_DOWN_KEY;

;

goto NEXT

IN_ZERO_COUNT clrf COUNT_STEP_UP_KEY

clrf COUNT_STEP_DOWN_KEY

NEXT call SET_STEP

nop;

nop

nop

nop

nop

goto START0; START0 (

; )

STEP_UP_KEY incf COUNT_STEP_UP_KEY,f;

; COUNT_STEP_UP_KEY (

; )

movfw COUNT_STEP_UP_KEY;

sublw DREB,0;

JZ INC_STEP; ,

;INC_STEP

movfw COUNT_STEP_UP_KEY;

sublw PAUSE;

JZ IN_ZERO_STUPKEY

goto END_STU

IN_ZERO_STUPKEY clrf COUNT_STEP_UP_KEY

goto END_STU

INC_STEP movfw COUNT_STEP

sublw MAX_COUNT_STEP

JZ END_STU

incf COUNT_STEP,f

END_STU return

 

STEP_DOWN_KEY incf COUNT_STEP_DOWN_KEY,f;

;

movfw COUNT_STEP_DOWN_KEY; W

sublw DREB;

JZ DEC_STEP;

movfw COUNT_STEP_DOWN_KEY

sublw PAUSE

JZ IN_ZERO_STDOKEY

goto END_STD

IN_ZERO_STDOKEY clrf COUNT_STEP_DOWN_KEY

goto END_STD

DEC_STEP movfw COUNT_STEP

sublw MIN_COUNT_STEP

JZ END_STD

decf COUNT_STEP,f

END_STD return

 

SET_STEP movfw COUNT_STEP

sublw D'8'

JZ BIT_STOP

ovfw COUNT_STEP

sublw D'12'

JZ BIT_STOP

movfw COUNT_STEP

sublw D'7'

JZ BIT_STOP_NO

movfw COUNT_STEP

sublw D'13'

JZ BIT_STOP_NO

sublw D'10'

JZ BIT_STOP_NO

 

BIT_STOP_NO bcf BIT_NER,0

goto END_STEP

 

BIT_STOP bsf BIT_NER,0

 

END_STEP movfw COUNT_STEP

call OUTPUT; OUTPUT

;(

movwf PORTB;PORTB

btfsc BIT_NER,0; 0 PORTB,

bsf PORTB,7;, 7 1

return;

END;





:


: 2015-05-06; !; : 368 |


:

:

, .
==> ...

1650 - | 1516 -


© 2015-2024 lektsii.org - -

: 0.01 .