Buscar

Prog_Exemplo

Prévia do material em texto

Programas exemplo assembly 
 
 
Como executar o programa 
 
 
 
 
;------------------------------- 
; Programa 1 : 
; AUTOR : DANIEL CORTELETTI 
; FEVEREIRO DE 2003 
; C.T. MECATRONICA SENAI 
; ========================== cabecalho padrao para PLCPIC 
 LIST p=16F877 
 #include "P16F877.INC" ;inclui biblioteca do PIC a ser usado 
 
inicio bcf STATUS, RP0 ;desliga bit STATUS,RP0. 
 bcf STATUS, RP1 ;desliga bit STATUS,RP1. escolhe bank0. 
 clrf PORTA ;zera todo o PORTA (A0, A1, A2, ...) 
 bsf STATUS, RP0 ;liga bit STATUS,RP0. escolhe bank1 
 movlw 0x06 ;carrega 06H (00000110) no acumulador 
 movwf ADCON1 ;move do acum.p/ADCON1 (desl.analogicas) 
 movlw 0xff ;carrega FFH (11111111) no acumulador 
 movwf TRISA ;move acum.p/TRISA (PORTA como entrada) 
 movlw 0x00 ;zera todo o acumulador (move zeros) 
 movwf TRISD ;mov acum.p/PORTD, todo PORTD como saída 
 bcf TRISB,3 ;desliga TRISB,3 (define B3 como saída) 
 bcf STATUS, RP0 ;desliga bit STATUS,RP0 (volta bank0) 
 
; =========================== parte principal 
 
comeco btfss PORTA,1 ;testa A1. Se ligado, pula prox linha 
 goto DESLIG ;desvia para rótulo “DESLIG” 
 bsf PORTB,3 ;liga B3 (buzzer) 
 goto comeco ;desvia para rótulo “comeco” 
DESLIG bcf PORTB,3 ;desliga B3 (buzzer) 
 goto comeco ;desvia para rotulo “comeco” 
 
 END ;END 
 
 
 
 
; Programa 2 : 
; AUTOR : DANIEL CORTELETTI 
; FEVEREIRO DE 2003 
; C.T. MECATRONICA SENAI 
 
 LIST p=16F877 
 #include "P16F877.INC" ;inclui biblioteca do PIC a ser usado 
VAR1 equ 0x20 ;define posição de memória 20H 
VAR2 equ 0x21 ;define posição de memória 21H 
VAR3 equ 0x22 ;define posição de memória 22H 
CONT equ 0x23 ;define posição de memória 23H 
 org 0 
 goto inicio ;desvia execução para rótulo INICIO 
 
inicio bcf STATUS, RP0 ;desliga bit STATUS,RP0. 
 bcf STATUS, RP1 ;desliga bit STATUS,RP1. escolhe bank0. 
 clrf PORTA ;zera todo o PORTA (A0, A1, A2, ...) 
 bsf STATUS, RP0 ;liga bit STATUS,RP0. escolhe bank1 
 movlw 0x06 ;carrega 06H (00000110) no acumulador 
 movwf ADCON1 ;move do acum.p/ADCON1 (desl.analogicas) 
 movlw 0xff ;carrega FFH (11111111) no acumulador 
 movwf TRISA ;move acum.p/TRISA (PORTA como entrada) 
 movlw 0x00 ;zera todo o acumulador (move zeros) 
 movwf TRISD ;mov acum.p/PORTD, todo PORTD como saída 
 bcf STATUS, RP0 ;desliga bit STATUS,RP0 (volta bank0) 
 
comeco movlw 0x01 ;rotulo comeco.Carrega acum. c/ 00000001 
 movwf PORTD ;move do acum. para PORTD 
 movlw 0x07 ;move 07H para o acum. 
 movwf CONT ;move do acum. para CONT 
volta1 call tempo ;chama rotina de tempo 
 rlf PORTD,f ;rotaciona PORTD esquerda 
 decfsz CONT,f ;decrem.CONT e pula prox. Linha se zerar 
 goto volta1 ;desvia para rótulo “volta1” 
 movlw 0x07 ;carrega acum. Com 07H 
 movwf CONT ;move do acum. para CONT 
volta2 call tempo ;chama rotina de tempo 
 rrf PORTD,f ;rotaciona PORTD para direita 
 decfsz CONT,f ;decrem.CONT e pula prox. linha se zerar 
 goto volta2 ;desvia para rótulo “volta2” 
 goto começo ;desvia para “começo” 
 
tempo movlw 0x03 ;rotina de tempo. W <- 3 
 movwf VAR1 ;VAR1 <- W 
temp1 movlw 0x3F ;W <- 3Fh (63 em decimal) 
 movwf VAR2 ;VAR2 <- W 
temp2 movlw 0Xff ;W <- FFH (255 em decimal) 
 movwf VAR3 ;VAR3 <- W 
 decfsz VAR3,F ;decrementa VAR3 pula prox.linha se zerar 
 goto $-1 ;volta uma linha 
 decfsz VAR2,F ;decrementa VAR2 pula prox.linha se zerar 
 goto temp2 ;volta para “temp2” 
 decfsz VAR1,F ;decrementa VAR1 pula prox.linha se zerar 
 goto temp1 ;volta para “temp1” 
 return ;retorna da subrotina p/ onde foi chamada 
 
 END ;diretiva de fim do programa 
;------------------------------- 
 
; Programa 3 : 
; AUTOR : DANIEL CORTELETTI 
; FEVEREIRO DE 2003 
; C.T. MECATRONICA SENAI 
 LIST p=16F877 ; pic usado 
 #include "P16F877.INC" ; inclui a biblioteca do MCu utilizado 
VAR1 equ 0x20 ;define posição de memória 20H 
VAR2 equ 0x21 ;define posição de memória 21H 
VAR3 equ 0x22 ;define posição de memória 22H 
 org 0 ;define endereço de origem na ROM 
 goto inicio ;desvia execução para rótulo INICIO 
;; =========================== rotina de tempo 
tempo movlw 0x03 ;rotina de tempo. W <- 3 
 movwf VAR1 ;VAR1 <- W 
temp1 movlw 0x3F ;W <- 3Fh (63 em decimal) 
 movwf VAR2 ;VAR2 <- W 
temp2 movlw 0xFF ;W <- FFH (255 em decimal) 
 movwf VAR3 ;VAR3 <- W 
 decfsz VAR3,F ;decrementa VAR3 pula prox.linha se zerar 
 goto $-1 ;volta uma linha 
 decfsz VAR2,F ;decrementa VAR2 pula prox.linha se zerar 
 goto temp2 ;volta para “temp2” 
 decfsz VAR1,F ;decrementa VAR1 pula prox.linha se zerar 
 goto temp1 ;volta para “temp1” 
 return ;retorna da subrotina p/ onde foi chamada 
;;============================ rotina de inicialização (prepara a estação) 
inicio bcf STATUS, RP0 ;desliga bit STATUS,RP0. 
 bcf STATUS, RP1 ;desliga bit STATUS,RP1. escolhe bank0. 
 clrf PORTA ;zera todo o PORTA (A0, A1, A2, ...) 
 bsf STATUS, RP0 ;liga bit STATUS,RP0. escolhe bank1 
 movlw 0x06 ;carrega 06H (00000110) no acumulador 
 movwf ADCON1 ;move do acum.p/ADCON1 (desl.analogicas) 
 movlw 0xff ;carrega FFH (11111111) no acumulador 
 movwf TRISA ;move acum.p/TRISA (PORTA como entrada) 
 movlw 0x00 ;zera todo o acumulador (move zeros) 
 movwf TRISD ;mov acum.p/PORTD, todo PORTD como saída 
 bcf TRISB,3 ;desliga TRISB,3 definindo B3 como saída 
 bcf STATUS, RP0 ;desliga bit STATUS,RP0 (volta bank0) 
;; ==================================== parte ciclica 
comeco bsf PORTB,3 ;________________________________________ 
 movlw 0xff ;________________________________________ 
 movwf PORTD ;________________________________________ 
 call tempo ;________________________________________ 
 
 bcf PORTB,3 ;________________________________________ 
 movlw 0x3f ;________________________________________ 
 movwf PORTD ;________________________________________ 
 call tempo ;________________________________________ 
 
 movlw 0x0f ;________________________________________ 
 movwf PORTD ;________________________________________ 
 call tempo ;________________________________________ 
 
 movlw 0x03 ;________________________________________ 
 movwf PORTD ;________________________________________ 
 call tempo ;________________________________________ 
 
 goto comeco ;________________________________________ 
 
 END ;________________________________________ 
;-------------------------------

Continue navegando