;----NEW---------------------------------NEW---- ;------------------PIC-16F874------------------ ;----------------------------------------------- LIST P = 16F874, R = DEC #include P16F874.INC ;---------PRIPOJEN POUZE DISPLEJ A KLAVESNICE-------------- __CONFIG _CP_OFF &_WDT_OFF &_BODEN_OFF &_PWRTE_OFF &_HS_OSC &_WRT_ENABLE_OFF &_LVE_OFF ;------------------------------------- RAM EQU H'20' Seg_0 EQU RAM+0 Seg_1 EQU RAM+1 Seg_2 EQU RAM+2 Seg_3 EQU RAM+3 Seg_4 EQU RAM+4 Seg_5 EQU RAM+5 Seg_6 EQU RAM+6 Seg_Led EQU RAM+7 R_D1 EQU RAM+8 Seg_neg EQU RAM+9 Seg_bin EQU RAM+10 Seg_on EQU RAM+11 TM0 EQU RAM+21 TM1 EQU RAM+22 TM2 EQU RAM+23 TMz EQU RAM+24 r_PORTB EQU RAM+27 r_TL0 EQU RAM+28 r_TL1 EQU RAM+29 r_W EQU RAM+30 ;---H'70'----tyhle reg umistni do spol adres casti!!!!!------ r_STUS EQU RAM+31 r_PCLhi EQU RAM+32 r_FSR EQU RAM+33 TM0_L EQU RAM+35 TM0_H EQU RAM+36 r_1 EQU RAM+40 #define b_dt r_1,0 #define b_beep r_1,1 #define Beep PORTE,0 ;------------------------------------- ORG H'0000' GOTO START ORG H'0004' ;------------------------------------- ;------------------------------------- INTER MOVWF r_W ;ULOZ W SWAPF STATUS,W CLRF STATUS ;banka0 MOVWF r_STUS ;ULOZ STATUS MOVFW PCLATH MOVWF r_PCLhi CLRF PCLATH MOVFW FSR MOVWF r_FSR ;------ NOP--------------------------- CLRZ INCF TM0_L,F BTFSC STATUS,Z INCF TM0_H,F BTFSS TM0_H,2 ;ASI 1,22Hz GOTO sa1 BCF b_dt GOTO sb2 sa1 BSF b_dt sb2 NOP BTFSS TM0_L,1 ;ASI 1.93kHz GOTO sc1 BCF b_beep GOTO sd2 sc1 BSF b_beep sd2 NOP BSF INTCON,5 ;povol INT TMR0 BCF INTCON,2 ;nuluj priznak TMR0 ;------ NOP-------------------------- MOVFW r_FSR MOVWF FSR MOVFW r_PCLhi ;ZACATEK OBSLUHY KONCE PRERUS MOVWF PCLATH SWAPF r_STUS,W ;OBNOV STATUS MOVWF STATUS SWAPF r_W,F ;OBNOV W SWAPF r_W,W RETFIE ;------------------------------------- ;------------------------------------- START NOP ;inic.---TMR0--- banksel OPTION_REG MOVLW B'11000000' MOVWF OPTION_REG ;TMR0 z vnitøních hodin, 1 : 2 BSF INTCON,7 ;povoleni VSECH preruseni BSF INTCON,5 ;povoleni preruseni casovace TMR0 ;inic---IN/OUT--- banksel PORTA MOVLW B'11000000' MOVWF PORTA ;nastavení portu A -TR MOVLW B'11111111' MOVWF PORTB ;nastavení portu B -TL MOVLW B'00000000' MOVWF PORTC ;nastavení portu C MOVLW B'00000000' MOVWF PORTD ;nastavení portu D -SEG MOVLW B'00000000' MOVWF PORTE ;nastavení portu E banksel TRISA MOVLW B'00000000' ;1-VSTUP/0-VYSTUP MOVWF TRISA ;nastavení portu A -TRANZISTORY MOVLW B'11111111' MOVWF TRISB ;nastavení portu B -TLAC MOVLW B'00000000' MOVWF TRISC ;nastavení portu C MOVLW B'00000000' MOVWF TRISD ;nastavení portu D -SEGMENTY MOVLW B'00000000' MOVWF TRISE ;nastavení portu E ;inic.---A/D-OFF--- banksel ADCON1 MOVLW B'00000110' MOVWF ADCON1 banksel ADCON0 MOVLW B'00000000' ;ZRUSENI ANALOG VSTUP MOVWF ADCON0 ;---REZISTORY-PORTB--- banksel OPTION_REG BCF OPTION_REG,7 ;REZISTOR Ucc-PORTB banksel 0 CLRF r_TL0 CLRF r_1 CLRF r_PORTB CLRF TM0_L CLRF TM0_H CLRF Seg_bin MOVLW B'00000001' ;POCATEK ROTACE SEGMENTU-TRANZ MOVWF Seg_on CALL t_250mS CALL t_250mS MOVLW D'35' MOVWF Seg_0 MOVLW D'35' MOVWF Seg_1 MOVLW D'35' MOVWF Seg_2 MOVLW D'35' MOVWF Seg_3 MOVLW D'21' MOVWF Seg_4 MOVLW D'28' MOVWF Seg_5 Znova NOP ;--DISPLEJ-LED-- CALL DISPL ;--CTENI TLAC.-- CALL KLAV ;--DES. TECKA-- BTFSS b_dt GOTO dt_L BCF PORTD,7 GOTO dt_end dt_L BSF PORTD,7 dt_end NOP ;--PIPANI-- BTFSS b_dt GOTO pip_off BTFSS b_beep ;PIP ON GOTO bL BSF Beep GOTO pip_end bL BCF Beep GOTO pip_end pip_off BCF Beep pip_end NOP ;--OPAKUJ HLAVNI CIKLUS-- GOTO Znova ;-------------------------------------- ;-------------------------------------- KLAV MOVLW D'35' MOVWF Seg_0 MOVLW D'35' MOVWF Seg_3 MOVFW PORTB MOVWF r_PORTB ;---TL-0--- MOVFW r_PORTB CLRZ ANDLW B'00000001' BTFSS STATUS,Z GOTO TL0_L GOTO TL0_H TL0_L CLRF r_TL0 GOTO TL0_OFF TL0_H BTFSC r_TL0,3 GOTO TL0_ON INCF r_TL0,F GOTO TL0_OFF TL0_ON MOVLW D'1' MOVWF Seg_0 MOVLW D'0' MOVWF Seg_3 GOTO TL1 TL0_OFF NOP ;---TL-1--- TL1 MOVFW r_PORTB CLRZ ANDLW B'00000010' BTFSS STATUS,Z GOTO TL1_L GOTO TL1_H TL1_L CLRF r_TL1 GOTO TL1_OFF TL1_H BTFSC r_TL1,3 GOTO TL1_ON INCF r_TL1,F GOTO TL1_OFF TL1_ON MOVLW D'1' MOVWF Seg_0 MOVLW D'1' MOVWF Seg_3 GOTO TL2 TL1_OFF NOP TL2 RETURN ;-------------------------------------- ; t_1S MOVLW D'4' ;doba asi 1 sec ; MOVWF TM0 ; GOTO $+3 t_250mS MOVLW D'1' ;doba asi 250 milisekund MOVWF TM0 CLRF TM1 CLRF TM2 NOP DECFSZ TM1,F GOTO $-2 DECFSZ TM2,F GOTO $-4 DECFSZ TM0,F GOTO $-6 RETURN ;------------------------------------- DISPL MOVLW H'20' MOVWF Seg_bin P_s1 MOVLW B'11111111' ;ZHASNI DISP-TRANZ MOVWF PORTA MOVFW Seg_bin MOVWF FSR MOVFW INDF CALL SEG MOVWF PORTD MOVFW Seg_on XORLW B'11111111' ;ZHASNI DISP-TRANZ MOVWF PORTA BCF STATUS,C RLF Seg_on,F BTFSC Seg_on,7 GOTO SEG_7on INCF Seg_bin,F GOTO P_s1 SEG_7on MOVLW B'00000001' ;POCATEK ROTACE SEGMENTU-TRANZ MOVWF Seg_on RETURN ;------------------------------------- SEG MOVWF Seg_Led MOVLW D'36' MOVWF R_D1 MOVFW Seg_Led SUBWF R_D1,F BTFSS STATUS,C MOVLW D'40' ADDWF PCL,F RETLW B'11000000' ;=0. RETLW B'11111001' ;=1. RETLW B'10100100' ;=2. RETLW B'10110000' ;=3. RETLW B'10011001' ;=4. 5 RETLW B'10010010' ;=5. RETLW B'10000010' ;=6. RETLW B'11111000' ;=7. RETLW B'10000000' ;=8. RETLW B'10010000' ;=9. RETLW B'10001000' ;=A. 10 RETLW B'10000011' ;=B. RETLW B'10100111' ;=C. RETLW B'10100001' ;=D. RETLW B'10000110' ;=E. RETLW B'10001110' ;=F. 15 RETLW B'10011000' ;=G RETLW B'10001011' ;=H. RETLW B'11001111' ;=I. RETLW B'11100000' ;=J. RETLW B'10001001' ;=K. 20 RETLW B'11000111' ;=L. RETLW B'11001000' ;=M. RETLW B'10101011' ;=N. RETLW B'10100011' ;=O. RETLW B'10001100' ;=P. 25 RETLW B'10101111' ;=R. RETLW B'10010010' ;=S. RETLW B'10000111' ;=T. RETLW B'11100011' ;=U. RETLW B'11000001' ;=V. 30 RETLW B'10100100' ;=Z. RETLW B'11111111' ;=NESVITI RETLW B'11111111' ;=NESVITI RETLW B'11111111' ;=NESVITI RETLW B'10111111' ;=-.35 RETLW B'10111111' ;=-. RETLW B'10111111' ;=-. RETLW B'10111111' ;=-. RETLW B'10111111' ;=-. RETLW B'10111110' ;==. 40 RETLW B'10111110' ;==. RETURN ;------------------------------------- ;------------------------------------- ;------------------------------------- ORG H'0FFA' ;PRI VYSKOCENI ZE SMYCKY PROGRAMU ende MOVLW B'11001100' MOVWF PORTA ;nastavení portu A -TR MOVLW B'10111111' ;=- MOVWF PORTD ;ZOBRAZI ""-- --"" GOTO ende END