list p=16F84 ; list directive to define processor #include ; processor specific variable definitions __CONFIG _XT_OSC & _PWRTE_ON & _CP_OFF & _WDT_OFF ; _LP_OSC _PWRTE_OFF _CP_ON _WDT_ON ; _HS_OSC ; _RC_OSC #define RA0 PORTA,0 #define RA1 PORTA,1 #define RA2 PORTA,2 #define RA3 PORTA,3 #define RA4 PORTA,4 #define RB0 PORTB,0 #define RB1 PORTB,1 #define RB2 PORTB,2 #define RB3 PORTB,3 #define RB4 PORTB,4 #define RB5 PORTB,5 #define RB6 PORTB,6 #define RB7 PORTB,7 COUNT EQU 0x10 ; ORG 0x0000 GOTO START ORG 0x0004 GOTO START BEGIN ;********** Начало *********** MAIN ; MOVLW .100 ; ; SUBWF ADRESH,W ;ADRESH > W C=1 ; BTFSC STATUS,C ;ADRESH = W C=1 ; GOTO ;ADRESH < W C=0 ; GOTO ; GOTO MAIN ;********** Край ************* ; ; ; ;********************************************************************** WRITE bsf STATUS,RP0 ;select pg 1 BCF INTCON,GIE ;/ bsf EECON1,WREN ;enable write operation movlw 0x55 ;do write seq. movwf EECON2 ; / movlw 0xAA ; / movwf EECON2 ; / bsf EECON1,WR ;initiate write WRITE1 btfsc EECON1,WR ;write complete? goto WRITE1 ;no then keep checking BSF INTCON,GIE ;/ bcf EECON1,WREN ;disable write bcf STATUS,RP0 ;pg 0 RETURN ; READE bsf STATUS,RP0 ;pg 1 bsf EECON1,RD ;do a read READE1 btfsc EECON1,RD ;rd done? goto READE1 ;no then loop bcf STATUS,RP0 ;pg 0 movf EEDATA,W RETURN ;********************************************************************** ;*******Първоначална настройка на микроконтролера********************** START BANKSEL PORTA CLRF PORTA CLRF PORTB CLRF INTCON ;Забрана за прекъване. ;MOVLW B'00000111' ;Fosc/4/256 4MHz = 0,256mS ;CALL SET_TMR0 BSF STATUS,RP0 ;Select Bank1. MOVLW B'00000000' ; MOVWF TRISA ;PortA MOVLW B'11111111' ; MOVWF TRISB ;PortB BCF STATUS,RP0 ;Select Bank0. GOTO BEGIN END