Untitled
unknown
assembly_x86
2 years ago
4.4 kB
5
Indexable
$NOMOD51 $INCLUDE (8051.MCU) ;==================================================================== ; DEFINITIONS ;==================================================================== ;==================================================================== ; VARIABLES ;==================================================================== BRAKE BIT P1.0 EMERG BIT P1.1 PARK BIT P1.2 L_TURN BIT P1.3 R_TURN BIT P1.4 L_FRNT BIT P0.0 R_FRNT BIT P0.1 L_DASH BIT P0.2 R_DASH BIT P0.3 L_REAR BIT P0.4 R_REAR BIT P0.5 L_FRNT_CHECK BIT P2.0 R_FRNT_CHECK BIT P2.1 L_DASH_CHECK BIT P2.2 R_DASH_CHECK BIT P2.3 L_REAR_CHECK BIT P2.4 R_REAR_CHECK BIT P2.5 ; INDICATOR SEGMENTS INDIC_A BIT P3.0 INDIC_B BIT P3.1 INDIC_C BIT P3.2 INDIC_D BIT P3.3 INDIC_E BIT P3.4 INDIC_F BIT P3.5 INDIC_G BIT P3.6 ; INDICATORS ACTIVITY FLAGS ACTIVE_L_F BIT P2.6 ACTIVE_R_F BIT P2.7 ACTIVE_L_R BIT P1.6 ACTIVE_R_R BIT P1.7 DIM BIT PSW.1 SUB_DIV DATA 20H ;Делитель частоты прерываний HI_FREQ BIT SUB_DIV.0 ;Бит генератора высокой частоты - передние и задние фары LO_FREQ BIT SUB_DIV.7 ;Бит генератора низкой частоты - поворотники ;==================================================================== ; RESET and INTERRUPT VECTORS ;==================================================================== ; Reset Vector org 0000h jmp Start ;==================================================================== ; CODE SEGMENT ;==================================================================== org 000Bh ACALL TIMER0_TICK RETI org 0100h Start: MOV TMOD, #00000001B ;Таймер0 в режим 1 MOV TL0, #0 ;Инициализация младшего байта таймер MOV TH0, #-26 ;Инициализация старшего байта таймер MOV SUB_DIV, #244 ;Деление частоты прерываний на 24 SETB ET0 ;Разрешение прерываний от Таймера0 SETB EA ;Общее разрешение прерываний SETB TR0 ;Старт Таймера ; SET ERROR LETTER CLR INDIC_A SETB INDIC_B SETB INDIC_C CLR INDIC_D CLR INDIC_E CLR INDIC_F CLR INDIC_G Loop: jmp Loop; TIMER0_TICK: MOV TH0, #-16 PUSH PSW PUSH ACC PUSH B DJNZ SUB_DIV, CHECK_L_F MOV SUB_DIV, #244 CHECK_L_F: ; XOR MOV C, L_FRNT_CHECK ORL C, L_FRNT CPL C MOV F0, C MOV C, L_FRNT_CHECK CPL C ANL C, L_FRNT ORL C, F0 MOV ACTIVE_L_F, C CHECK_R_F: ; XOR MOV C, R_FRNT_CHECK ORL C, R_FRNT CPL C MOV F0, C MOV C, R_FRNT_CHECK CPL C ANL C, R_FRNT ORL C, F0 MOV ACTIVE_R_F, C CHECK_L_R: ; XOR MOV C, L_REAR_CHECK ORL C, L_REAR CPL C MOV F0, C MOV C, L_REAR_CHECK CPL C ANL C, L_REAR ORL C, F0 MOV ACTIVE_L_R, C CHECK_R_R: ; XOR MOV C, R_REAR_CHECK ORL C, R_REAR CPL C MOV F0, C MOV C, R_REAR_CHECK CPL C ANL C, R_REAR ORL C, F0 MOV ACTIVE_R_R, C T0_SERV: MOV C, SUB_DIV.0 ORL C, SUB_DIV.1 ANL C, PARK MOV DIM, C MOV C, L_TURN ORL C, EMERG ANL C, LO_FREQ MOV L_DASH, C MOV F0, C ORL C, DIM MOV L_FRNT, C MOV C, BRAKE ANL C, /L_TURN ORL C, F0 ORL C, DIM MOV L_REAR, C MOV C, R_TURN ORL C, EMERG ANL C, LO_FREQ MOV R_DASH, C MOV F0, C ORL C, DIM MOV R_FRNT, C MOV C, BRAKE ANL C, /R_TURN ORL C, F0 ORL C, DIM MOV R_REAR, C POP B POP ACC POP PSW RETI ;==================================================================== END
Editor is loading...