Programa

3
org0 goto inicio org4 call grabar inicio bsf status,rp0 movlw 0x06 movwf adcon1 movlw b'00001111' movwf porta movlw b'00000000' movwf porte movlw b'11111111' movwf portd movlw b'00000111' movwf option_reg movlw b'10010000' movwf intcon bcf status,rp0 bsf porta,4 lee btfsc portd,0 call borrar bcf porte,0 btfsc portd,1 call test bcf porta,5 goto lee test bsf porta,5 return borrar bsf porte,0 return grabar call initrans bsf status,rp0 clrf adcon1

description

fa

Transcript of Programa

Page 1: Programa

org0goto inicio org4call grabar

iniciobsf status,rp0movlw 0x06movwf adcon1movlw b'00001111'movwf portamovlw b'00000000'movwf portemovlw b'11111111'movwf portdmovlw b'00000111'movwf option_regmovlw b'10010000'movwf intconbcf status,rp0

bsf porta,4

lee btfsc portd,0call borrarbcf porte,0btfsc portd,1call testbcf porta,5goto lee

testbsf porta,5return

borrarbsf porte,0return

grabar call initransbsf status,rp0clrf adcon1bsf adcon1,adfmbsf porta,0bcf status,rp0movlw 0x01movwf adcon0ciclo call delay30 ; hay que esperar 30 microsegundosbsf porte,1bsf adcon0,goesperar btfsc adcon0,go_donegoto esperar ;espera a que termine la conversion

Page 2: Programa

movf adresh,w ;carga en w el byte alto del resultado de la conversioncall enviarbsf status, rp0movf adresl,w ;carga en w el byte bajo del resultado de la conversioncall enviarmovlw 0x0d ;codigo de retorno call enviacodmovlw 0x0acall enviacodbcf porte,0retfieretfie

initransbcf status,rp1bsf status,rp0 ; banco 1bcf txsta,brgh ; pone el bit brgh = 0 VELOCIDAD BAJAmovlw 0x017 ; el valor para 9600 baudios fosc 14.7 Mhzmovwf spbrg ; configra los 9600 baudbcf txsta,sync ; limpia bit sync modo asincrono bsf txsta,txen ; pone el bit txen=1 habilita transmisionbcf status,rp0bsf rcsta,spen ; pone el bit spen= 1 habilita puerto seriereturn

enviacodbsf status,rp0back btfss txsta,trmt ;checa el buffer de transmisiongoto back ; si esta ocupado esperabcf status,rp0 ;banco 0movwf txregreturn

delay30 ;con cristal de 14.7 Mhzpausa movlw 0x23movwf cont1rep decfsz cont1,1goto repreturn

enviarmovwf msnib ;pone byte en msnibmovwf lsnib ;hace una copia swapf msnib,1 ;intercambia nibles en lsnibmovlw 0x0f ;mascara para limpiar el nible altoandwf msnib,1 ;limpia parte alta de msnibandwf lsnib,1 ;limpia parte alta de lsnibmovf msnib,w ;carga msnib en wcall enviacod ;lo envia por el puerto seriemovf lsnib,w ; carga lsnib en wcall enviacodreturn

end