Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <REG51F380.H>
- DSEG AT 30H
- STATE: DS 1
- NEXT_STATE: DS 1
- OP_1: DS 1
- OP_2: DS 1
- RESULT: DS 1
- S0 EQU 0
- S1 EQU 1
- S2 EQU 2
- S3 EQU 3
- S4 EQU 4
- S5 EQU 5
- S6 EQU 6
- S7 EQU 7
- K_LOAD EQU P0.7
- K_SET EQU P0.6
- CSEG AT 0H
- LJMP CONFIG
- CSEG AT 50H
- CONFIG:
- MOV PCA0MD, #0
- MOV P3MDOUT, #0FFH
- MOV P0MDIN,#0FFH
- MOV P2MDIN,#0FFH
- MOV P0MDOUT,#0H
- SETB P0.6
- SETB P0.7
- ORL XBR1, #40H
- MAIN:
- MOV STATE,#S0
- MOV NEXT_STATE,#S0
- READY:
- MOV P2,#175
- MOV OP_1, P1
- JNB K_LOAD,READY2
- JNB K_SET, MAINLOOP
- READY2:
- MOV OP_1, P3
- MAINLOOP:
- CALL FSM
- SELECT:
- JB K_LOAD,SELECT
- SELECT1:
- JNB K_LOAD,SELECT1
- MOV STATE, NEXT_STATE
- JMP MAINLOOP
- FSM:
- MOV A, STATE
- RL A
- MOV DPTR,#SWITCHTABLE
- JMP @A+DPTR
- SWITCHTABLE:
- AJMP STATE0
- AJMP STATE1
- AJMP STATE2
- AJMP STATE3
- AJMP STATE4
- AJMP STATE5
- AJMP STATE6
- AJMP STATE7
- FIM_FSM:
- RET
- STATE0:
- MOV P2, #136
- MOV A, OP_1
- ANL A, OP_2
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S1
- JMP FIM_FSM
- STATE1:
- MOV P2, #192
- MOV A, OP_1
- ORL A, OP_2
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S2
- JMP FIM_FSM
- STATE2:
- MOV P2, #171
- MOV A, OP_1
- CPL A
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S3
- JMP FIM_FSM
- STATE3:
- MOV P2, #137
- MOV A, OP_1
- XRL A, OP_2
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S4
- JMP FIM_FSM
- STATE4:
- MOV P2, #140
- MOV A, OP_1
- ADD A, OP_2
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S5
- JMP FIM_FSM
- STATE5:
- MOV P2, #200
- MOV A, OP_1
- SUBB A, OP_2
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S6
- JMP FIM_FSM
- STATE6:
- MOV P2, #199
- MOV A, OP_1
- RL A
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S7
- JMP FIM_FSM
- STATE7:
- MOV P2, #12
- MOV A, OP_1
- RR A
- MOV RESULT, A
- MOV P3, A
- MOV NEXT_STATE, #S0
- JMP FIM_FSM
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement