Ir ao conteúdo
  • Cadastre-se

Problemas com montagem


cezar.opaleiro

Posts recomendados

este foi gerado pelo psi veja

; Compiled with: PIC Simulator IDE - Registered Copy v6.73

; Microcontroller model: PIC16F628A

; Clock frequency: 4.0 MHz

; Begin


R0H EQU 0x21
R1L EQU 0x22
R1H EQU 0x23
R2L EQU 0x24
R2H EQU 0x25
R3L EQU 0x26
R3H EQU 0x27
R4L EQU 0x28
R4H EQU 0x29
R5L EQU 0x2A
R5H EQU 0x2B
W_TEMP EQU 0x7F
STATUS_TEMP EQU 0x7E
R0L_TEMP EQU 0x2C
R0H_TEMP EQU 0x2D
R1L_TEMP EQU 0x2E
R1H_TEMP EQU 0x2F
R2L_TEMP EQU 0x30
R2H_TEMP EQU 0x31
R3L_TEMP EQU 0x32
R3H_TEMP EQU 0x33
R4L_TEMP EQU 0x34
R4H_TEMP EQU 0x35
R5L_TEMP EQU 0x36
R5H_TEMP EQU 0x37
FSR_TEMP EQU 0x38
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO L0004
ORG 0x0004
MOVWF W_TEMP
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_TEMP
CALL L0005
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
L0004:
; The address of 'p_r_o_c_1_1' is 0x39
p_r_o_c_1_1 EQU 0x39
; The address of 'p_r_o_c_2_1' is 0x3A
p_r_o_c_2_1 EQU 0x3A
; 1: Define CONF_WORD = 0x3f50
; 2: Define CLOCK_FREQUENCY = 4
; 3: AllDigital
MOVLW 0x07
MOVWF 0x1F
; 4: Dim cont As Byte
; The address of 'cont' is 0x3B
cont EQU 0x3B
; 5: Dim contus As Byte
; The address of 'contus' is 0x3C
contus EQU 0x3C
; 6: Dim contds As Byte
; The address of 'contds' is 0x3D
contds EQU 0x3D
; 7: Dim contum As Byte
; The address of 'contum' is 0x3E
contum EQU 0x3E
; 8: Dim contdm As Byte
; The address of 'contdm' is 0x3F
contdm EQU 0x3F
; 9: Dim contuh As Byte
; The address of 'contuh' is 0x40
contuh EQU 0x40
; 10: Dim contdh As Byte
; The address of 'contdh' is 0x41
contdh EQU 0x41
; 11: Dim ch1 As Byte
; The address of 'ch1' is 0x42
ch1 EQU 0x42
; 12: Dim ch2 As Byte
; The address of 'ch2' is 0x43
ch2 EQU 0x43
; 13: Dim chr As Byte
; The address of 'chr' is 0x44
chr EQU 0x44
; 14: Dim var As Byte
; The address of 'var' is 0x45
var EQU 0x45
; 15: Dim mask As Byte
; The address of 'mask' is 0x46
mask EQU 0x46
; 16: Dim i As Byte
; The address of 'i' is 0x47
i EQU 0x47
; 17: Dim j As Byte
; The address of 'j' is 0x48
j EQU 0x48
; 18: Dim var1 As Byte
; The address of 'var1' is 0x49
var1 EQU 0x49
; 19: Dim mask1 As Byte
; The address of 'mask1' is 0x4A
mask1 EQU 0x4A
; 20: TRISA.1 = 1
BSF STATUS,RP0
BSF 0x05,1
; 21: TRISA.0 = 0
BCF 0x05,0
; 22: TRISB = 0
CLRF 0x06
; 23: cont = 0
BCF STATUS,RP0
CLRF 0x3B
; 24: contus = 0
CLRF 0x3C
; 25: contds = 0
CLRF 0x3D
; 26: contum = 0
CLRF 0x3E
; 27: contdm = 0
CLRF 0x3F
; 28: contuh = 0
CLRF 0x40
; 29: contdh = 0
CLRF 0x41
; 30: var = 0
CLRF 0x45
; 31: var1 = 5
MOVLW 0x05
MOVWF 0x49
; 32: i = 1
MOVLW 0x01
MOVWF 0x47
; 33: j = 0
CLRF 0x48
; 34: 'configuração da interrupcao
; 35: 'Habilita todas as interrupções não mascaradas
; 36:
; 37: T1CON.TMR1CS = 0 'usar o clock interno
BCF 0x10,1
; 38: T1CON.T1CKPS0 = 1 'Prescaler 1:8
BSF 0x10,4
; 39: T1CON.T1CKPS1 = 1
BSF 0x10,5
; 40: TMR1H = 0x0b
MOVLW 0x0B
MOVWF 0x0F
; 41: TMR1L = 0xdc
MOVLW 0xDC
MOVWF 0x0E
; 42:
; 43: T1CON.TMR1ON = 1 'habilita a contagem do TIMER1
BSF 0x10,0
; 44: PIE1.TMR1IE = 1 'habilita a interrupção do TIMER1
BSF STATUS,RP0
BSF 0x0C,0
; 45: INTCON.PEIE = 1 'habilita todas as interrupções não mascaradas
BCF STATUS,RP0
BSF 0x0B,6
; 46: Enable
BSF INTCON,GIE
; 47: loop1:
L0001:
; 48: PORTB = 0
CLRF 0x06
; 49: If contum = 1 Then
MOVF 0x3E,W
SUBLW 0x01
BTFSS STATUS,Z
GOTO L0006
; 50: Toggle PORTA.0
BSF STATUS,RP0
BCF TRISA,0
BCF STATUS,RP0
MOVLW 0x01
XORWF PORTA,F
; 51: Endif
L0006: MOVLW 0x1F
ANDWF STATUS,F
; 52: var = 0
CLRF 0x45
; 53: var = contdh * 5
MOVF 0x41,W
MOVWF R3L
CLRF R3H
MOVLW 0x05
MOVWF R1L
CLRF R1H
CALL M001
MOVWF 0x45
; 54: Call mostra(mask)
MOVF 0x46,W
MOVWF 0x3A
CALL L0003
; 55: WaitMs 1
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
; 56: var = 0
CLRF 0x45
; 57: var = contuh * 5
MOVF 0x40,W
MOVWF R3L
CLRF R3H
MOVLW 0x05
MOVWF R1L
CLRF R1H
CALL M001
MOVWF 0x45
; 58: Call mostra(mask)
MOVF 0x46,W
MOVWF 0x3A
CALL L0003
; 59: WaitMs 1
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
; 60: Call dois_p(mask1)
MOVF 0x4A,W
MOVWF 0x39
CALL L0002
; 61: var = 0
CLRF 0x45
; 62: var = contdm * 5
MOVF 0x3F,W
MOVWF R3L
CLRF R3H
MOVLW 0x05
MOVWF R1L
CLRF R1H
CALL M001
MOVWF 0x45
; 63: Call mostra(mask)
MOVF 0x46,W
MOVWF 0x3A
CALL L0003
; 64: WaitMs 1
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
; 65: var = 0
CLRF 0x45
; 66: var = contum * 5
MOVF 0x3E,W
MOVWF R3L
CLRF R3H
MOVLW 0x05
MOVWF R1L
CLRF R1H
CALL M001
MOVWF 0x45
; 67: Call mostra(mask)
MOVF 0x46,W
MOVWF 0x3A
CALL L0003
; 68: WaitMs 1
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
; 69: Call dois_p(mask1)
MOVF 0x4A,W
MOVWF 0x39
CALL L0002
; 70: var = 0
CLRF 0x45
; 71: var = contds * 5
MOVF 0x3D,W
MOVWF R3L
CLRF R3H
MOVLW 0x05
MOVWF R1L
CLRF R1H
CALL M001
MOVWF 0x45
; 72: Call mostra(mask)
MOVF 0x46,W
MOVWF 0x3A
CALL L0003
; 73: WaitMs 1
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
; 74: var = 0
CLRF 0x45
; 75: var = contus * 5
MOVF 0x3C,W
MOVWF R3L
CLRF R3H
MOVLW 0x05
MOVWF R1L
CLRF R1H
CALL M001
MOVWF 0x45
; 76: Call mostra(mask)
MOVF 0x46,W
MOVWF 0x3A
CALL L0003
; 77: WaitMs 1
MOVLW 0x01
MOVWF R0L
CLRF R0H
CALL W001
; 78: Goto loop1
GOTO L0001
; 79:
; 80: End
L0007: GOTO L0007
; 81: Proc dois_p(arg1 As Byte)
L0002:
; 82: For j = 0 To 5
CLRF 0x48
L0008:
MOVF 0x48,W
SUBLW 0x05
BTFSS STATUS,C
GOTO L0009
; 83: arg1 = LookUp(0xff, 0xc9, 0xc9, 0xff, 0xff), var1
MOVF 0x49,W
SUBLW 0x04
BTFSS STATUS,C
GOTO L0010
CALL L0011
MOVWF 0x39
GOTO L0010
L0011:
MOVLW 0x00
MOVWF PCLATH
MOVF 0x49,W
ADDWF PCL,F
RETLW 0xFF
RETLW 0xC9
RETLW 0xC9
RETLW 0xFF
RETLW 0xFF
L0010:
; 84: PORTB = arg1
MOVF 0x39,W
MOVWF 0x06
; 85: WaitUs 150
MOVLW 0x96
MOVWF R4L
CALL X001
; 86: var1 = var1 + 1
MOVF 0x49,W
ADDLW 0x01
MOVWF 0x49
; 87: Next j
MOVLW 0x01
ADDWF 0x48,F
BTFSS STATUS,C
GOTO L0008
L0009: MOVLW 0x1F
ANDWF STATUS,F
; 88: End Proc
RETURN
; 89: Proc mostra(arg As Byte)
L0003:
; 90: For i = 1 To 5
MOVLW 0x01
MOVWF 0x47
L0012:
MOVF 0x47,W
SUBLW 0x05
BTFSS STATUS,C
GOTO L0013
; 91: arg = LookUp(0xde, 0x80, 0xfe, 0xff, 0xde, 0xbc, 0xba, 0xb6, 0xce, 0xbd, 0xbe, 0xae, 0x96, 0xb9, 0xf3, 0xeb, 0xdb, 0x80, 0xfb, 0x8d, 0xae, 0xae, 0xae, 0xb1, 0xe1, 0xd6, 0xb6, 0xb6, 0xf9, 0xbf, 0xb8, 0xb7, 0xaf, 0x9f, 0xc9, 0xb6, 0xb6, 0xb6, 0xc9, 0xcf, 0xb6, 0xb6, 0xb5, 0xc3), var
MOVF 0x45,W
SUBLW 0x2B
BTFSS STATUS,C
GOTO L0014
CALL L0015
MOVWF 0x3A
GOTO L0014
L0015:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOVLW 0x01
MOVWF PCLATH
MOVF 0x45,W
ADDWF PCL,F
RETLW 0xDE
RETLW 0x80
RETLW 0xFE
RETLW 0xFF
RETLW 0xDE
RETLW 0xBC
RETLW 0xBA
RETLW 0xB6
RETLW 0xCE
RETLW 0xBD
RETLW 0xBE
RETLW 0xAE
RETLW 0x96
RETLW 0xB9
RETLW 0xF3
RETLW 0xEB
RETLW 0xDB
RETLW 0x80
RETLW 0xFB
RETLW 0x8D
RETLW 0xAE
RETLW 0xAE
RETLW 0xAE
RETLW 0xB1
RETLW 0xE1
RETLW 0xD6
RETLW 0xB6
RETLW 0xB6
RETLW 0xF9
RETLW 0xBF
RETLW 0xB8
RETLW 0xB7
RETLW 0xAF
RETLW 0x9F
RETLW 0xC9
RETLW 0xB6
RETLW 0xB6
RETLW 0xB6
RETLW 0xC9
RETLW 0xCF
RETLW 0xB6
RETLW 0xB6
RETLW 0xB5
RETLW 0xC3
L0014:
; 92: PORTB = arg
MOVF 0x3A,W
MOVWF 0x06
; 93: WaitUs 150
MOVLW 0x96
MOVWF R4L
CALL X001
; 94: var = var + 1
MOVF 0x45,W
ADDLW 0x01
MOVWF 0x45
; 95: Next i
MOVLW 0x01
ADDWF 0x47,F
BTFSS STATUS,C
GOTO L0012
L0013: MOVLW 0x1F
ANDWF STATUS,F
; 96: End Proc
RETURN
; 97:
; 98:
; 99: On Interrupt 'Rotina de tratamento de interrupção
L0005:
; 100: Save System 'salva o contexto, use sempre
MOVF R0L,W
MOVWF R0L_TEMP
MOVF R0H,W
MOVWF R0H_TEMP
MOVF R1L,W
MOVWF R1L_TEMP
MOVF R1H,W
MOVWF R1H_TEMP
MOVF R2L,W
MOVWF R2L_TEMP
MOVF R2H,W
MOVWF R2H_TEMP
MOVF R3L,W
MOVWF R3L_TEMP
MOVF R3H,W
MOVWF R3H_TEMP
MOVF R4L,W
MOVWF R4L_TEMP
MOVF R4H,W
MOVWF R4H_TEMP
MOVF R5L,W
MOVWF R5L_TEMP
MOVF R5H,W
MOVWF R5H_TEMP
MOVF FSR,W
MOVWF FSR_TEMP
; 101:
; 102: 'seguem As instruções a serem executadas na interrupção
; 103:
; 104:
; 105: cont = cont + 1
MOVF 0x3B,W
ADDLW 0x01
MOVWF 0x3B
; 106: If cont = 2 Then '1 segundo
MOVF 0x3B,W
SUBLW 0x02
BTFSS STATUS,Z
GOTO L0016
; 107: Toggle PORTA.1
BSF STATUS,RP0
BCF TRISA,1
BCF STATUS,RP0
MOVLW 0x02
XORWF PORTA,F
; 108: contus = contus + 1 'incrementa contador da unidade de segundo
MOVF 0x3C,W
ADDLW 0x01
MOVWF 0x3C
; 109: cont = 0
CLRF 0x3B
; 110: Endif
L0016: MOVLW 0x1F
ANDWF STATUS,F
; 111: If contus = 10 Then
MOVF 0x3C,W
SUBLW 0x0A
BTFSS STATUS,Z
GOTO L0017
; 112: contds = contds + 1
MOVF 0x3D,W
ADDLW 0x01
MOVWF 0x3D
; 113: contus = 0
CLRF 0x3C
; 114: cont = 0
CLRF 0x3B
; 115: Endif
L0017: MOVLW 0x1F
ANDWF STATUS,F
; 116: If contds = 6 Then
MOVF 0x3D,W
SUBLW 0x06
BTFSS STATUS,Z
GOTO L0018
; 117: contum = contum + 1
MOVF 0x3E,W
ADDLW 0x01
MOVWF 0x3E
; 118: contds = 0
CLRF 0x3D
; 119: cont = 0
CLRF 0x3B
; 120: Endif
L0018: MOVLW 0x1F
ANDWF STATUS,F
; 121: If contum = 10 Then
MOVF 0x3E,W
SUBLW 0x0A
BTFSS STATUS,Z
GOTO L0019
; 122: contdm = contdm + 1
MOVF 0x3F,W
ADDLW 0x01
MOVWF 0x3F
; 123: contum = 0
CLRF 0x3E
; 124: cont = 0
CLRF 0x3B
; 125: Endif
L0019: MOVLW 0x1F
ANDWF STATUS,F
; 126: If contdm = 6 Then
MOVF 0x3F,W
SUBLW 0x06
BTFSS STATUS,Z
GOTO L0020
; 127: contuh = contuh + 1
MOVF 0x40,W
ADDLW 0x01
MOVWF 0x40
; 128: contdm = 0
CLRF 0x3F
; 129: cont = 0
CLRF 0x3B
; 130: Endif
L0020: MOVLW 0x1F
ANDWF STATUS,F
; 131: If contuh = 10 Then
MOVF 0x40,W
SUBLW 0x0A
BTFSS STATUS,Z
GOTO L0021
; 132: contdh = contdh + 1
MOVF 0x41,W
ADDLW 0x01
MOVWF 0x41
; 133: contuh = 0
CLRF 0x40
; 134: cont = 0
CLRF 0x3B
; 135: Endif
L0021: MOVLW 0x1F
ANDWF STATUS,F
; 136: If contdh = 2 And contum = 4 Then
MOVF 0x41,W
SUBLW 0x02
BTFSS STATUS,Z
GOTO L0022
MOVLW 0x1F
ANDWF STATUS,F
MOVF 0x3E,W
SUBLW 0x04
BTFSS STATUS,Z
GOTO L0022
; 137: contuh = 0
CLRF 0x40
; 138: contdh = 0
CLRF 0x41
; 139: cont = 0
CLRF 0x3B
; 140: Endif
L0022: MOVLW 0x1F
ANDWF STATUS,F
; 141:
; 142: PIR1.TMR1IF = 0
BCF 0x0C,0
; 143: Resume
MOVF R0L_TEMP,W
MOVWF R0L
MOVF R0H_TEMP,W
MOVWF R0H
MOVF R1L_TEMP,W
MOVWF R1L
MOVF R1H_TEMP,W
MOVWF R1H
MOVF R2L_TEMP,W
MOVWF R2L
MOVF R2H_TEMP,W
MOVWF R2H
MOVF R3L_TEMP,W
MOVWF R3L
MOVF R3H_TEMP,W
MOVWF R3H
MOVF R4L_TEMP,W
MOVWF R4L
MOVF R4H_TEMP,W
MOVWF R4H
MOVF R5L_TEMP,W
MOVWF R5L
MOVF R5H_TEMP,W
MOVWF R5H
MOVF FSR_TEMP,W
MOVWF FSR
RETURN
; 144: End
L0023: GOTO L0023
; 145:
; 146: Return
RETURN
; End of program
L0024: GOTO L0024
; Multiplication Routine
M001: MOVLW 0x10
MOVWF R4L
CLRF R0H
CLRF R0L
M002: RRF R3H,F
RRF R3L,F
BTFSS STATUS,C
GOTO M003
MOVF R1L,W
ADDWF R0L,F
MOVF R1H,W
BTFSC STATUS,C
INCFSZ R1H,W
ADDWF R0H,F
M003: RRF R0H,F
RRF R0L,F
RRF R2H,F
RRF R2L,F
DECFSZ R4L,F
GOTO M002
MOVF R2L,W
RETURN
; Waitms Routine
W001: MOVF R0L,F
BTFSC STATUS,Z
GOTO W002
CALL W003
DECF R0L,F
NOP
NOP
NOP
NOP
NOP
GOTO W001
W002: MOVF R0H,F
BTFSC STATUS,Z
RETURN
CALL W003
DECF R0H,F
DECF R0L,F
GOTO W001
W003: MOVLW 0x0C
MOVWF R2H
W004: DECFSZ R2H,F
GOTO W004
NOP
NOP
MOVLW 0x12
MOVWF R1L
W005: DECFSZ R1L,F
GOTO W006
CALL W007
CALL W007
NOP
NOP
RETURN
W006: CALL W007
GOTO W005
W007: MOVLW 0x0D
MOVWF R2L
W008: DECFSZ R2L,F
GOTO W008
NOP
RETURN
; Waitus Routine - Byte Argument
X001: MOVLW 0x0A
SUBWF R4L,F
BTFSS STATUS,C
RETURN
GOTO X002
X002: MOVLW 0x06
SUBWF R4L,F
BTFSS STATUS,C
RETURN
GOTO X002
; Configuration word settings
ORG 0x2007
DW 0x3F50
; End of listing
END
R0L EQU 0x20

Link para o comentário
Compartilhar em outros sites

Claro que não vai gerar, pois os fuses bits nada mais são do que registradores onde voce escreve valores!

o código apenas ira mopstrar o valor escrito no registrador , que sera representando por um numero equivalente oa seu endereço!

no caso que ele mostrou aquilo é para o arquivo list do MPLab.

abs.

Link para o comentário
Compartilhar em outros sites

Claro que não vai gerar, pois os fuses bits nada mais são do que registradores onde voce escreve valores!

o código apenas ira mopstrar o valor escrito no registrador , que sera representando por um numero equivalente oa seu endereço!

no caso que ele mostrou aquilo é para o arquivo list do MPLab.

abs.

Eae Felipe!

Poxa então se num é isso o que deve ser em...tô louco já tentei de tudo que se pode pensar...só sobrou então o LCD com problema...

:(:(:(:(:(:(:(

Abrs!

Link para o comentário
Compartilhar em outros sites

nao se desespere amigo ,quer um programa pra testar ai????

Olá Jorge!

Obrigado amigo!

Quero sim...faz um bem simples e se possível posta a ligação dos pinos.

O PIC que estou usando é o PIC16F88, se preferir também pode me mandar só .hex. Ae se funcionar agente adapta o meu código.

Poxa esse projeto é o meu TCC só tenho mais uns 20 dias...não imaginava que daria tanto trabalho assim.

Abrs!

Link para o comentário
Compartilhar em outros sites

:100000008A110A1205280000090083169B01073097

:100010009C008312831686018312861106118316B3

:10002000861106110F30860583126430A00000305F

:10003000A1004E203330AB203330AB203330AB2027

:100040002230AB202830AB200D30AB200130AB206C

:100050000130AB20743093206530932073309320AF

:1000600074309320613093206E309320643093205D

:100070006F30932020309320C030AB206C30932021

:1000800063309320643093203A30932020309320C3

:100090000130A000A1014E2028284D28A0080319F6

:1000A00059286020A00300000000000000000000AC

:1000B0004E28A108031908006020A103A0034E28C0

:1000C0000C30A500A50B6228000000001230A20031

:1000D000A20B6F2871207120000000000800712021

:1000E00068280D30A400A40B7328000008000A3013

:1000F000A802031C08007C280630A802031C080084

:100100007C281030A8020001031C013EA902031C38

:1001100008008A280A30A8020001031C013EA90237

:10012000031C08008A28A80006150F308605280839

:10013000F0398604A620A80E0F3086052808F0396D

:100140008604A6206430A8007720080086150000E9

:10015000861100000800A80006110F308605280847

:10016000F0398604A620A80E0F3086052808F0393D

:100170008604A6208830A8001330A900812008003A

:02400E00502F31

:02401000FC3F73

:00000001FF

tenta ai amigo,escreve testando lcd num dislay,a ligaçao e pra 4 bits ok.

Link para o comentário
Compartilhar em outros sites

:100000008A110A1205280000090083169B01073097

:100010009C008312831686018312861106118316B3

:10002000861106110F30860583126430A00000305F

:10003000A1004E203330AB203330AB203330AB2027

:100040002230AB202830AB200D30AB200130AB206C

:100050000130AB20743093206530932073309320AF

:1000600074309320613093206E309320643093205D

:100070006F30932020309320C030AB206C30932021

:1000800063309320643093203A30932020309320C3

:100090000130A000A1014E2028284D28A0080319F6

:1000A00059286020A00300000000000000000000AC

:1000B0004E28A108031908006020A103A0034E28C0

:1000C0000C30A500A50B6228000000001230A20031

:1000D000A20B6F2871207120000000000800712021

:1000E00068280D30A400A40B7328000008000A3013

:1000F000A802031C08007C280630A802031C080084

:100100007C281030A8020001031C013EA902031C38

:1001100008008A280A30A8020001031C013EA90237

:10012000031C08008A28A80006150F308605280839

:10013000F0398604A620A80E0F3086052808F0396D

:100140008604A6206430A8007720080086150000E9

:10015000861100000800A80006110F308605280847

:10016000F0398604A620A80E0F3086052808F0393D

:100170008604A6208830A8001330A900812008003A

:02400E00502F31

:02401000FC3F73

:00000001FF

tenta ai amigo,escreve testando lcd num dislay,a ligaçao e pra 4 bits ok.

Obrigado Jorge!

Só preciso então saber como você definiu as conexões do PIC16F88 com o LCD, tipo:

LCD -> PIC

RS ->

EN ->

D1 ->

D2 ->

D3 ->

D4 ->

Abrs!

Link para o comentário
Compartilhar em outros sites

Olá amigos!

Eu juntamente com um amigo, fizemos vários testes. Graveis 3 PIC 16F88 com 3 programas diferentes:

1º - Meu código

2º - Código do jorgeletronico

3º - Código do Paulo

Resultado: Nenhum dos programas funcionaram. Então testamos LCD aparte tudo OK, testamos o PIC e tudo OK também. Testamos o RS e EN comunicando e tudo OK também. Então passamos para o seguinte teste: Tinhamos um programa que funcionava gravamos ele no PIC16F628 e funcionou pegamos o mesmo código e gravamos no 16F88 e também funcionou. Conclusão o problema esta em SOFTWARE!

Então vou postar aqui o meu código...gostaria da ajuda de você amigos para me ajudar a ver qual é o problema dele. Detalhe ele roda perfeito no ISIS Proteus...Por Favor ajudem!

O Código:

// Lcd pinout settings
sbit LCD_RS at RA7_bit;
sbit LCD_EN at RA6_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISA7_bit;
sbit LCD_EN_Direction at TRISA6_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;

unsigned int pulso, cilindros = 6, set, counter =0,RPM_MAX,voltas,opcao=0,temp2,temp4,converte,converte2,litros,MaximaTemp;
char AUX1[10],AUX2[10],AUX3[4];
unsigned short c1,c2,c3;


void interrupt(){
counter++; // Incrementa valor de counter a cada Interrupção.
if(PORTB.f1 == 0){
set = 0;
}
if(PORTB.f1 == 0 && counter <= 256 && set == 0){
pulso++;
set = 1;
}

TMR0 = 12; // Valor Inicial de TMR0 (256 - 12 = 244).
INTCON = 0b00100000; // Seta T0IE (bit 5) e Limpa T0IF (bit 2).

}// interrupt




void main() {

OPTION_REG = 0b10000010; // Atribui Prescaler de 1:8 ao TMR0.
TMR0 = 12; // Valor Inicial de TMR0 (256 - 12 = 244).
INTCON = 0b10100000; // Habilita Interrupção do TMR0, e seta os
// registros GIE e T0IE.

CMCON = 0x07; // comunicação digital
//ANSEL = 1;
TRISA = 0b10111000; //[0-7] portas como entradas ou saídas 0 saída 1 entrada
TRISB = 0b11010000;

Lcd_Init(); //inicializa display
delay_ms(100);
PORTB.f0 = 1;
PORTB.f3 = 1;
PORTA.f1 = 0; //apagar leds
PORTB.f2 = 0; //apagar leds

Lcd_Cmd(_LCD_CURSOR_OFF); //desabilita cursor
Lcd_Cmd(_LCD_CLEAR);//' limpa o display
opcao = 1;

while(1){

if(PORTB.f3 == 0){
Lcd_Cmd(_LCD_CLEAR);//' limpa o display
Cil();
PORTB.f3 = 1;
}

if(PORTB.f0 == 0){
opcao++;

if(opcao > 4){
opcao = 1; //volta ao menu inicial
}
Lcd_Cmd(_LCD_CLEAR);//' limpa o display
delay_ms(200);
PORTB.f0 = 1;
}

switch (opcao){

case 1:
Conta_Giros();
break;

case 2:
Tensao_Bateria();
break;


case 3:
Combustivel();
break;


case 4:
Temperatura();
break;

}
}
}

Abrs!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...