EINGEBETTETE SYSTEME M Milushev 1 Beispiel mit der

EINGEBETTETE SYSTEME M. Milushev 1

Beispiel mit der PIC Mikrocontrollern M. Milushev 2

Die REGISTER INTCON Register T 0 IF: Der Interrupt wurde durch einen Timer Überlauf hervorgerufen (Timer 0 Interrupt Flag). Bei einem Interrupt wird außer der Auslösung des Sprungs zu 04 H das Bit 2 im Intcon-Register gesetzt. Es muß per Software gelöscht werden. M. Milushev 3

Der Timer 0 (TMR 0) 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 RA 4). Das TMR 0 -Register (Bank 0, 01 h), 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 TMR 0 einsetzbar. Die Zuweisung erfolgt durch Bit 3 im Option-Register (0=TMR 0; 1=WDT). Der Wert des Prescalers wird durch die Bits 2 -0 im Option-Register bestimmt. M. Milushev 4

Die ASM-BEFEHLE M. Milushev 5

PIC 16 F 84 list p=16 F 84 A 2. #include <p 16 F 84 A. 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’ 0 C’ 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’ ; 11010111 b in W 18. movwf OPTION_REG ; W in OPTION_REG 19. bcf STATUS, RPO ; Bank 0 20. clrf PORTB ; PORTB löschen 21. bsf STATUS, RPO ; Bank 1 22. movlw B’ 11111110’ ; 11111110 in W 23. movwf TRISB ; RB 7 -RB 1 -Eing. , RB 0 -Ausg 24. bcf STATUS, RPO ; Bank 0 25. goto main M. Milushev 6

PIC 16 F 84 26. ******************************************** 27. Unterprogramm “Wait”- 460 ms 28. ******************************************** 30. wait movlw D’ 7’ ; 7 in W 31. movwf Counter ; lade W in Counter 32. clrf TMRO ; lösche TMR 0 33. again bcf INTCON, TOIF ; TMR 0 overflow interrupt flag bit löschen 34. loop btfss INTCON, TOIF ; springe wenn T 0 IF 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 M. Milushev 7

REGISTER FILE MAP system und universelle 8 -bit-Register unimplemented data memory location; read as ‘ 0’ M. Milushev 8

Beschreibung des PIC 16 C 84 M. Milushev 9

Blockschaltbild des PIC 16 F 84 M. Milushev 10

END M. Milushev 11

M. Milushev 12

Unterschiedliche Drehmomentverläufe bei verschiedenen Ansteuervariaenten M. Milushev 13
- Slides: 13