1 / 25

Mikroprotsessorid

Mikroprotsessorid. PIC KATKESTUSED 2. V DD. V DD. 0. 1. 0. 4. Kui vajutada lülitit 0, siis LED1 kustub Kui vajutada lülitit 4, siis LED1 süttib LED0 peab kogu aeg vilkuma. V DD. V DD. 0. 1. 0. 4. Kui lüliti 0 on kontakt, tekib INT sisendisse 1

helga
Download Presentation

Mikroprotsessorid

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mikroprotsessorid PIC KATKESTUSED 2

  2. VDD VDD 0 1 0 4 Kui vajutada lülitit 0, siis LED1 kustub Kui vajutada lülitit 4, siis LED1 süttib LED0 peab kogu aeg vilkuma

  3. VDD VDD 0 1 0 4 Kui lüliti 0 on kontakt, tekib INT sisendisse 1 Kui lüliti 4 on kontakt, tekib RB4 sisendisse 0 Kui C1 või C2 on 0, siis valgusdiood põleb

  4. .asm –i päis (#include jms.)muutujate defineerimine 0000 GOTO Algseaded0004 GOTO Katkestus AlgseadedGOTO Põhiprogramm Põhiprogramm e.LED0 pidev vilgutamine Katkestuse teenindamise programm e. LED1 vilgutamine

  5. PROCESSOR 16F876A #include "P16F876A.inc“ ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Algseaded Alg CLRF INTCON ; Kõik katkestused keelataCLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Pohi Pohi GOTO Pohi Katk RETFIE

  6. PROCESSOR 16F876A #include "P16F876A.inc“ ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Algseaded Alg CLRF INTCON ; Kõik katkestused keelataCLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Pohi Pohi GOTO Pohi Katk RETFIE

  7. PROCESSOR 16F876A #include "P16F876A.inc“ ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Algseaded Alg CLRF INTCON ; Kõik katkestused keelata CLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Pohi Pohi GOTO Pohi Katk RETFIE

  8. PROCESSOR 16F876A #include "P16F876A.inc“ ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Algseaded Alg CLRF INTCON ; Kõik katkestused keelata CLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Pohi Pohi GOTO Pohi Katk RETFIE

  9. PROCESSOR 16F876A #include "P16F876A.inc“ ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Algseaded Alg CLRF INTCON ; Kõik katkestused keelata CLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Pohi Pohi GOTO Pohi Katk RETFIE

  10. Põhiprogramm PROCESSOR 16F876A #include "P16F876A.inc“ ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 ; C0 = 1 CALL Viivis BCF PORTC,0 ; C0 = 0 CALL Viivis GOTO Loop Katkestuse teenindamise programm e. LED1 vilgutamine

  11. Viivis PROCESSOR 16F876A #include "P16F876A.inc“ ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Viivis zMOVLW Aeg1 MOVWF RAeg1Loop1 MOVLW Aeg2 MOVWF RAeg2 Loop2 DECF Aeg2,1 BTFSC STATUS,2 GOTO Loop2 DECF Aeg1,1 BTFSC STATUS,2 GOTO Loop1 ReturnGOTO Loop RAeg1 = Aeg1 Alg CLRF INTCON CLRF STATUS........... RAeg2 = Aeg2 Aeg2 = Aeg2 - 1 Aeg2 = 0 ? ei jah Loop BSF PORTC,0 ; C0 = 1 CALL Viivis BCF PORTC,0 ; C0 = 0 CALL Viivis GOTO Loop Aeg1 = Aeg2 - 1 Katkestuse teenindamise programm e. LED1 vilgutamine jah Aeg1 = 0 ? ei

  12. Viivis PROCESSOR 16F876A #include "P16F876A.inc“ Aeg1 EQU 0xFF Aeg2 EQU 0xFF Cblock 0x20 RAeg1, RAeg2 Endc ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Viivis zMOVLW Aeg1 MOVWF RAeg1Loop1 MOVLW Aeg2 MOVWF RAeg2 Loop2 DECF Aeg2,1 BTFSC STATUS,2 GOTO Loop2 DECF Aeg1,1 BTFSC STATUS,2 GOTO Loop1 ReturnGOTO Loop Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 ; C0 = 1 CALL Viivis BCF PORTC,0 ; C0 = 0 CALL Viivis GOTO Loop Katkestuse teenindamise programm e. LED1 vilgutamine

  13. PROCESSOR 16F876A #include "P16F876A.inc“........ Katkestuse teenindamine Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1.......... Katk RETFIE

  14. PROCESSOR 16F876A #include "P16F876A.inc“........ Katkestuse teenindamine KatkBTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1..........

  15. PROCESSOR 16F876A #include "P16F876A.inc“........ Katkestuse teenindamine Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1..........

  16. PROCESSOR 16F876A #include "P16F876A.inc“........ Katkestuse teenindamine Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1..........

  17. PROCESSOR 16F876A #include "P16F876A.inc“........ Katkestuse teenindamine Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON CLRF STATUS........... Katkestuse teenindamise programm muudab ära registrid W ja STATUS !!! Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1..........

  18. PROCESSOR 16F876A #include "P16F876A.inc“........ W ja STATUSe päästmine MOVWFSaveWMOVF STATUS,W MOVWF SaveStatus Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1..........

  19. PROCESSOR 16F876A #include "P16F876A.inc“ Aeg1 EQU 0xFF Aeg2 EQU 0xFF Cblock 0x20 RAeg1, RAeg2 SaveW, SaveStatus Endc ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk W ja STATUSe päästmine MOVWFSaveWMOVF STATUS,W MOVWF SaveStatus Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1..........

  20. PROCESSOR 16F876A #include "P16F876A.inc“ Aeg1 EQU 0xFF Aeg2 EQU 0xFF Cblock 0x20 RAeg1, RAeg2 SaveW, SaveStatus Endc ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk W ja STATUSe päästmine MOVWFSaveWMOVF STATUS,W MOVWF SaveStatus Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON CLRF STATUS........... Loop BSF PORTC,0 CALL Viivis.......... Viivis zMOVLW Aeg1 MOVWF RAeg1.......... MOVWFSaveStatus,WMOVWF STATUS MOVWF SaveW

  21. Kokkuvõte. Programmi päis PROCESSOR 16F876A #include "P16F876A.inc“ Aeg1 EQU 0xFF Aeg2 EQU 0xFF Cblock 0x20 RAeg1, RAeg2 SaveW, SaveStatus Endc ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Viivis zMOVLW Aeg1 MOVWF RAeg1Loop1 MOVLW Aeg2 MOVWF RAeg2 Loop2 DECF Aeg2,1 BTFSC STATUS,2 GOTO Loop2 DECF Aeg1,1 BTFSC STATUS,2 GOTO Loop1 ReturnGOTO Loop MOVWFSaveWMOVF STATUS,W MOVWF SaveStatus Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON ; Kõik katkestused keelata CLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Loop Loop BSF PORTC,0 ; C0 = 1 CALL Viivis BCF PORTC,0 ; C0 = 0 CALL Viivis GOTO Loop MOVWFSaveStatus,WMOVWF STATUS MOVWF SaveW

  22. Kokkuvõte. Algseaded PROCESSOR 16F876A #include "P16F876A.inc“ Aeg1 EQU 0xFF Aeg2 EQU 0xFF Cblock 0x20 RAeg1, RAeg2 SaveW, SaveStatus Endc ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Viivis zMOVLW Aeg1 MOVWF RAeg1Loop1 MOVLW Aeg2 MOVWF RAeg2 Loop2 DECF Aeg2,1 BTFSC STATUS,2 GOTO Loop2 DECF Aeg1,1 BTFSC STATUS,2 GOTO Loop1 ReturnGOTO Loop MOVWFSaveWMOVF STATUS,W MOVWF SaveStatus Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON ; Kõik katkestused keelata CLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Loop Loop BSF PORTC,0 ; C0 = 1 CALL Viivis BCF PORTC,0 ; C0 = 0 CALL Viivis GOTO Loop MOVWFSaveStatus,WMOVWF STATUS MOVWF SaveW

  23. Kokkuvõte. Põhiprogramm ja viivis PROCESSOR 16F876A #include "P16F876A.inc“ Aeg1 EQU 0xFF Aeg2 EQU 0xFF Cblock 0x20 RAeg1, RAeg2 SaveW, SaveStatus Endc ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Viivis zMOVLW Aeg1 MOVWF RAeg1Loop1 MOVLW Aeg2 MOVWF RAeg2 Loop2 DECF Aeg2,1 BTFSC STATUS,2 GOTO Loop2 DECF Aeg1,1 BTFSC STATUS,2 GOTO Loop1 ReturnGOTO Loop MOVWFSaveWMOVF STATUS,W MOVWF SaveStatus Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON ; Kõik katkestused keelata CLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Loop Loop BSF PORTC,0 ; C0 = 1 CALL Viivis BCF PORTC,0 ; C0 = 0 CALL Viivis GOTO Loop MOVWFSaveStatus,WMOVWF STATUS MOVWF SaveW

  24. Kokkuvõte. Katkestuse teenindamine MOVWFSaveWMOVF STATUS,W MOVWF SaveStatus PROCESSOR 16F876A #include "P16F876A.inc“ Aeg1 EQU 0xFF Aeg2 EQU 0xFF Cblock 0x20 RAeg1, RAeg2 SaveW, SaveStatus Endc ORG 0x00 GOTO Alg ORG 0x04 GOTO Katk Viivis zMOVLW Aeg1 MOVWF RAeg1Loop1 MOVLW Aeg2 MOVWF RAeg2 Loop2 DECF Aeg2,1 BTFSC STATUS,2 GOTO Loop2 DECF Aeg1,1 BTFSC STATUS,2 GOTO Loop1 ReturnGOTO Loop Katk BTFSC INTCON,RBIF ; Kas RBIF = 0? GOTO KatkB BTFSC INTCON,INTF ; Kas INTF = 0? GOTO KatkI GOTO KatkEnd KatkI BCF INTCON,INTF ; Lipp ära MOVLW 0x02 IORWF PORTC,1 GOTO KatkEnd KatkB BCF INTCON,RBIF ; Lipp ära MOVLW 0x0D ANDWF PORTC,1 KatkEnd RETFIE Alg CLRF INTCON ; Kõik katkestused keelata CLRF STATUS CLRF PORTB CLRF PORTC BSF STATUS,RP0 MOVLW 0x11 MOVWF TRISB ; PortB input MOVLW 0x00 MOVWF TRISC ; PortC output BCF STATUS,RP0 ; Mälupank 0 BSF INTCON,INTE ; Int katkestused lubada BSF INTCON,RBIE ; PortB katkestused lubada BSF INTCON,GIE ; Üld katkestused lubada GOTO Loop Loop BSF PORTC,0 ; C0 = 1 CALL Viivis BCF PORTC,0 ; C0 = 0 CALL Viivis GOTO Loop MOVWFSaveStatus,WMOVWF STATUS MOVWF SaveW

  25. VDD VDD 0 1 0 4 Kuidas see seade tegelikult töötab? RBIF katkestus tekib siis kui PORTB olek muutub. Seega LED1 süttib kui lüliti 4 sulgeda VÕI avada :)

More Related