130 likes | 199 Views
EINGEBETTETE SYSTEME. Beispiel mit der PIC Mikrocontrollern. Die REGISTER. INTCON Register. T0IF: Der Interrupt wurde durch einen Timer Überlauf hervorgerufen ( T imer 0 I nterrupt F lag). Bei einem Interrupt wird außer der Auslösung des Sprungs zu 04H das Bit 2 im Intcon-Register
E N D
Beispiel mit der PIC Mikrocontrollern
Die REGISTER INTCON Register T0IF: Der Interrupt wurde durch einen Timer Überlauf hervorgerufen (Timer 0 Interrupt Flag). Bei einem Interrupt wird außer der Auslösung des Sprungs zu 04H das Bit 2 im Intcon-Register gesetzt. Es muß per Software gelöscht werden.
Der Timer Der Timer0 (TMR0) ist wahlweise ein, vom Prozessortakt abhängiger, 8-Bit Timer oder Zähler. Dies kann im Option-Register durch Bit 5 festgelegt werden (0=intern=Timer; 1=extern=Zähler an RA4). Das TMR0-Register (Bank 0, 01h), in dem gezählt wird, kann ebenso beschrieben wie gelesen werden. Zur Verlängerung der Zeitperiodendauer oder bei sehr großen Zählfrequenzen kann ein Prescaler vorgeschaltet werden (dieser kann beschrieben, jedoch nicht gelesen werden). Dieser ist alternativ beim WDT oder TMR0 einsetzbar. Die Zuweisung erfolgt durch Bit 3 im Option-Register (0=TMR0; 1=WDT). Der Wert des Prescalers wird durch die Bits 2-0 im Option-Register bestimmt.
list p=16F84A • 2. #include <p16F84A.inc> • 3. _CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC • 4. *****************************Kostante und Variable ********************************* • 5. w EQU 0 • 6. f EQU 1 • 7. Counter EQU H’0C’ • 8. ************************************************************************************ • 9. Anwenderprogramm • 10.************************************************************************************ • 11. ORG H’0000’ • 12. goto start • 13.************************************************************************************ • 14. Programmstart • 15.************************************************************************************ • 16. Start bsf STATUS,RPO ;Bank 1 • 17. movlw B’11010111’ ;11010111b in W • 18. movwf OPTION_REG ;W in OPTION_REG • 19. bcf STATUS,RPO ;Bank0 • 20. clrf PORTB ;PORTB löschen • 21. bsf STATUS,RPO ;Bank 1 • 22. movlw B’11111110’ ;11111110 in W • 23. movwf TRISB ;RB7-RB1-Eing.,RB0-Ausg • 24. bcf STATUS,RPO ;Bank 0 • 25.goto main PIC16F84
PIC16F84 26.**************************************************************************************** 27. Unterprogramm “Wait”- 460ms 28.**************************************************************************************** 30.wait movlw D’7’ ;7 in W 31. movwf Counter ;lade W in Counter 32. clrf TMRO ;lösche TMR0 33.again bcf INTCON,TOIF ;TMR0 overflow interrupt flag bit löschen 34.loop btfss INTCON,TOIF ;springe wenn T0IF gesetzt 35. goto loop ;nein, Counter = 0? 36. decfsz Counter,f ;ja, Counter = 0? 37. goto again 38. return 39.**************************************************************************************** 40. Hauptprogramm 41.**************************************************************************************** 42.main bsf PORTB’0 ;Leuchtdiode ein 43. call wait 44. bcf PORTB’0 ;Leuchtdiode aus 45. call wait 46. goto main 47. END
REGISTER FILE MAP system und universelle 8-bit-Register unimplemented data memory location; read as ‘0’
Unterschiedliche Drehmomentverläufe bei verschiedenen Ansteuervariaenten