// ------------- READS51 generated header ------------------------------------------------------- // IQR-Test für Timer0 // ---------------------------------------------------------------------------------------------- #include // Register ATMEL AT89S8252 main() // C-Hauptprogramm { #asm ; Assembler-Start Start: ljmp InitT0 ; IQR-Vectoren überspringen ;**** Interrupt-Vektor Timer0 **** org 000Bh ; Timer0-Vectoradresse Timer0_Vec: ljmp Timer0_ISR ; springe zu Timer0-ISR ;**** Hauptprogramm **** org 0100h InitT0: mov TCON,#00010000b ; Timer0 starten mov TMOD,#00000001b ; Timer0-Mode1(16Bit) mov TH0,#00h ; Zählregister(HighByte) mov TL0,#00h ; Zählregister(LowByte) InitIQR: setb ET0 ; Timer0-IQR freischalten clr TF0 ; Timer0-IQR-Request löschen setb EA ; Alle IQR's freischalten Loop: ljmp Loop ; Endlosschleife für IQR-Test ;**** Interrupt Service Routines **** Timer0_ISR: inc P1 ; inkrementiere Port1 mov TH0,#00h ; neu laden: Zälregister(HighByte) mov TL0,#00h ; neu laden: Zählregister(LowByte) clr TF0 ; IQR-Request löschen reti ; Rücksprung aus ISR #endasm ; Assembler-Ende } // ----------------------------------------------------------------------------------------------