include ; PIC16F505 Configuration Bit Settings ; ASM source line config statements #include "p16F505.inc" ; CONFIG ; __config 0xFFF4 __CONFIG _OSC_IntRC_RB4EN & _WDT_OFF & _CP_OFF & _MCLRE_ON org 0x0000 movlw 0x07 ;inicializálás option movlw 0x00 tris PORTC movlw 0x2B tris PORTB clrf FSR ; bank0 kiválasztása movlw 0xFC ; betölti a RAM-ba movwf 0x10 ; a karateker bittérképét movlw 0x92 ; bit=0 esetén világít movwf 0x11 ; a led movlw 0x98 movwf 0x12 movlw 0xAC movwf 0x13 movlw 0x89 movwf 0x14 movlw 0x81 movwf 0x15 movlw 0xDC movwf 0x16 movlw 0x80 movwf 0x17 movlw 0x88 movwf 0x18 movlw 0xC0 movwf 0x19 hu0 movlw 0x06 ;itt kezdödik az animáció movwf 0x08 ;futófény a szegmenseken movlw 0xFE ;1 lépés fél másodperc movwf PORTC movlw 0x0A movwf 0x09 goto hu2 hu1 movlw 0x0A ;ide 500ms-onként ugrik movwf 0x09 bsf STATUS,0 rlf PORTC,1 decfsz 0x08,1 goto hu2 goto hu0 hu2 movlw 0x3D ;ide 50ms-onként ugrik movwf TMR0 ;timer kezdöértéke az 50ms ciklusidöhöz decfsz 0x09,1 goto hu3 goto hu1 hu3 btfss PORTB,0 goto hu4 movf TMR0,0 btfsc STATUS,2 goto hu2 goto hu3 hu4 bsf PORTB,2 ; itt kezdödik a tárcsázás movlw 0xff movwf PORTC movlw 0x00 movwf 0x0A hu5 btfsc PORTB,0 ;az impulzus felfutó élére vár goto pri btfss PORTB,1 goto hu5 movlw 0x64 ;------------- movwf TMR0 hu9 movf TMR0,0 ; 40ms késleltetés btfss STATUS,2 goto hu9 ;------------- bcf PORTB,4 ;kigyújtja a tizedesvesszöt incf 0x0A ;növeli a számlálót hu6 btfsc PORTB,1 ;az impulzus lefutó élére vár goto hu6 movlw 0x64 ;------------- movwf TMR0 hu11 movf TMR0,0 ; 40ms késleltetés btfss STATUS,2 goto hu11 ;------------- bsf PORTB,4 ;kioltja a tizedesvesszot goto hu5 ;visszamegy figyelni a felfutó élt pri movlw 0x64 ;------------- movwf TMR0 hu10 movf TMR0,0 ; 40ms késleltetés btfss STATUS,2 goto hu10 ;------------- bsf PORTB,4 ;kioltja a tizedesvesszöt movlw 0x0F addwf 0x0A,0 movwf FSR movf INDF,0 movwf PORTC ;kiirja az eredmény kódját btfss INDF,6 ;ha a bit6=0, akkor kigyújtja a g szegmenst bcf PORTB,2 movlw 0x3C ;60-as szorzó az 50ms-nak movwf 0x09 hu7 movlw 0x3D ;tmr0 kezdö értéke az 50ms-hoz movwf TMR0 hu8 btfss PORTB,0 ;ha újra tárcsázni kezd goto hu4 movf TMR0,0 btfss STATUS,2 ;Zero vizsgálata, ha lejárt az 50ms goto hu8 decfsz 0x09,1 ;ha lejárt a 3mp goto hu7 movlw 0xff movwf PORTC bsf PORTB,2 goto hu0 end