Vous êtes sur la page 1sur 4

Transmisin de datos RS-232 a 2400bps (8,n,1)

U1
13
14
1
2
3
4
5
6
7
8
9
10

OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

PIC16F877

;Este programa envia datos al computador


;hace un conteo de 0 a 9 y cada 0,5 segundos transmite el dato
;2400 bps (8,n,1)
pc
equ
status equ
ptoa
equ
ptob
equ
ptoc
equ
ptod
equ
ptoe
equ
pclath equ
intcon equ
pir1
equ
rcsta equ
txreg equ
rcreg equ
adresh equ
adcon0 equ
trisa
equ
trisb
equ
trisc
equ
trisd
equ
trise
equ
txsta equ
spbrg equ
adresl equ
adcon1 equ

02
03
05
06
07
08
09
0ah
0bh
0ch
18h
19h
1ah
1eh
1fh
85h
86h
87h
88h
89h
98h
99h
9eh
9fh

;Definicion de bits utilizados

RXD
TXD
RTS
CTS

rp0
rp1
irp
z
c
txif
go

equ
equ
equ
equ
equ
equ
equ

5
6
7
2
0
4
2

; pines del puerto c


e
equ
1h
rs
equ
0h

;para habilitar el modulo LCD


;para seleccionar datos o instruccion del LCD

;Variables del usuario


loops
equ
loops2
equ
contador
equ

34h
35h
36h

; ************ Configuracion para el simulador Proteus


list p=16f877
_CP_ALL
_CP_HALF
_CP_UPPER_256
_CP_OFF
_DEBUG_ON
_DEBUG_OFF
_WRT_ENABLE_ON
_WRT_ENABLE_OFF
_CPD_ON
_CPD_OFF
_LVP_ON
_LVP_OFF
_BODEN_ON
_BODEN_OFF
_PWRTE_OFF
_PWRTE_ON
_WDT_ON
_WDT_OFF
_LP_OSC
_XT_OSC
_HS_OSC
_RC_OSC

EQU
EQU
EQU

EQU

EQU

H'0FCF'
EQU H'1FDF'
EQU H'2FEF'
H'3FFF'
H'37FF'
EQU H'3FFF'
EQU H'3FFF'
EQU H'3DFF'
EQU H'3EFF'
EQU H'3FFF'
H'3FFF'
EQU H'3F7F'
EQU H'3FFF'
EQU H'3FBF'
EQU H'3FFF'
EQU H'3FF7'
EQU H'3FFF'
EQU H'3FFB'
H'3FFC'
EQU H'3FFD'
EQU H'3FFE'
EQU H'3FFF'

__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON

org
goto

00
inicio

;vector de reset
;va a iniciar programa principal
;subrutina de retardo en milisegundos
;el registro loops contiene el numero

retarms
top2
top

movwf loops
movlw d'110'
movwf loops2
nop
nop
nop
nop
nop
nop
decfsz loops2,1
goto top
decfsz loops
goto top2
return

;de milisegundos del retardo

;pregunta si termin ya 1 ms
;pregunta si termina el retardo

; ******** PROGRAMA PRINCIPAL ***********


inicio

bcf
bsf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf

status,6
status,5
b'11111'
trisa
b'11111111'
trisb
b'10111111'
trisc
b'11111111'
trisd
b'11111111'
trise
b'11110111'
adcon1

movlw
movwf
movlw
movwf

b'00100110'
txsta
d'103'
spbrg

bcf

status,5

;programacion de puertos
;segun el circuito

;programa USART asncrono para TX


;alta rata de baudios
;configura temporizador a 4 MHZ
;2400 bps (8,n,1)

bsf
pir1,txif
movlw b'10000000'
;habilita puerto serial
movwf rcsta

ciclo

clrf

contador

;inicia contador en 0

movlw
call
movlw
call

d'255'
retarms
d'255'
retarms

;retardo entre transmisiones

movlw 30h
addwf contador,0

;suma 30h para convertir el dato en ASCII

espera btfss

pir1,txif
;espera a que este listo para transmitir
goto
espera
movwf txreg
;pasa dato al registro txreg para su envio
incf
movlw
xorwf
btfss
goto

contador,1
d'10'
contador,0
status,z
ciclo

;incrementa conteo

goto

inicio

;Vuelve a empezar el ciclo para


;enviar otro paquete de datos

end

;si no ha llegado a 10 sigue enviando

Vous aimerez peut-être aussi