MPASM KODEKSO Push Button

P

Prinsloo

Guest
Gerbiami nariai
in C pls) for this :

Kaip parašyti kodą (ne
C PLS) šios:<img src="http://images.elektroda.net/34_1186944639_thumb.jpg" border="0" alt="MPASM CODE FOR PUSH BUTTON" title="MPASM KODEKSO Push Button"/> when I switch on the PIC.

Indikatorius turi būti išjungti,
kai aš įjungti TIFF.Jei aš spauskite mygtuką vieną kartą reikia pereiti į LED.

Linkėjimai

 
Čia yra kodas, įjungti ir išjungti indikatorius naudojate pertraukti, aš ją iki:

Kodas;=========================

; Diegimo ir konfigūravimo

;=========================

Procesorius 16f84A

įtraukti <p16f84A.inc>

__config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF;================================================= ====

; Kintamieji PIC RAM

;================================================= ====cblock 0x0d; Pradėti blokas

count2; ISR skaitiklis

old_w; aplinkybės taupymas

old_STATUS; Ten

Delay1; apibrėžti dvi byla registrai

count1endc;================================================= =======

; Starto programą ********** **********

;================================================= =======

org 0; Programos pradžia adresu 0

Goto Pagrindinis;=============================

; Nutraukti Händler

;=============================

Org 0x04

Goto IntServ;=============================

; MAIN PROGRAM

;=============================

Pagrindinis:

BSF STATUSAS, RP0; Pasirinkite Bank1

BCF OPTION_REG, INTEDG; Nustatyti nutraukti dėl kurių kraštas

; Kliringo INTEDG tiek OPTION_REGmovlw b'00000001 "; PORTB truputį 0

movwf TRISB; įvedami visi kiti bitai rezultatasbcf STATUS, RP0; Grįžti į Bank0clrf PORTB; Išvalyti PORTB; BSF PORTB, 0; nustatyti PORTB truputį 0Paveikslu pertraukia

BCF INTCON, INTF; aiškią išorės nutraukti vėliava (INTF = bitas 1)

BSF INTCON, GIE; Įjungti pasaulio pertraukia "(GIE = bitų 7)

BSF INTCON, Inte; Įjungti RB0 nutraukti (inte = bit 4);============================

; Flash paskatino

;============================

Loop:NOP

NOP

NOP
goto Ciklas

; clrf PORTB;================================================= ======

; Interrupt Service Routine

;================================================= ======IntServ:; pirmą bandymą, jei šaltinis yra RB0 pertraukti

btfss INTCON, INTF; INTF vėliava RB0 pertraukti

Goto notRB0 eik jei ne RB0 kilmės; Prisiminti kontekste

movwf old_w; Prisiminti W registrą

swapf STATUS, w; STATUS W

movwf old_STATUS; Prisiminti Statusas

; Įsitikinkite, kad nutraukia įvyko dėl kurių kraštas

; Į signalą.
Jei ne, nutraukti prižiūrėtojas

btfsc PORTB, 0; yra nustatytas bit?

Goto exitISR eik jei aišku;=========================

; Nutraukti veiksmus

;=========================

; clrf PORTB

movlw 10; skaičius pakartojimų

movwf count2 IKI skaitiklis

Palaukite:; keista matyti, kad uostas-B bitų 0 tebėra 0

, Jei ne laukti, kol ji pasikeis

btfsc PORTB, 0; yra nustatytas bit?

Goto exitISR eik, jei truputį ne 0

; Šiuo metu RB0 bit aišku

decfsz count2, F; Count šios iteracijos

goto wait; Tęsti, jei ne nulis

; Interrupt veiksmai sudaro ių bitų 2

; Port-B ruožtu lėmė ir išjungimas

; AKCIJA!!movlw b'10000000 "; Xoring su 1-bit gamina

xorwf PORTB, 1; Komplemento bit 2, Port-B
;=========================

; Išeiti ISR

;=========================

exitISR:; atkūrimo konteksteswapf old_STATUS, W; Išsaugotos STATUS W

swapf old_w, F; swap failas registras pats

swapf old_w, W; naujo apsikeitimo Atgal į WnotRB0:; Reset, pertraukti

BCF INTCON, INTF; Išvalyti INTCON bit 1

retfieDelay:

movlw 4

movwf count1; Parduotuvė vertės skaitiklis

Kartoju:

decfsz count1, F; Atimti / mažinti skaitiklis

goto kartoti; Tęsti, jei ne 0

atgalpabaiga

 

Welcome to EDABoard.com

Sponsor

Back
Top