list p=16F628A #include __CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT cblock 0x20 W_TEMP STATUS_TEMP TEMP_0 ;промежут.данные для HEF4028b ENDC INIT_OPTION EQU b'00000000' ;Предделитель включен перед таймером, Кдел=256 INIT_INTCON EQU b'10100000' ;Разрешено прерывание при переполнении таймера ; --- ПУСК --- ORG 0 Reset goto BEGIN ORG 4 DELAY_1SEC movwf W_TEMP movf STATUS,W movwf STATUS_TEMP movlw INIT_INTCON movwf INTCON BSF STATUS,RP0 movlw INIT_OPTION movwf OPTION_REG BCF STATUS,RP0 MOVLW B'11111100' MOVWF TMR0 TMR0_OVER_WAIT BTFSS INTCON,T0IF GOTO TMR0_OVER_WAIT movf STATUS_TEMP,W movwf STATUS swapf W_TEMP,F swapf W_TEMP,W BCF INTCON,T0IF BCF INTCON,GIE retFIE BEGIN BCF STATUS,RP1 BCF STATUS,RP0 movlw 07h ;отключить movwf CMCON ;компараторы CLRW bsf STATUS,RP0 movwf TRISA movwf TRISB ENTRANCE bcf STATUS,RP0 MOVLW B'00001111' ;OFF ALL Q IN HEF4028 MOVWF PORTA MOVLW B'00010001' ;ON 1&4 LEDS MOVWF PORTB MOVLW B'00000000' ;ON Q0 MOVWF PORTA NOP NOP MOVLW B'00001111' ;OFF Q0 movwf PORTA MOVLW B'00000000' MOVWF PORTB ;СБРОС ДИОДОВ CALL DELAY_1SEC ;ЗАДЕРЖКА MOVLW B'00000000' MOVWF PORTA ;ПОГАСИТь ДИОДы CALL DELAY_1SEC GOTO ENTRANCE END