Skip to content

Instantly share code, notes, and snippets.

@davidae1704
Created November 22, 2013 22:17
Show Gist options
  • Save davidae1704/7607828 to your computer and use it in GitHub Desktop.
Save davidae1704/7607828 to your computer and use it in GitHub Desktop.
codigo para desafio de spi con pic 16f877
title "PIC16F877 Envio de byte por SPI Modo Maestro"
list p=16F877 ; indica el modelo de PIC
#include <p16f877.inc> ; archivo de encabezado
__CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF
;VARIABLES
conta equ 0x10
dconta equ 0x20
recibe equ 0x30
dato EQU 0X40
org 0
goto mainp
;PROGRAMA PRINCIPAL
org 100
mainp:
;bsf OSCCON,6 ;Divisor de preescala del
;bsf OSCCON,5 ;reloj a 8Mhz
;bsf OSCCON,4
;clrf conta
clrf dconta
;Configuración de las lineas fisicas
movlw 0x0f
movwf ADCON1
bcf TRISC,3 ;Salida SCK
bcf TRISC,5 ;Salida SDO
bcf TRISA,5 ;Salida SS
bsf TRISC,4 ;Entrada SDI
bsf TRISD,0 ;Push de entrada
;Configuración del SPI
movlw B'01000000' ;Muestreo al medio
movwf SSPSTAT
movlw B'00110000' ;Activar el SPI, polaridad, SCK=fosc/4
movwf SSPCON
NO btfss PORTD,0 ;Se presiono el push?
goto NO
NO1 btfsc PORTD,0 ;Se libero?
goto NO1
movf SSPBUF,W ;Lectura tonta
envio bcf PIR1,SSPIF ;limpiar bandera
movlw 0x44
movwf 0x21
movf 0x21, W
movwf SSPBUF ;Iniciar la transmisión
lazo1 btfss PIR1,SSPIF ;Se completo ??
goto lazo1 ;No espere
bcf PIR1, SSPIF ; limpiar bandera de SSP
;incf FSR0L,1 ;apunta a la siguiente localidad de la cadena de envío
;movf SSPBUF,W
;movwf INDF1
;incf FSR1L,1 ;apunta a la siguiente localidad de la cadena de recepciòn
;movlw 0x03
;cpfsgt FSR0L ;dejar de enviar datos una vez que se completa la cadena
;goto envio ;No, envie el siguiente
nop
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment