;29.07.2025 stundenzaehler01 mit pic18f14k22 ;PIC18F14K22/Assembler:MPASM V5.20/IDE: MPLABX v3.55/PICkit3 Demo Board ; ; port a: a5 external clock eingang, rest ausgang ; a0 Prog PGD // a1 Prog PGC // a2 nc // ; a3 Prog VPP // a4 nc // a5 clock eingang ; port b: b7 für test-led ; port c: c0 für blink-led ;------------------------ #include ;config settings CONFIG IESO = OFF, PLLEN = OFF, FOSC = IRC, FCMEN = OFF, PCLKEN = OFF CONFIG BOREN = SBORDIS, BORV = 19, PWRTEN = OFF, WDTEN = OFF CONFIG MCLRE = OFF, HFOFST = OFF, DEBUG = OFF, STVREN = ON errorlevel -302 ;surpress the 'not in bank0' warning GPR_VAR UDATA rupi RES 1 ;unbenutzt (vormals ports einlesen) ;-------------------------------- Org 0x0000 bra START Org 0x0008 ;vector für high priority irq bra ruptus START: ;Setup main init ; movlw b'00000010' ;set cpu clock speed of 31KHz !!!!!! movwf OSCCON ; clrf OSCTUNE ; clrf LATA movlw b'00100000' ;port a5 clock eingang, rest ausgang movwf TRISA ; clrf WPUA ;keine pull ups widerstände an port a clrf ANSEL ;alle input pins auf digital clrf LATB clrf TRISB clrf LATC clrf TRISC bsf RCON, IPEN ;high priority irq movlw b'11000000' ;INTCON und GIE an movwf INTCON bsf PIE1,TMR1IE ;enable timer1 overflow interrupt bsf IPR1,TMR1IP ;timer1 overflow high priority auswählen ;------------------------------ vorMain: movlw b'10000111' ;timer1 controll reg:16bit/timer1-oszi aus/keine movwf T1CON ;syncro//external clock/ ;counter starten (hier auch stoppen) Main: movlw h'ff' ;befüllung mit 2hoch16 minus 50 für 1 sek movwf TMR1H ; movlw h'cd' movwf TMR1L ;---------------- blink: ; nop nop nop bsf LATB,7 ;test-led an nop nop bra blink ;----------------- ruptus: ;timer1 überlauf löst irq aus bcf PIR1,TMR1IF ;interrupt flag löschen btg LATC,0 ;test-led an retfie end