;LZ4GV 2009-10 Firmware EQU .8 list p=16f690 ; list directive to define processor #include ; processor specific variable definitions ;Set Configuration Register __CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _CPD_OFF & _BOR_SBODEN & _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _FCMEN_OFF & _IESO_OFF ; _INTRC_OSC_CLKOUT _CP_ON _CPD_ON _BOR_ON _PWRTE_OFF _WDT_ON _MCLRE_ON _FCMEN_ON _IESO_ON ; _EXTRC_OSC_NOCLKOUT _BOR_OFF ; _EXTRC_OSC_CLKOUT _BOR_NSLEEP ; _EC_OSC ; _LP_OSC ; _XT_OSC ; _HS_OSC ; _EC_OSC OSCTUNE_MNL EQU .0 ;Central frequency min .16 - .31 0 .1 - .15 max #define RA0 PORTA,0 ;Pin_19 #define RA1 PORTA,1 ;Pin_18 #define RA2 PORTA,2 ;Pin_17 #define RA3 PORTA,3 ;Pin_4 #define RA4 PORTA,4 ;Pin_3 #define RA5 PORTA,5 ;Pin_2 #define RB4 PORTB,4 ;Pin_13 #define RB5 PORTB,5 ;Pin_12 #define RB6 PORTB,6 ;Pin_11 #define RB7 PORTB,7 ;Pin_10 #define RB7_IO TRISB,7 ; #define RC0 PORTC,0 ;Pin_16 #define RC1 PORTC,1 ;Pin_15 #define RC2 PORTC,2 ;Pin_14 #define RC3 PORTC,3 ;Pin_7 #define RC4 PORTC,4 ;Pin_6 #define RC5 PORTC,5 ;Pin_5 #define RC6 PORTC,6 ;Pin_8 #define RC7 PORTC,7 ;Pin_9 #define RC7_IO TRISC,7 ; ;0x20 to 0x6F Bank 0 #define STATBIT 0x20,0 ; ;TMR0MEM EQU 0x6A ; ;TMR1LMEM EQU 0x6B ; ;TMR1HMEM EQU 0x6C ; ;FSRMEM EQU 0x6D ; ;PCLMEM EQU 0x6E ; ACQT EQU 0x6F ; ;0x70 to 0x7F Bank 0,1,2,3 INTCONMEM EQU 0x7A ;Bank 0,1,2,3 REEADR EQU 0x7B ;Bank 0,1 REEDATA EQU 0x7C ;Bank 0,1 W_TEMP EQU 0x7D ;Bank 0,1 STATUS_TEMP EQU 0x7E ;Bank 0,1 PCLATH_TEMP EQU 0x7F ;Bank 0,1 ;0xA0 to 0xEF Bank 1 OPTIONMEM EQU 0xA0 ; ;0x120 to 0x16F Bank 2 #define WPAGE PCLATH,3 ;0- Work. Page0 1- Work. Page1 #define FSRBANK STATUS,IRP ;0- Bank1,2 1- Bank2,3 Има значение само за FSR. ORG 0x2100 ;Initialize EEPROM locations DE 0x00,0x01,0x02,0x03 ORG 0x0000 GOTO START ;**************************************************************** ORG 0x0004 ;Interrupt vector location movwf W_TEMP ;Запомня последното състояние на текущите регистри (W register). movf STATUS,W ;Move STATUS register into W register movwf STATUS_TEMP ;Save off contents of STATUS register movf PCLATH,W ;Move PCLATH register into W register movwf PCLATH_TEMP ;Save off contents of PCLATH register bcf STATUS,RP1 ;Bank0 bcf STATUS,RP0 ; bcf WPAGE ;0- Work. Page0 ;;; ;;; bcf INTCON,RABIF ;PORTA/PORTB Change Interrupt Flag bcf INTCON,INTF ;INT Change Interrupt Flag bcf PIR1,TMR1IF ;TMR1 Overflow Interrupt Flag GOTO END_INTERRUPT ;--> END_INTERRUPT ;Възтановява състоянието на текущите регистри. movf PCLATH_TEMP,W ;Retrieve copy of PCLATH register movwf PCLATH ;Restore pre-isr PCLATH register contents movf STATUS_TEMP,W ;Retrieve copy of STATUS register movwf STATUS ;Restore pre-isr STATUS register contents swapf W_TEMP,F ;Restore pre-isr W register contents swapf W_TEMP,W ;-//- RETFIE ;Return From Interrupt / Enable Global Interrupts ;**************************************************************** BEGIN MOVLW 0x20 ;Start Address RAM. MOVWF FSR ; BEGIN1 ; CLRF INDF ; MOVLW 0x7F ;End Address RAM. SUBWF FSR,W ; INCF FSR,F ; BTFSS STATUS,C ;FSR = or > W C=1 GOTO BEGIN1 ;FSR < W C=0 ;********** Начало *********** MAIN MOVLW .4 ; MOVWF TMR0 ; BCF INTCON,T0IF ;Overflow TMR0 MOVLW 0xDB ; MOVWF TMR1L ; MOVLW 0x0B ; MOVWF TMR1H ; BCF PIR1,TMR1IF ;Overflow TMR1 MOVLW 0x00 ;Pulse Width Modulation MOVWF CCPR1L ;Bit 9 - 2 BCF CCP1CON,DC1B1 ;Bit 1 BCF CCP1CON,DC1B0 ;Bit 0 ; MOVLW .100 ; ; SUBWF ADRESH,W ;ADRESH > W C=1 ; BTFSC STATUS,C ;ADRESH = W C=1 ; GOTO ;ADRESH < W C=0 ; GOTO ; ; movlw .50 ; sublw .20 ;W < .20 C=1 ; BTFSC STATUS,C ;W = .20 C=1 ; GOTO ;W > .20 C=0 ; GOTO ; BSF STATUS,RP0 ;Bank 1(3) MOVF OPTION_REG,W ;Запомня състоянието на OPTION_REG. MOVWF OPTIONMEM ;Променя TMR0 ANDLW B'11111000' ;Нулира само PS2 PS1 PS0 IORLW B'00000001' ;Променя Fosc/4/4 = 4uS MOVWF OPTION_REG ; BCF STATUS,RP0 ; BSF STATUS,RP0 ;Възтановява OPTION_REG. MOVF OPTIONMEM,W ; MOVWF OPTION_REG ; BCF STATUS,RP0 ; ;CALL READE ;In:F(REEADR) Out:F(REEDAT),W ;CALL WRITE ;In:F(REEADR,REEDATA) MOVLW RA0_AN0 ; CALL READ_ADC ;In: W(Analog Select) Out:F(ADRESH,ADRESL*) ;MOVLW '$' ;CALL UAT GOTO MAIN ;********** Край ************* ;********************************************************************** WRITE ;In:F(REEADR,REEDATA) BSF STATUS,RP1 ;Bank2 BCF STATUS,RP0 ; MOVF REEADR,W ; MOVWF EEADR MOVF REEDATA,W MOVWF EEDAT BSF STATUS,RP1 ;Bank3 BSF STATUS,RP0 ; BCF EECON1,EEPGD ;1= Program Memory 0= Accesses data memory EEPROM BCF INTCONMEM,GIE ; BTFSC INTCON,GIE ;Запазва състоянието. BSF INTCONMEM,GIE ; BCF INTCON,GIE ;Disable INTs. BTFSC INTCON,GIE ;See AN576 GOTO $-2 ; BSF EECON1,WREN ;1= Allows write cycles 0= MOVLW 0x55 ; MOVWF EECON2 ; MOVLW 0xAA ; MOVWF EECON2 ; BSF EECON1,WR ; BTFSC EECON1,WR ;1= Write Cycles 0= Write cycles to the EEPROM is complete GOTO $-1 ;-^ ;BTFSC EECON1,WRERR ;1= Write Terminated 0= Write Operation Completed ;NOP BCF EECON1,WREN ;disable write BTFSC INTCONMEM,GIE ; BSF INTCON,GIE ; BCF STATUS,RP1 ;Bank0 BCF STATUS,RP0 ; RETURN ; READE ;In:F(REEADR) Out:F(REEDAT),W BSF STATUS,RP1 ;Bank2 BCF STATUS,RP0 ; MOVF REEADR,W MOVWF EEADR BSF STATUS,RP1 ;Bank3 BSF STATUS,RP0 ; BCF EECON1,EEPGD ;1= Program Memory 0= Accesses data memory EEPROM BSF EECON1,RD ;1 - initiates an EEPOM read BTFSC EECON1,RD ;rd done? GOTO $-1 ;no then loop BSF STATUS,RP1 ;Bank2 BCF STATUS,RP0 ; MOVF EEDAT,W MOVWF REEDATA BCF STATUS,RP1 ;Bank0 BCF STATUS,RP0 ; RETURN ; ; RA0_AN0 EQU B'00000000' ;Analog Select Register <5:2> RA1_AN1 EQU B'00000100' RA2_AN2 EQU B'00001000' RA4_AN3 EQU B'00001100' RB4_AN10 EQU B'00101000' RB5_AN11 EQU B'00101100' RC0_AN4 EQU B'00010000' RC1_AN5 EQU B'00010100' RC2_AN6 EQU B'00011000' RC3_AN7 EQU B'00011100' RC6_AN8 EQU B'00100000' RC7_AN9 EQU B'00100100' READ_ADC ;Analog-to-Digital Converter In: W(Analog Select) Out: F(ADRESH,ADRESL) MOVWF ADCON0 ;Analog Select Register <5:2> BCF ADCON0,ADFM ;1= X X / x x x x x x x x 0= X X X X X X X X / x x BCF ADCON0,VCFG ;1= Vref pin 0= Vdd A/D Voltage Reference BSF ADCON0,ADON ;1= A/D Converter Module Enable 0= Disable ;MOVLW .20 ;Fosc=8MHz MOVLW .10 ;Fosc=4MHz 20uS MOVWF ACQT ;Min Acquisition Time 5uS DECFSZ ACQT,F ;- GOTO $-1 ;-^ BSF ADCON0,GO ;Start Convertion BTFSC ADCON0,GO ; GOTO $-1 ;-^ BCF ADCON0,ADON ;0 = A/D converter is shut_off RETURN ; ; SET_ADC BCF STATUS,RP1 ;Bank1 BSF STATUS,RP0 ; ;1MHz 4MHz 8MHz Select A/D Conversion Clock. ;Fosc/4 Fosc/16 Fosc/32 IntOSC BSF ADCON1,ADCS2 ;0 1 0 x BCF ADCON1,ADCS1 ;0 0 1 1 BSF ADCON1,ADCS0 ;1 1 0 1 BCF STATUS,RP0 ;Bank0 RETURN ; SET_UART BCF STATUS,RP1 ;Bank1 BSF STATUS,RP0 ; ;MOVLW .103 ;19200 bps UART 8MHz MOVLW .51 ;19200 bps 4Mhz MOVWF SPBRG ; CLRF SPBRGH ; BCF TRISB,7 ;TX (RB7) Serial Output BSF TRISB,5 ;RX (RB5) Serial Input ;Bank1 ;Trasnit Status & Control Register ;BCF TXSTA,CSRC ;Don't care BCF TXSTA,TX9 ;1= 9-bit TX 0= 8-bit TX BSF TXSTA,TXEN ;1= Enable TX 0= Disable TX BCF TXSTA,SYNC ;1= Synchronous Mode 0= Asynchronous Mode ;BCF TXSTA,SENDB ;1= 0= BSF TXSTA,BRGH ;1= High Speed 0= Low Speed ;BTFSC TXSTA,TRMT ;1= Empty Transmit Shift Reg. 0= Full ;NOP ; ;BCF TXSTA,TX9D ;9bit Parity Bit ;BTFSC BAUDCTL,ABDOVF ; ;NOP ;BTFSC BAUDCTL,RCIDL ; ;NOP BCF BAUDCTL,SCKP ;1= Transmit Inverted Data 0= Non-Inverted BSF BAUDCTL,BRG16 ;1= 16-Bit Baud Rate Generator 0= 8-Bit BRG BCF BAUDCTL,WUE ;Wake-up Enabled bit BCF BAUDCTL,ABDEN ;1= Auto_Baud Detect Enabled 0= Desabled BCF STATUS,RP1 ;Bank0 BCF STATUS,RP0 ;Receive Status & Control Register BSF RCSTA,SPEN ;1= Serial Port Enabbled 0= BCF RCSTA,RX9 ;1= 9-bit RX 0= 8-bit RX ;BCF RCSTA,SREN ;Don't care BCF RCSTA,CREN ;1= Enables Continuous Receive 0= Disables BCF RCSTA,ADDEN ;1= Enable Address Detection 0= Disabled ;BTFSC RCSTA,FERR ;1= Framing Error 0= No Framing Error ;NOP ;BTFSC RCSTA,OERR ;1= Overrun Error 0= No Overrun Error ;NOP ;BTFSC RCSTA,RX9D ;9th bit of Receive Data ;NOP RETURN ; UAT ;Universal Asynchronous Transmiter In: W BTFSS PIR1,TXIF GOTO $-1 MOVWF TXREG BTFSS PIR1,TXIF ;1= Transmit Buffer is Empty GOTO $-1 ;XORWF CHSUM,F ;Пресмята контролната сума на изпратените данни. RETURN ; SET_COMPM BSF STATUS,RP1 ;Bank2 BCF STATUS,RP0 ; CLRF CM1CON0 CLRF CM2CON0 BSF CM2CON1,T1GSS ; BCF CM2CON1,C2SYNC ; CLRF VRCON ;Voltage Reference BSF STATUS,RP1 ;Bank3 BSF STATUS,RP0 ; CLRF SRCON ; BCF STATUS,RP1 ;Bank0 BCF STATUS,RP0 ; RETURN ; SET_PWM ;Pulse Width Modulation BSF STATUS,RP0 ;Bank1 MOVLW 0xFF ; MOVWF PR2 ;Period register. BCF STATUS,RP0 ;Bank0 MOVLW B'00001100' ;<3:2>=11 => PWM mode IORLW B'00000000' ;<1:0>=00 => PWM mode; P1A, P1C active-high; P1B, P1D active-high ;IORLW B'00000001' ;<1:0>=01 => PWM mode; P1A, P1C active-high; P1B, P1D active-low ;IORLW B'00000010' ;<1:0>=10 => PWM mode; P1A, P1C active-low; P1B, P1D active-high ;IORLW B'00000011' ;<1:0>=11 => PWM mode; P1A, P1C active-low; P1B, P1D active-low IORLW B'00000000' ;<7:6>=00 => Single output; P1A modulated; P1B, P1C, P1D assigned as port pins ;IORLW B'10000000' ;<7:6>=10 => Half-Bridge output; P1A, P1B modulated with dead-band control; P1C, P1D assigned as port pins MOVWF CCP1CON ; CLRF CCPR1L ;Bit 9 - 2 ;BCF CCP1CON,DC1B1 ;Bit 1 ;BCF CCP1CON,DC1B0 ;Bit 0 ;CLRF TMR2 ; BCF PIR1,TMR2IF ;1:1 1:2 ..... 1:16 BCF T2CON,TOUTPS3 ;0 0 BCF T2CON,TOUTPS2 ;0 0 BCF T2CON,TOUTPS1 ;0 0 BCF T2CON,TOUTPS0 ;0 1 BCF T2CON,T2CKPS1 ;Timer prescaler 0= /1 0= /4 1= /16 BCF T2CON,T2CKPS0 ;Timer prescaler 0 1 X BSF T2CON,TMR2ON ;0= 1=Timer2 is On BSF STATUS,RP1 ;Bank3 BSF STATUS,RP0 ; CLRF PSTRCON BSF PSTRCON,STRA ; BCF STATUS,RP1 ;Bank0 BCF STATUS,RP0 ; MOVLW .0 ;<6:0> Death Time X * Tosc * 4 MOVWF PWM1CON ; ;1 = The ECCPASE bit clears automatically once the shutdown event goes away. BCF PWM1CON,PRSEN ;0 = ECCPASE must be cleared in software to restart the PWM. BCF ECCPAS,ECCPASE ;0=ECCP outputs are operating 1=ECCP outputs are in shutdown state ;Disabl C1_high C2_high C1&C2 INT_low ...... BCF ECCPAS,ECCPAS2 ;0 0 0 0 1 BCF ECCPAS,ECCPAS1 ;0 0 1 1 0 BCF ECCPAS,ECCPAS0 ;0 1 0 1 0 ;P1A & P1C to '0' P1A & P1C to '1' P1A & P1C to tri-state BCF ECCPAS,PSSAC1 ;0 0 1 BCF ECCPAS,PSSAC0 ;0 1 X ;P1B & P1C to '0' P1D & P1C to '1' P1A & P1C to tri-state BCF ECCPAS,PSSBD1 ;0 0 1 BCF ECCPAS,PSSBD0 ;0 1 X BTFSS PIR1,TMR2IF ;New PWM cycle? GOTO $-1 ; BSF STATUS,RP0 ;Bank1 BCF TRISC,5 ;P1A = RC5 Output! ;BCF TRISC,4 ;P1B = RC4 Output! BCF STATUS,RP0 ;Bank0 RETURN ; SET_TMR0 BSF STATUS,RP0 ;Bank1 BCF OPTION_REG,T0CS ;0=Intrnal Clock Source Fosc/4 1=T0CKI pin (RA2) BTFSC OPTION_REG,T0CS ; BCF OPTION_REG,T0SE ;0= Low -> High T0CKI 1= High -> Low T0CKI BCF OPTION_REG,PSA ;0 - Prescaler Is Assigned To The TMR0 Module BTFSC OPTION_REG,PSA ; GOTO SET_TMR0_1 ;--> MOVF OPTION_REG,W ; ANDLW B'11111000' ;Нулира само PS2 PS1 PS0 ;IORLW B'00000000' ;Fosc/4/2 4MHz => 2uS ;IORLW B'00000001' ;Fosc/4/4 ;IORLW B'00000010' ;Fosc/4/8 ;IORLW B'00000011' ;Fosc/4/16 ;IORLW B'00000100' ;Fosc/4/32 ;IORLW B'00000101' ;Fosc/4/64 ;IORLW B'00000110' ;Fosc/4/128 IORLW B'00000111' ;Fosc/4/256 4MHz => 256uS MOVWF OPTION_REG ; SET_TMR0_1 BCF STATUS,RP0 ;Bank0 RETURN ; SET_TMR1 ;Timer1 Module: Max period 8uS * 65536 = 524,288mS (Fosc=4MHz) BCF T1CON,TMR1GE ;0= Always Counting 1= Gate Control BTFSC T1CON,TMR1GE BSF T1CON,T1GINV ;0= Gate Is Active Low 1= Gate Is Active High BSF T1CON,T1CKPS1 ;Timer prescaler 0= /1 0= /2 1= /4 1= /8 BSF T1CON,T1CKPS0 ;Timer prescaler 0 1 0 1 BCF T1CON,T1OSCEN ;0=LP Oscillator Is Off 1=Enable LP Oscillator BCF T1CON,TMR1CS ;0=Internal Clock Fosc/4 1=External Clock T1CKI (RA5) BTFSC T1CON,TMR1CS BSF T1CON,NOT_T1SYNC;0= 1=Do not synchronize external clock input BSF T1CON,TMR1ON ;0=Stop Timer1 1=Enables Timer1 RETURN ; SET_WDT BSF STATUS,RP0 ;Select Bank1. MOVLW B'00010110' ;1:65536 MOVWF WDTCON ; BCF WDTCON,SWDTEN ;0=WDT Is Turned OFF 1=WDT Is Turned ON (If Configuration 2007h bit<3>=0 disabled) BCF STATUS,RP0 ;Select Bank0. RETURN ; SET_INT BSF STATUS,RP0 ;Select Bank1. CLRF PIE1 CLRF PIE2 BCF STATUS,RP0 ;Select Bank0. RETURN SET_INT_PORTCHANGE BSF STATUS,RP0 ;Bank1 MOVLW B'00000000' ;7 6 IOCA5 IOCA4 IOCA3 IOCA2 IOCA1 IOCA0 MOVWF IOCA ;0=Interrupt-on-change Disabled 1=Interrupt-on-change Enabled BSF STATUS,RP1 ;Bank2 BCF STATUS,RP0 ; MOVLW B'00000000' ;IOCB7 IOCB6 IOCB5 IOCB4 3 2 1 0 MOVWF IOCB ;0=Interrupt-on-change Disabled 1=Interrupt-on-change Enabled bsf INTCON,RABIE ;0=PORTA/PORTB Change Interrupt Disable 1=PORTA/PORTB Change Interrupt Enables bcf INTCON,RABIF ;PORTA/PORTB Change Interrupt Flag bsf INTCON,GIE ;0=Disables All Interrupts 1=Enables All Interrupts BCF STATUS,RP1 ;Bank0 BCF STATUS,RP0 ; RETURN SET_INT_EXTINT ;Pin RA2 BSF STATUS,RP0 ;Bank1 BSF OPTION_REG,INTEDG;0=Falling RA2/INT Interrupt 1=Rising RA2/INT Interrupt BCF STATUS,RP0 ;Bank0 bsf INTCON,INTE ;0=RA2/INT Change Interrupt Disable 1=RA2/INT Change Interrupt Enables bcf INTCON,INTF ;RA2/INT Change Interrupt Flag bsf INTCON,GIE ;0=Disables All Interrupts 1=Enables All Interrupts RETURN SET_INT_TMR1 BSF STATUS,RP0 ;Bank1 BSF PIE1,TMR1IE ;0=Disables TMR1 Overflow Interrupt 1=Enables TMR1 Overflow Interrupt BCF STATUS,RP0 ;Bank0 BSF INTCON,PEIE ;0=Disables All Peripheral Interrupts 1=Enables All Peripheral Interrupts BCF PIR1,TMR1IF ;TMR1 Overflow Interrupt Flag BSF INTCON,GIE ;0=Disables All Interrupts 1=Enables All Interrupts RETURN ; SET_OSC ;Oscillator configuration. BSF STATUS,RP0 ;Bank1 LFINTOSC ;8MHz 4MHz 2MHz 1MHz 500KHz 250KHz 125KHz 31,25KHz BSF OSCCON,IRCF2 ;1 1 1 1 0 0 0 0 BSF OSCCON,IRCF1 ;1 1 0 0 1 1 0 0 BCF OSCCON,IRCF0 ;1 0 1 0 1 0 1 0 BCF OSCCON,SCS ;0=Clock Source Defined By h'2007' 1=Internal oscillator is used for system clock BSF OSCCON,OSTS ;0=Two-Speed Start-up or Fail-Safe mode is enabled MOVLW OSCTUNE_MNL ;Central frequency MOVWF OSCTUNE ; BCF STATUS,RP0 ;Bank0 RETURN ; ; SET_IO ;Настройка на портовете In, Out, Analog, Pull-up BCF STATUS,RP1 ;Bank1 BSF STATUS,RP0 ;0=Digital Out 1=Digital In MOVLW B'00111111' ; MOVWF TRISA ;PortA<5:0> MOVLW B'11110000' ; MOVWF TRISB ;PortB<7:4> MOVLW B'11111111' ; MOVWF TRISC ;PortC<7:0> BSF STATUS,RP1 ;Bank2 BCF STATUS,RP0 ;0=Digital I/O 1=Analog Input MOVLW B'00000000' ; AN7 AN6 AN5 AN4 AN3 AN2 AN1Vref AN0 MOVWF ANSEL ; RC3 RC2 RC1 RC0 RA4 RA2 RA1 RA0 MOVLW B'00000000' ; AN11 AN10 AN9 AN8 MOVWF ANSELH ; RB5 RB4 RC7 RC6 MOVLW B'00000000' ;PortB Pull-up MOVWF WPUB ;0=Pull-up Disabled 1=Pull-up Enable BCF STATUS,RP1 ;Bank1 BSF STATUS,RP0 ; MOVLW B'00000000' ;PortA Pull-up MOVWF WPUA ;0=Pull-up Disabled 1=Pull-up Enable BSF OPTION_REG,NOT_RABPU ;0=Pull-up Global Enable 1=Pull-up Global Disabled BCF STATUS,RP1 ;Bank0 BCF STATUS,RP0 RETURN ;********************************************************************** ;*******Първоначална настройка на микроконтролера********************** START ;BCF FSRBANK ;0- Bank1,2 1- Bank2,3 Има значение само за FSR. ;BCF STATUS,RP1 ;Bank0 ;BCF STATUS,RP0 ; ;BCF WPAGE ;0- Work. Page0 1- Work. Page1 CLRF INTCON ;Забранява всички прекъсвания. CLRF PORTA CLRF PORTB CLRF PORTC CALL SET_OSC ;Oscillator configuration !!! CALL SET_TMR0 ;Настройка на Timer0 CALL SET_TMR1 ;Настройка на Timer1 ;CALL SET_WDT ; CALL SET_IO ;Настройка на портовете In, Out, Analog, Pull-up !!! ;CALL SET_INT ;Настройка на прекъсванията.*** ;CALL SET_INT_PORTCHANGE ;CALL SET_INT_EXTINT ;CALL SET_COMPM ;Настройка на компаратoрите.*** CALL SET_ADC ; ;CALL SET_PWM ;Enable PWM - RC5 ;CALL SET_UART ;Set RX/TX Baud Rates Asynchronous Modes GOTO BEGIN ;--^ ;********************************************************************** END