MPASM kod za gumb na pritisak

P

prinsloo

Guest
Dear Members
in C pls) for this :

Kako mogu napisati kôd (ne
u C pls) za ovo:<img src="http://images.elektroda.net/34_1186944639_thumb.jpg" border="0" alt="MPASM CODE FOR PUSH BUTTON" title="MPASM kod za gumb na pritisak"/> when I switch on the PIC.

LED mora biti isključen
kada mogu prebaciti na PIC-a.Ako sam pritisnite dugme jednom to mora prebaciti na LED.

Pozdravi

 
ovdje je kod za uključivanje i isključivanje LED koristeći prekinuti, ja je to prije:

Šifra:;=========================

; Setup i konfiguracija

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

procesor 16f84A

uključiti <p16f84A.inc>

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

; Varijabli u PIC-RAM

;================================================= ====cblock 0x0d; Početak bloka

count2; ISR counter

old_w; Kontekst ušteda

old_STATUS; Idem

Delay1; Definirajte dva registra za datoteke

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

; ********** ********** PROGRAM START

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

org 0; program početi na adresi 0

goto glavni;=============================

; Prekid Handler

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

org 0x04

goto IntServ;=============================

; GLAVNI PROGRAM

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

glavni:

BSF STATUS, RP0; Select Bank1

Bcf OPTION_REG, INTEDG; Postavi prekid pada na rubu

; By prijeboj INTEDG malo OPTION_REGmovlw b'00000001 '; PORTB bitni 0

movwf TRISB; je ulaz, svi ostali bitovi su OutputBcf STATUS, RP0; Go back to Bank0clrf PORTB; Clear PORTB; BSF PORTB, 0; postaviti PORTB bitni 0; SETUP prekida

Bcf INTCON, INTF; Vedro prekid vanjske zastave (INTF bita = 1)

BSF INTCON, GIE; Omogući globalno prekida (GIE = malo 7)

BSF INTCON, inte; Omogući RB0 prekinuti (Njem bita = 4);============================

; Flash vodio

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

Loop:NOP

NOP

NOP
Petlja goto

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

; Prekid Service Rutina

;================================================= ======IntServ:; Prvi test i ako je izvor RB0 prekid

btfss INTCON, INTF; INTF Zastava je prekid RB0

goto notRB0 "Idi, ako ne RB0 podrijetla; Spremi kontekstu

movwf old_w; Spremi w registrirati

swapf STATUS, w; STATUS do w

movwf old_STATUS; Spremi STATUS

; Pobrinite se da prekid se dogodio na rubu pada

, Od signala.
Ako ne, abort rukovatelj

btfsc PORTB, 0; Je bit postavljen?

goto exitISR; Idi ako vedro;=========================

; Prekid djelovanja

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

; clrf PORTB

movlw 10; Broj ponavljanja

movwf count2; Za counter

čekati:; Provjerite da li bitni port B-0 je uvijek 0

'Ako ne, pričekajte dok se ne promijeni

btfsc PORTB, 0; Je bit postavljen?

goto exitISR "Idi, ako ne znaš 0

; U ovom trenutku malo RB0 je jasno

decfsz count2, f, tačka ovog iteracija

goto čekati, nastaviti ako se ne nula

; Prekid djelovanje sastoji se od toggling zalogaj 2

; Luka-B za uključivanje i isključivanje LED

; AKCIJA!!movlw b'10000000 '; Xoring sa 1-bitni proizvodi

xorwf PORTB, 1; Komplement bitni 2, port-B
;=========================

; Izlaz ISR

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

exitISR:; Vraćanje kontekstswapf old_STATUS, w; Spremljene status w

swapf old_w, f; Zamijeni datoateka registrirati u sebi

swapf old_w, w; re-swap back to wnotRB0:; Reset, prekid

Bcf INTCON, INTF; Vedro INTCON bita 1

retfiekašnjenje:

movlw 4

movwf count1; Store vrijednost u counter

ponoviti:

decfsz count1, f; smanjenja counter

goto ponavljam, ako se ne nastavi 0

povratakkraj

 

Welcome to EDABoard.com

Sponsor

Back
Top