Home

McMaster - Mosaico

image

Contents

1. AAA q q q q e mm 304 H H H H H H 1 1 i 3 8 H i s 9 1 i 1 az m H H 5 H i H m I 8 y 1 n EN H E 8 g 4 H H ZA e a 8 8 de H 9 a H H
2. Define a macro for adding amp right shifting Begin macro End of macro move the multiplicand to W reg Clear carry bit in the status Reg RETORNA ER AXE AE RN X AA A de X A CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE PORTB PORTC PORTD PORTE 00101111 TRISA 00001111 TRISB 10011000 TRISC 00000000 TRISD 00000000 TRISE B 11011011 OPTION_REG AR Ok e e A A AA e AREA ke de NR 0 eoe we uk NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A M QUINA E AGUARDA O ESTOURO DO WDT LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO 1 DA RAM CONFIGURA I O DO PORTA CONFIGURA I O DO PORTB CONFIGURA I O
3. The 16 bit result is stored in 2 bytes Before calling the subroutine mpy the multiplier should be loaded in location mulplr and the multiplicand in mulcnd H byte amp L byte The 16 bit result is stored in locations Performance Program Memory 37 locations of cycles z 38 Scratch RAM 0 locations 144 CONFIG CLRF LRE LRE LRE LRE cl BANK1 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF mult MACRO bit BTFSC mulplr bit ADDWF byte F RRE Ho byte E RRE L byte F ENDM ck k k k k k k k k k k k k k k k k k k k k k k k Begin Multiplier Routine mpy F CLRF H_byte CLRF L_byte MOVF mulcnd W BCF STATUS C mult 0 mult 1 mult 2 mult 3 mult 4 mult 5 mult 6 mult 7 RETURN ou SKU X de Ao
4. Straight Line Code mulcnd The 16 bit result is stored in locations H_byte L_byte Performance Program Memory 37 locations of cycles 38 Scratch RAM 0 locations 0 Define a macro for adding right shifting Begin
5. Double Precision Division Division ACCb 16 bits ACCa 16 bits ACCb 16 bits with Remainder in ACCc 16 bits Load the Denominator in location ACCaHI amp ACCaLO 16 bits Load the Numerator in location ACCbHI ACCbLO 16 bits CALL D divF The 16 bit result is in location ACCbHI ACCbLO The 16 bit Remainder is in locations ACCcHI amp ACCCLO D divF MOVLW MOVWF MOVF MOVWF MOVF MOVWF CLRF CLRF CLRF CLRF 16 temp ACCb ACCd ACCb ACCd ACCb ACCb ACCC HI W HI LO W LO CARREGA CONTADOR PARA DIV
6. MOVF BTFSC GOTO DECFSZ GOTO TRATA_BOTAO_0 FILTRO_BOTOES F STATUS Z VARRE FILTRO BOTOES F VARRE FILTRO J IGUAL A ZERO FUN O J FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 131 SIM BOT O PRESSIONADO OS COMANDOS A SEGUIR S O PARA ESCREVER A FRASE RELACIONADA AO BOT O 0 CLRF TEC_MATRICIAL BCF RS MOVLW 0X01 CALL ESCREVE MOVLW 1 CALL DELAY_MS MOVLW 0X80 CALL ESCREVE BSF RS i OVLW T CALL ESCREVE OVLW E CALL ESCREVE OVLW CALL ESCREVE OVLW 1 CALL ESCREVE OVLW A CALL ESCREVE OVLW CALL ESCREVE OVLW 0 CALL ESCREVE CLRF DISPLAY BSF TELA_PRINCIPAL GOTO VARRE DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO P LIMPAR A TELA DELAY DE 1MS COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 0 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE TECLA 0 LIMPA BARRAMENTO DE DADOS SETA FLAG P MOSTRAR TELA PRINCIPAL VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 1
7. D divF MOVLW MOVW MOVF MOVW MOVF CLRF CLRF CLRF CLRF GOTO MOVF SUBW NOCHK BTFS GOTO OVF BTFS DECF OVF S BSF NOGO LE RI RI DECF GOTO SUBW UBW F MOVWE Tj S p S 52 RETURN 16 temp CARREGA CONTADOR PARA DIVIS O ACCbHI W ACCdHI ACCbLO W ACCdLO SALVA ACCb EM ACCd ACCPHI ACCbLO LIMPA ACCb ACCcLO LIMPA ACCC check if a c ACCcLO W if equal then check lsb STATUS C carry set if gt ACCaLO W c a into c ACCCLO F STATUS C ACCCHI F ACCaHI W ACCCHI F STATUS C shift a 1 into b result ACCbLO F ACCbHI F temp F FIM DA DIVIS O DIV H N O VOLTA P DIV SIM RETORNA Ses E e o RR Ae ck OK oko ooo E A QS ROTINA DE MULTIPLICA O E do ko soo DE ck 0 E ORO Xo 0 Ko o A ES ck OA ch 8x8 Software Multiplier Fast Version Straight Line Code
8. TRATA_BOTAO_1 MOVE FILTRO_BOTOES F BTFSC STATUS Z GOTO VARRE 0 DECFSZ FILTRO BOTOES F GOTO VARRE FILTRO J IGUAL A ZERO FUN O J FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO OS COMANDOS A SEGUIR S O PARA ESCREVER A FRASE RELACIONADA AO BOT O 1 CLRF TEC_MATRICIAL BCF RS MOVLW 1 CALL ESCREVE MOVLW 1 CALL DELAY_MS MOVLW 8 CALL ESCREVE BSF RS MOVLW T CALL ESCREVE MOVLW E CALL ESCREVE DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO P LIMPAR A TELA DELAY DE 1MS COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 8 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE TECLA 1 132 OVLW Mor CALL ESCREVE OVLW ht CALL ESCREVE OVLW CALL ESCREVE OVLW d CALL ESCREVE OVLW rt CALL ESCREVE CLRF DISPLAY LIMPA BARRAMENTO DE DADOS BSF TELA_PRINCIPAL SETA FLAG P MOSTRAR TELA PRINCIPAL GOTO VARRE VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 2 TRATA BOTAO 2 MOVF FILTRO
9. TRATAMENTO DO BOTAO 2 TRATA BOTAO 2 MOVE BIEFSC GOTO DECFSZ GOTO FILTRO BOTOES F STATUS Z VARRE FILTRO BOTOES F VARRE TRECHO DO PROGRAMA PARA GRAVA MEMORIA EEPROM OVLW OVWF OVLW OVWF OVF END_EEPROM_H ENDERECO_H END_EEPROM_L ENDERECO_L VALOR_DADOS W OVWE OVLW GOTO BUFFER I2C EEPROM WRITE 10 DELAY MS VARRE FILTRO J IGUAL A ZERO FUN O JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO GRAVAR DADO DA RAM NA MEM RIA CARREGA ENDERECO ONDE O DADO SER SALVO END 0x0000 PRIMEIRA POSI O DA EEPROM CARREGA DADO A SER SALVO EM BUFFER CHAMA ROTINA DE GRAVA O GARANTE TEMPO DE ESCRITA 10ms VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 3 TRATA_BOTAO_3 MOVF BTFSC GOTO DECFSZ FILTRO BOTOES F STATUS Z VARRE FILTRO BOTOES F FILTRO J IGUAL A ZERO FUN O JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FI
10. 5V OFF Posi o 1 JP1 22K 1 2 3 a Posi o 2 JP2 33K 1 2 3 Jumpers RA5 o Posi o 3 JP3 RAS 330R 47K 1 2 8 3 2 JP4 g 2 els lt lt 100nF 8 8 10K O m 8 o 2 lt o o 45V RESET 10K By T MC1 o o MCLR E RA0 vss RAI 7 EUN RA2 RB6 E ER RB5 RM Reg 22 RS RAS RB3 5 REO RB2 5 1 RB1 5 4 RE2 RBO 2 VDD RD7 vss RD6 2 OSC1 RD5 28 oscz RDA Z RCO RD3 A RC1 RD2 P RC2 RD1 RC3 RDO H2 RC4 2 RC5 E PIC16F877A 10K 164 Fluxograma VETOR DE RESET PULA P INICIO DO PROGRAMA CONFIGURA ES INICIAS PORTAS TIMERS INTERRUP ES OPTION ADS TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO Y INICIALIZA DISPLAY Y PREPARA TELA PRINCIPAL JUMPERS RA5 T CARGA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 165 LIMPA WDT CONTADOR UTILIZADO ZERA CONTADOR AD PARA CONTAR O TEMPO DE CARGA DO CAPACITOR CONVERTE PINO EM SA DA EM 0 DESCARREGA O CAPACITOR DELAY P DESCARREGAR SIS O CAPACITOR CONVERTE PINO EM ENTRADA PERMITE A CARGA DO CAPACITOR LOOPING DE 6us INCREMENTA CONTADOR_AD FIM DO TEMPO P CARGA DO CAPACITOR SATURA ATT
11. FILTRO P EVITAR RUIDOS MOVLW MOVWF FILTRO TECLA FILTRO BOTOES CARREGA O VALOR DE FIL SALVA EM FILTRO_BOTOES RECARREGA FILTRO P EVI NOS BOT ES TECLA TAR RUIDOS 208 MOVLW MOVWF GOTO MOVF BTFSC GOTO DECFSZ GOTO MOVLW XORWF CALL GOTO DECFSZ GOTO DECFSZ GOTO OVLW OVWE BTFSC GOTO INCF CALL GOTO INCF BTFSC INCF MOVLW ANDWF CALL GOTO INC_MEM_DADOS INC_MEM_PROG 1 TEMPO_TURBO VARRE TRAT de ck c ck CE ko o o NESTE TRECHO DO PROGRAMA EST O TODOS OS TRATAMENTOS DOS BOT ES ERA E X ox ox R CARREGA TEMPO DO TURBO DAS TECLAS COM 1 IGNORA O TURBO A PRIMEIRA VEZ QUE A TECLA PRESSIONADA VOLTA PARA VARRER TECLADO oko ck oko TAMENTO DOS BOT ES xk TRAT TRATA_BOTAO_0 FILTRO BOTOES F STATUS Z VARRE FILTRO BOTOES F VARRE B 00000001 FLAG F ATUALIZA TELA LINHA 2 VARRE TRATA BOTAO 1 FILTRO BOTOES F VARRE TEMPO TURBO F VARRE TURBO TECLA TEMPO TURBO TIPO MEMORIA INC MEM PROG VALOR DADOS F
12. OS PSEUDOS COMANDOS BANKO E 1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCE STATUS RPO SELECIONA BANKO DA MEMORIA RAM de C o WA GO dvo lt lt ko A X X NR IE o ovo Xe eo ce AR Xe Ae AA XA Sk sk X CONSTANTES INTERNAS de A ko A ku RE 0X ko e oe Ok o coe A A ceo oA Xo Qk sh A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O LTRO TECLA EQU 200 FILTRO P EVITAR RUIDOS DOS BOT ES RBO_TECLA EQU 60 TEMPORIZADOR P TURBO DAS TECLAS D_MEM_DADO EQU 0x10 ENDERE O P LEITURA E GRAVA O NA MEM RIA DE DADOS D MEM PROG H EQU 0x08 ENDERE O P LEITURA E GRAVA O D MEM PROG L EQU 0x00 NA MEM RIA DE PROGRAMA de Ck de oo E ko ERA ok oe Xo UK XA E XA E DECLARAC O DOS FLAGs DE SOFTWARE X 0k oko ko 0 e E Xx ER X oo A DEFINI O DE FLAGS AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM HDEF INE TIPO MEMORIA FLAG 0 DEFINE A MEMORIA QUE ESTA SENDO UTILIZADA 1 MEMORIA DE PROGRAMA O gt MEMORIA DE DADOS ck EE ook o X Ao ELA ck ck Ck oo de Ck KO Ck
13. BANK1 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWE OVLW OVWE MOVLW MOVWF MOVLW MOVWF PORTA PORTB PORTC PORTD PORTE B 00101111 TRISA 00001111 TRISB L0011000 TRISC 00000000 TRISD 00000000 TRISE B 11011111 OPTION_REG B 01100000 INTCON B 00000001 PIEL LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO 1 DA RAM CONFIGURA I O DO PORTA CONFIGURA I O DO PORTB CONFIGURA 1 0 DO PORTC CONFIGURA 1 0 DO PORTD CONFIGURA 1 0 DO PORTE CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 28 TIMERO 1 1 CONFIGURA INTERRUP ES HABILITADA A INTERRUP O DE TIMERO HABILITA AS INTERRUP ES DE PERIF RICO CONFIGURA INTERRUP ES DE PERIFI RICOS 114 MOVLW MOVWF MOVLW MOVWF BANKO MOVLW MOVWF B 00000111 CMCON B 00000111 ADCON1 B 00110000 T1CON HABILITADA A INTER DESLIGA OS COMPARA CONFIGURA CONVERSO RUPC O DE TMR1 DORES R A D CONFIGURA PORTA E PORTE COMO I O DIGITAL SELECIONA BANCO 0 CONFIGURA TMR1 PRESCALER lt 1 8 DA RAM INCREMENTADO PELO CICLO DE M QUINA AS INSTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RES
14. ook E ko EE AR j CONSTANTES Uk ck We X RR we ck c ko OG o ko X DEFINI O DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN EQU 0 VAI MAX EQU 15 VA T FILTRO EQU 255 FI LOR M NIMO PARA O CONTADOR LOR M XIMO PARA O CONTADOR LTRO PARA BOT O E E E oo xo lt lt X ck ENTRADAS TE K K Ck o o EE X REA E CT RE DEFINIC O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO ENTRADA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 SDEFINE BOTAO1 PORTB 0 PO MEN 0 SDEFINE 301202 1 PO 2 0 RTA DO BOT O PRESSIONADO LIBERADO RTA DO BOT O PRESSIONADO LIBERADO ku ke Ao eoo 2 E A lt lt Kk oko desde 00 aku AS k sh SA DAS de k Uode c o oes SKU Sd O E ode oe oe ke sh DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO SA DA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 FDEFINE DSP_UNIDADE PORTB 7 PI e al 0 HDEFINE LINHA 4 PORTB 7 PI OM UI 0
15. ROTINA PARA MOSTRAR A ROTA O DO VENTILADOR NO LCD ck oA Kk o ck x ck A ko Ak ok o SR ESTA ROTINA ATUALIZA O VALOR DAS ROTA ES POR SEGUNDO DO VENTILADOR NO LCD BCF CLRF BCF OVLW CALL BSF OVF OVW OVF OVW OVLW RETURN We ck OO ko o ko E DE E ROTINA PARA lt e CAE E E E ESTA ROTINA CONSULTA UMA TABELA DE TEMPERATURA EM GRAUS CELSIUS BCF CALL MOVWF CALL MOVLW CALL BSF MOVF ADDLW CALL MOVF MOSTRA_RPS_LCD MOSTRA_RPS TEC_MATRICIAL RS 0XC7 ESCREVE RS CONT_VENT_HIGH W ACCbHI CONT VENT LOW W ACCbLO ACCaHI ET ACCaLO D divF ACCbLO W AJUSTE_DECIMAL CENTENA W 0x30 ESCREVE DEZENA W 0x30 ESCREVE UNIDADE W 0X30 ESCREVE DISPLAY MOSTRA_TEMP_LCD MOSTRA_TEMP TABELA_TEMPERATURA TEMP_CELSIUS AJUSTE_DECIMAL TEC_MATRICIAL RS OXCB ESCREVE RS CENTENA W 0X30 ESCREVE DEZENA W LIMPA FLAG DE ATUALIZACAO DA RPS DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 7 SELECIONA O DISPLAY P DADOS CARREGA ACCb COM VALOR DO CONTADOR CARREGA ACCa COM N MERO DE PALHETAS DO VENTILADOR CHAMA ROTINA DE DIVIS O
16. INTERRUP O lt Ok XK ck A XxX k xk XxX X RECUPERA STATUS RECUPERA W RETORNA DA INTERRUP O de ck ck ko A ko dd koX XA ok ROTINA DE CONVERS O BIN RIO DISPLAY AE ck cde e E SR ESTA ROTINA IR RETORNAR EM W O SIMBOLO CORRETO QUE DEVE SER O RETORNO J EST FORMATADO PARA AS CONDI ES DE LIGA O DO DISPLAY AO PORTD a f 3 g b e d ATIG CONVERTE MOVF ANDLW ADDWF INTENSIDADE W B 00001111 PCL F COLOCA INTENSIDADE EM W MASCARA VALOR DE INTENSIDADE CONSIDERAR SOMENTE AT 15 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 81 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW INICIO CLRF LRP LRF LRF aana BANK1 OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE BANKO GFEDCBA 00111111 0000110 B B
17. MOV CALI MOV CALI LW LW Vot ESCREVE ESCREVE ox ok ck ck dd RRA A ks A 0 LOOP PRINCIPAL CEA cR RR EE ok ck ko Wo Uk SO o AR A ROTINA PRINCIPAL FICA AGUARDANDO O FINAL DA CONVERS O A D E VERIFICANDO SE ALGUM DADO FOI RECEBIDO PELA USART BSF LOOP CLRWDT BTFSS GOTO BTFSC GOTO GOTO de ck X Ko MOSTRA A D ADCONO GO ADCONO GO FIM CONVERSAO AD PIRI RCOLE DADO RECEBIDO LOOP INICIA CONVERS O A D EXECUTADA APENAS UMA VEZ LIMPA WATCHDOG TIMER FIM DA CONVERS O SIM N O RECEBEU ALGUM DADO NA SERIAL SIM N O VOLTA P LOOP de oce cae dec cA Des s eo A NO DISPLAY E TRANSMITE de Wo wee ho X E Ko o E ESTA ROTINA MOSTRA O VALOR DA CONVERS O A D NO DISPLAY LCD TANTO EM DECIMAL COMO EM HEXADECIMAL O VALOR DA CONVERS O TAMB M TRANSMITIDO PELA USART AO FINAL A ROTINA REQUISITA UMA NOVA CONVERSAO A D FIM CONVERSAO AD MOSTRA VALOR DA CONVERS O A D EM DECIMAL X55 HAHAHA RARA lt lt MOVF CAL BCF MOV CALI BSF MOVF LW L ADD CAL MOVF LW Li ADD CAL MOVF LW L ADD CAL dur L
18. FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO N O VOLTA P VARRE SIM RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS 296 MOVLW 100 XORWF INTENSIDADE AQUE W BTFSS STATUS Z PODE INCREMENTAR PWM DO AQUECEDOR INCF INTENSIDADE_AQUE F SIM INCREMENTA INTENSIDADE AQUE N O MOVF INTENSIDADE AQUE W CARREGA INTENSIDADE AQUE NO WORK MOVWF mulplr CARREGA WORK EM mulplr MOVLW 20 MOVWF mulcnd CARREGA 10d EM mulcnd CALL mpy F CHAMA ROTINA DE MULTIPLICA O SWAPF L byte W ANDLW B 00110000 IORLW B 00001111 L OVWF CCP1CON RRF L byte W OVWFE CCPRIL ATUALIZA REGISTRADORES DO DUTY CYCLE DO M DULO CCP1 PWM DO AQUECEDOR OVF INTENSIDADE_AQUE W FAZ O AJUSTE DECIMAL DA INTENSIDADE CALL AJUSTE_DECIMAL DO PWM DO AQUECEDOR CLRF TEC_MATRICIAL DESATIVA TODAS AS LINHAS DO TECLADO RS SELECIONA O DISPLAY P COMANDOS MOVLW OXC1 COMANDO PARA POSICIONAR O CURSOR CALL ESCREVE LINHA 1 COLUNA 1 BSE RS SELECIONA O DISPLAY P DADOS MOVF CENTENA W ADDLW 0x30 FAZ AJUSTE ASCII DA CENTENA CALL ESCREVE ESCREVE VALOR NO LCD MOVF DEZENA W ADDLW 0x30 FAZ AJUSTE ASCII DA DEZENA CALL ESCREVE ESCREVE VALOR NO LCD MOVF UNIDADE W ADDLW 0x30 FAZ AJUSTE ASCII DA UNIDADE CALL E
19. ck X xk CONFIG CP OFF de CK de Ao eoo ES E A cA XXX de ck WA ES ES 0 ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DO REL GIO RTC COM COMUNICA O S HE E We ox ARA A Xo X AR We cu EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER EXPERI NCIA 19 REL GIO DE TEMPO REAL RTC X LIA AA 6 RARA A E NO UE SEI EE JE E A e PE VERS O 1 0 P DATA 14 04 2003 5 E E x X K ES mE dE ME MO NU UE EE LE NE NE M NE UE EE JE dec SR t e X X X E Wk X wo A 3 E Sk DESCRI O GERAL Xe E A ERIAL UTILIZANDO A MASTER I2C DO MICROCONTROLADOR REL GIO MOSTRADA NO DISPLAY LCD ck xXx Xx xk xk k XxX k KU XxX co QS Xx CONFIGURA ES PARA GRAVA O ks ck k Xx k ck xk XxX XxX XxX k xk XxX X ko GPD_QEF amp DEBUG OFF amp _LVP_OFF _WRT_OFF amp BODEN OFF amp PWRTE ON amp WDT ON amp XT OSC ENDC SDEFINE HDEF INE x TE TE CBLOCK 0X20 01 FLAG
20. gt ck BO RA ERA oko AR AR ESTA UMA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO EM WORK W DELAY MS MOVWF 1 MOVLW 250 MOVWF CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS 240 CLRWDT DECFSZ GOTO 2 DECFSZ TEMPO1 F GOTO 6 RETURN ERA 8 8 gt ROTINA DE ESCRITA Bo Oe X Ck A oe E RA oko oe ck A X ok cA e AE ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK ESCREVE MOVWF DISPLAY NOP BSF ENABLE GOTO 41 BCF ENABLE MOVLW 1 CALL DELAY MS RETURN de ICE RO ko ox o sh e PON W HEX x Xo A A K X ESTA ROTINA RECEBE AJUSTE DECIMAL MOVWF AUX CLRF UNIDADE CLRF DEZENA CLRF CENTENA MOVF AUX F BTFSC STATUS Z RETURN INCF UNIDADE F MOVF UNIDADE W XORLW OXOA BTFSS STATUS Z GOTO 43 CLRF UNIDADE INCF DEZENA F MOVF DEZENA W XORLW OXOA BTFSS STATUS Z GOTO 43 DEZENA INCF CENTENA F DECFSZ AUX F GOTO 14 RETURN ko kx ck e AJUSTE DECIMAL DEC CENTENA Ge Je LIMPA WDT PERDE TEMPO FIM DE TEMPOO N O VOLTA 2 INSTRU ES SIM
21. 00 X XxX XxX X DEFINI O DOS BANCOS DE RAM Ei Ok ck ok k Xk Xx Xk Xk k Xx XxX XxX XxX k xk XxX XxX k xk OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM BODEN OFF amp Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 55 e oes dede e ok A sk FLAGS INTERNOS de ck E RARE cA ce ck X e e ck o ko X DEFINI O DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA SDEFINE E FIM FLAGS 0 FLAG DE FIM DE TEMPO SDEFINE ST BT1 FLAGS 1 STATUS DO BOT O 1 HDEF INE ST BT2 FLAGS 2 STATUS DO BOT O 2 _INICIO _FILTRO S ck E 8 A ok oc ko CONSTANTES o ko oko 0 ck o o oA kk de DEFINI O DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA OK ks k ck k k k k xk X EQU EQU LS 255 VALOR INICIAL DO TIMER 1A VALOR DO FILTRO DOS BOT ES Q E E E ko oe oe DE Oeo X ve ENTRADA
22. ESTA ROTINA L UM DADO EEADR EEADR DADO LOW 00 FSR FLASH_PROGRAM_WRITE_2 EEDATA INDF W EEDATA FSR F INDF W EEDATH FSR F EECON1 EECON1 EEPGD EECON1 WREN 0x55 EECON2 OXAA EECON2 EECON1 WR EECON1 WREN EEADR EEADR F B 00000011 EEADR W STATUS Z DIFERENTE DE ZERO FLASH_PROGRAM_WRITE_2 0x20 ROTINA DE LEITURA X Moo AX ck ck Ck ode RA Ck Ck ck o eo E koX A ok x X ALTERA P BANK DO REGISTRADOR EEADR SALVA ENDERECO EM EEADR CARREGA ENDERECO NOS REGISTRADOS CORRETOS DO BANCO 2 DA RAM A PARTIR DOS REGISTRADORES DE USU RIO MAPEADOS NO BANCO 0 DA RAM CARREGA NO W ENDERECO DO REGISTRADOR SALVA O ENDERECO DO REGISTRADOR NO FSR ALTERA P BANK DO REGISTRADOR EEDATA CARREGA NO W O VALOR A SER SALVO SALVA DADO A SER GRAVADO EM EEDATA INCREMENTA PONTEIRO CARREGA NO W O VALOR A SER SALVO SALVA DADO A SER GRAVADO EM EEDATH INCREMENTA PONTEIRO ALTERA P BANK DO REGISTRADOR EECON1 APONTA P MEM RIA DE PROGRAMA HABILITA ESCRITA ESCREVE 0X55 EM EECON2 OBRIGAT RIO ESCREVE OXAA EM EECON2 OBRIGAT RIO INICIA ESCRITA N O OPERA DESABILITA ESCRITAS NA MEM RIA ALTERA P BANK DO REGISTRADOR EEADR INCREMENTA ENDERECO CARREGA MASCARA NO WORK WORK FICA COM APENAS OS LTIMOS DOIS BITS DO DEVE ESCREVER MAIS ALGUM DADO WORK SIM VOLTA PARA ESCRITA N O VOLTA P BANKO
23. Hd RR E ESTE SOFTWARE EST PREPARADO PARA LER QUATRO BOT ES E TOCAR O BUZZER COM DURA O VARI VEL CONFORME A TECLA PRESSIONADA AL M DE ACENDER O LED INDICANDO AS TECLAS PRESSIONADAS AS TECLAS DA LINHA 4 DEVEM SER UTILIZADAS PARA TOCAR O BUZZER RAE u s 000 000000 ER A oko koc Wk d ko S pez CONFIGURA ES PARA GRAVA O 000 ook RO BM DE 0008 lt lt Xo S CONFIG CP OFF amp _CPD_OFF amp _DEBUG_OFF _LVP_OFF amp _WRI_OFF amp _BODEN_OFF PWRTE ON amp _WDT_ON amp XT OSC NR G A e A o CK AA AE e ko X ok AE e ko de o X Xo DEFINIC O DAS VARI VEIS ERE G deo A A X ko o ko e de ck oo RA ESTE BLOCO DE VARI VEIS EST LOCALIZADO NO FINAL DO BANCO 0 A PARTIR DO ENDERECO 0X70 POIS ESTA LOCALIZAC O ACESSADA DE QUALQUER BANCO FACILITANDO A OPERAC O COM AS VARI VEIS AQUI LOCALIZADAS CBLOCK 0X70 POSIC O COMUM A TODOS OS BANCOS W TEMP REGISTRADOR TEMPOR RIO PARA W STATUS TEMP REGISTRADOR TEMPOR RIO PARA STATUS STATUS BOTOES REGISTRADOR PARA ARMAZENAR O STATUS DOS BOT ES FILTRO BTO FILTRO PARA BOTAO 0 FILTRO BT1 FILTRO PARA BOTAO 1 FILTRO BT
24. CCP 102 4 0 D FILTRO J IGUAL A ZERO FUN O JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO CARREGA CCPR2L COM OXFF SETA OS BITS 5 e 4 LSB DO DUTY CYCLE R2L CCP2CON lt 5 4 gt Tosc TMR2 Prescale dock 2508 6 92ms UTY CYCLE 99 90 DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 8 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE 100 188 CLRF DISPLAY LIMPA BARRAMENTO DE DADOS GOTO VARRE VOLTA P VARREDURA DOS BOTOES E xk 5 xk pn FIM DO PROGRAMA ko RARA Ck S oko dk ko A RO X ko A AER END FIM DO PROGRAMA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 189 Dicas e Coment rios Para calcular o valor que deve ser carregado nos registradores que controlam o tempo do pulso em n vel alto duty cycle a partir de um determinado valor de duty cycle expresso em porcentagem pode se utilizar a formula a seguir CCPRx PR2 1 x 4 x Porcentagem desejada Vejamos como exemplo o valor de 50 adotado nesta experi ncia A porcentagem desejada de 50 e o valor de PR2 255 assim
25. ko Ko 0k X0 AX WA O o LINHAS INICIALIZACAO DISPLAY BCF RS OVLW 0x30 CALL ESCREVE OVLW 23 CALL DELAY_MS OVLW 0X30 CALL ESCREVE OVLW 0X30 CALL ESCREVE OVLW B 00111000 CALL ESCREVE OVLW B 00000001 CALL ESCREVE OVLW gd CALL DELAY_MS OVLW B 00001100 CALL ESCREVE OVLW B 00000110 CALL ESCREVE RAM DO BANCO 0 APO A P LIMPA A INC COMPARA O PONTEIRO COM A LT POS INDO DE 0X20 A NTA O ENDERECAMENTO INDIRETO PARA RIMEIRA POSI O DA RAM POSI O REMENTA O PONTEIRO P A PR X POS 1 J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM d X XC CONFIGURA ES INICIAIS DO DISPLAY C ko oe OX CX Uk X EEE X 8 ko ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 Ok ck kk k X R ROTINA DE ESCRITA A lt lt u A e E S ox oe e XX ok Cl ka ko ko ck ok ko ko ko Xx ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES LINHA 1 A D por RC LINHA 2 T CARGA MOVLW 0x80 CALL ESCREVE BSF RS MOVLW CALL ESCREVE MOVLW CALL ESCREVE MOVLW Ep CALL ESCREVE MOVLW 2 CALL ESCREVE RAO x50us SEL ESC INI
26. 5 1 30 RD7 2 gt CJ2 RD6 ES o RD5 8 39 RD4 ZZ 20 00 2 3 2 4MHz RD2 21 RD1 H2 Rc 26 ES PIC16F877A 220R LIN4 SA13 SA14 SA15 SA16 o COL1 COL2 COL3 COL4 10K gt 10K S10K gt 10 3 12 CJ3 25k x L10 d Coluna 1 RBO T Lo 4 Bd RC1 22k 7 NA p 3 2 CJ1 Leds especiais RCO RC1 RC2 Es OO x 2 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 51 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA l Os PRESCALER TMRO gt 1 64 HABILITA INTERRUP O DE TMRO HABILITA DISPLAY DA UNIDADE E LINHA 4 DO TECLADO MATRICIAL CARREGA TEMPO COM VALOR INICIAL F_FIM 0 i Sim DESLIGA INTERRUP AO E APAGA O LED Mm 0 ATUALIZA DISPLAY RECARREGA FILTRO DE DEBOUNCE BOT O 1 Sim PRESS BOT O 2N Sim PRESS N o 52 FIM FILTRO DEBOUNCE INTERRUP O LIGADA INICIALIZA TMRO COM 131d 256d 125d 131d Prescale 1 64 Y Ciclo de M quina 1us TMRO 125 64us 8ms INICIALIZA TEMP1 s 2 ACENDE LED LIGA _ INTERRUPGAO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 53 INT TMRO SALVA CONTEXTO LIMPA FLAG DA INTERRUPGAO Y RECARREGA TMR0 COM 131d RE
27. X 125 do ku o X Ok oe gt AE cA ck OK 0X Uk AS A gt ESTA ROTINA IR CONTAR O TEMPO E QUANDO PASSAR 1 SEGUNDO A VARI VEL TMRO X 125 TEMP1 LIMPA FLAG DA INT REINICIA TMRO DECREMENTA CONTADOR AUXILIAR ACABOU N O SAI SEM A O SIM REINICIALIZA TEMPO AUXILIAR J CHEGOU AO FIM SIM ENT O DECREMENTA O TEMPO N O DECREMENTA TEMPO ACABOU N O SAI DA INTERRUC O SIM ARCA FIM DO TEMPO SAI DA INTERRUP O Ae ck qe A E 6 o FIM DA INTERRUPCAO STATUS TEMP W STATUS W TEMP F W TEMP W b g TEMPO W B 00001111 PCL F FEDCBA 0 O O O 0 Lp e o Ot o o Ot UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ e e A ooo koX dd ok o oe I XD UE SM E NEG XE NU M ME E E GE GEIL JIGLIE MEE GE XD IE MEE RECUPERA STATUS RECUPERA W RETORNA DA INTERRUP O Be E X X eo X eo X HE E ROTINA DE CONVERS O BIN RIO gt DISPLAY de we decode we ko 0X ok Ok X Ko oko ode ko ck C Ok vo XA
28. N O SINCRONIZADO COM CLOCK INTERNO CONTADOR HABILITADO CONFIGURA TMR2 TMR2 HABILITADO POSTSCALE 1 10 PRESCALE 1 4 ZERA PWM DO CCP2 RC1 VENTILADOR CONFIGURA CCP2 P PWM ZERA PWM DO CCP1 RC2 AQUECEDOR CONFIGURA CCP1 P PWM AS INSTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT ISTO EVITA PROBLEMAS NO START UP DO PIC RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 293 EC E de OX oes coke oe E e oe ck eo e ck ck ck ck e E ok ko oko CH INICIALIZA O DA RAM ko cA e ck ck ck KO oko AAA ko Wk o CH ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 MOVLW MOVWF LIMPA_RAM MOVF XORLW BTFSS GOTO 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA_RAM FAN AE AA E AAA E WX X CONFIGURA ES INICIAIS DO DISPLAY ck 6 A UE CEE Xo OR ox X MH ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS INICIALIZACAO DISPLAY
29. AR SR 4 ENTRADAS A o E A ko X AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAC O E FUTURAS ALTERA ES DO HARDWARE EFINE BOTAO 0 PORTB 0 ESTADO DO BOT O 0 O lt LIBERADO 1 gt PRESSIONADO EFINE BOTAO 1 PORTB 1 ESTADO DO BOT O 1 0 gt LIBERADO 1 gt PRESSIONADO EFINE BOTAO 2 PORTB 2 ESTADO DO BOT O 2 0 gt LIBERADO 1 gt PRESSIONADO EFINE BOTAO 3 PORTB 3 ESTADO DO BOT O 3 0 gt LIBERADO 1 gt PRESSIONADO db 8 De E E 8 e oo e ck ko A o o X Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 199 ko x oc co o AS SA DAS DEVEM SER ASSOCIADAS FUTURAS ALTERAC ES DO HARDWARE DEFINE DEFINE DEFINE DEFINE SDEFINE DISPLAY RS ENABLE TEC MATRICIAL LINHA 4 PORTD PORTE 0 PORTE 1 PORTB PORTB 7 de Ck ok ES AE x A VETOR DE RESET DO MICROCONTROLADOR A E MILI 9 IE EN D AE MED NE EE E MD GEM NM XL NL E ND E POSI O INICIAL PARA EXECU O DO PROGRAMA ORG GOTO 0x0000 CONFIG de ck Uo e Ao
30. 0096 oo E E CONFIG CP OFF amp CPD OFF amp DEBUG OFF amp 4 oc X LVP OFF amp WRT OFF 6 WDT OFF amp XT OSC AR AR O eo A 8 e p ko X oe ok E VARI VEIS ko ck ks ok k ck xk xk xk XxX ko DE TODAS AS VARI VEIS UTILIZADAS de o ko DEFINI O DOS NOMES E ENDERE OS PELO SISTEMA CBLOCK 0x20 W TEMP STATUS TEMP TEMPO FLAGS TEMPI TEMP2 FILTROI FILTRO2 ENDC k kk k ENDERECO INICIAL DA MEM RIA DE USU RIO REGISTRADORES TEMPOR RIOS PARA INTERRUPCOES ESTAS VARI VEIS NEM SER O UTI LIZADAS ARMAZENA O VALOR DO TEMPO ARMAZENA OS FLAGS DE CONTROLE REGISTRADORES AUXILIARES FILTROS DOS BOT ES FIM DO BLOCO DE MEM RIA koe o Ok ok 20 MEDE XS MK Wo DEFINIC O DAS VARI VEIS INTERNAS DO PIC Ke gt e Ck oe ok ko ko oko ck ees oo O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS DE REDIGITACAO lt 16 877 gt 1 SEM A NECESSIDADE MICROCONTROLADOR UTILIZADO ck k
31. DECREMENTA INTENSIDADE_VENT MULTIPLICA INTENSIDADE_VENT POR 10d E ATUALIZA PWM CCP2 282 MOSTRA_RPS_LCD LIMPA FLAG DE ATUALIZA O CALCULA AS ROTA ES POR SEGUNDO DO VENTILADOR DIVIDE O CONTADOR PELO NUMERO DE PALHETAS FAZ O AJUSTE DECIMAL E MOSTRA AS ROTA ES NO LCD RETURN MOSTRA TEMP LCD LIMPA FLAG DE ATUALIZA O CONSULTA TABELA PARA CONVERTER AS UNIDADES DE A D EM TEMPERATURA GRAUS CELSIUS aque uu FAZ O AJUSTE DECIMAL E MOSTRA A TEMPERATURA EM GRAUS CELSIUS NO LCD y TRANSMITE O VALOR DA TEMPERATURA PELA USART RETURN INTERRUP O SALVA CONTEXTO LIMPA FLAG DA INTERRUP O PASSOU 1 SEG Sim RECERREGA CONTADOR DE 1 SEGUNDO SALVA O VALOR DO CONTADOR DO TMR1 EM CONT VENT ZERA CONTADORES DO TMRI1 y SETA FLAG P ATUALIZAR LCD SALVA O VALOR DA CONVERSAO A D EM TEMPERATURA INICIA UMA NOVA CONVERSAO A D SETA FLAG P ATUALIZAR LCD RECUPERA CONTEXTO RETFIE Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 283 e O EI 8 DL ND E EE ND ONE GL E E ONE M EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER 8 EXPERI NCIA 20 SISTEMA DE TEMPERATURA E TAC METRO X ke ck de d
32. PORTA 4 PORTD PORTB 7 XK kk k k xk PINO PARA ATIVAR GRUPO DE 8 LEDS 1 LEDS ATIVADOS 0 LEDS DESATIVADOS SEGMENTOS DOS DISPLAYS PINO P ATIVAR LINHA 4 TECLADO MATRICIAL 0 LINHA 4 ATIVADA 1 LINHA 4 DESATIVADA KE E x o Ko ck oko e dd ko ko o o ok AR VETOR DE RESET DO MICROCONTROLADOR POSI O INICIAL PARA EXECU O DO ORG 0x0000 GOTO CONFIG X ck E o Xo X kk k k xk X VETOR dd oo oe ck ce AEREA Ak 7k EA A ook AXE PROGRAMA ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGI O DESTINADA S INTERRUPC ES de hk o ck A o o o X 00k Na DE INTERRUPCAO TE OK 8 ok O3 RA CX Ko E A AR POSI O DE DESVIO DO PROGRAMA QUANDO UMA INTERRUP O ACONTECE ORG 0x0004 ENDERE O DO VETOR DE INTERRUP O MUITO IMPORTANTE QUE OS REGISTRADORES PRIORIT RIOS AO FUNCIONAMENTO DA M QUINA E QUE PODEM SER ALTERADOS TANTO DENTRO QUANTO FORA DAS INTS SEJAM SALVOS EM REGISTRADORES TEMPOR RIOS PARA PODEREM SER POSTERIORMENTE RECUPERADOS SALVA CONTEXTO MOVWF WORK TEMP SWAPF STATUS W MOVWF STATUS TEMP MOVF FSR W MOVWF FSR TEMP MOVF PCLATH W MOVWF PCLATH TEMP CLRF PCLATH
33. e X o AE ALTERA P BANK1 CARREGA ACK TRANSMITE VOLTA P BANKO RETORNA NACK OUT dec Ce de Ao eoe e ke E E E desde 8 Xe AS 00 AS 0 ESTA ROTINA ENVIA UM NACK OUT PARA O BARRAMENTO 12C SSPCON2 ACKDT SSPCON2 ACKEN ck ck ck XxX kk ROTINA PARA TESTAR SE O ACK FOI RECEBIDO ck Ok ko k Xk k k k k kk X TA O BIT DE ACK RECEBIDO NO REGISTRADOR SSPCON2 PARA TANTE DO SOFTWARE A ROTINA COPIA ESTE FLAG NO FLAG F ERRO PRESENTE NO BANCO 0 DA RAM POIS O REGISTRADOR SSPCON2 ENCONTRA SE NO BANK1 ESTA ROTINA TEST FACILITAR O REST TESTA ACK BANK1 BTFSC GOTO BANKO BCF RETURN SSPCON2 ACKSTAT RECEBEU NACK F ERRO RECEBEU_NACK BANKO BSF RETURN F_ERRO A MEM NEL ME O LEM 89 LEITURA DA EEPROM SERIAL EXTERNA A MT ko ok oko Xo Ok ch d x ESTA ROTINA L A MEM RIA SERIAL EXTERNA O ENDERECO DEVE SER PASSADO PELA VARI VEL ENDERECO O VALOR LIDO RETORNADO EM BUFFER CASO ALGUM ERRO DE LEITURA OCORRA A ROTINA DESVIA P I2C ERRO I2C EEPROM READ BANK1 ALTERA Bt XS essc P BANK1
34. we cA ORO dece ke e i OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA DEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM DEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM Ok xk k 3 Xk X X Xx SS k XxX XxX k k XxX E X 2 CONSTANTES INTERNAS ECH A ok ck ck AAA ok o oe oe AA AA e ck HR HH A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O FILTRO_TECLA EQU 200 FILTRO P EVITAR RUIDOS DOS BOT ES 126 SDEFINE E ko XX A oe ck de oko e o de E ko ko de AS F DECLARA O DOS FLAGs DE SOFTWARE E ERA E ko x ok o RA Ko oko ko A ck oko dk o e X A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM TELA PRINCIPAL FLAG 0 i r e A x 8 c gt AAA ER AE AS ENTRADAS DEVEM SER ASSOCIADAS FUTURAS ALTERAC ES DO HARDWARE DEF INE BOTAO_0 PORTB 0 DEF INE BOTAO_1 PORTB 1 DEFINE BOTAO_2 PORTB 2 DEF INE BOTAO_3 PORTB 3 Ck oc A eoo A de u 0 X
35. E AFA 008 9 ck NESTA ROTINA S O INICIALIZADAS AS PORTAS DE 1 0 DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A M QUINA E AGUARDA O ESTOURO DO WDT 292 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BANKO MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF CLRF MOVLW MOVWF CLRF MOVLW MOVWF BTFSC GOTO B 00100100 TXSTA 29 SPBRG 249 PR2 10010000 RCSTA B 01001001 ADCONO TMR1L TMR1H B 00000111 T1CON B 01001101 T2CON CCPR2L B 00001111 CCP2CON CCPRIL B 00001111 CCP1CON E COMECA NOVAMENTE STATUS NOT TO RA2 RA4 E RA5 COMO 1 0 DIGITAL PORTE COMO I O DIGITAL JUSTIFICADO ESQUERDA 8 BITS EM ADRESH E 2 BITS EM ADRESL Vref VDD 5V Vref GND 0V CONFIGURA USART HABILITA TX MODO ASSINCRONO TRANSMISS O DE 8 BITS HIGH SPEED BAUD RATE ACERTA BAUD RATE 9600bps CONFIGURA PER ODO DO PWM T PR2 1 4 Tosc TMR2 Prescale T 249 1 4 250ns 4 T 1 000ms gt 1 000Hz 1KHz SELECIONA BANCO 0 DA RAM CONFIGURA USART HABILITA RX RECEP O DE 8 BITS RECEP O CONT NUA DESABILITA ADDRESS DETECT CONFIGURA CONVERSOR A D VELOCIDADE gt Fosc 8 CANAL 1 M DULO LIGADO ZERA CONTADOR DO TMR1 CONFIGURA TMR1 PRESCALE DE 1 1 TMR1 INCREM PELO PINO
36. ck ko ko ko ko o X ok E ko ko ko X X r ROTINA P SINALIZAR FRRO NA I2C Roe o Bd o CR A TO kul kuu N O Sh ESTA ROTINA SOMENTE EXECUTA CASO ALGUM ERRO DE LEITURA GRAVA O OCORRA A ROTINA ENVIA UM STOP BIT PARA FINALIZAR A COMUNICA O COM A MEM RIA SERIAL ENVIA UMA MENSAGEM DE ERRO AO DISPLAY E AP S 1s RETORNA TELA ALTERA P BANK1 INICIA STOP BIT VOLTA P BANKO RETORNA x RR XxX Se CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 271 E ko AXE eE ck ck 0 k xk xk k XxX k ko NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA AS VARI VEIS DE RAM E AGUARDA O ESTOURO DO WDT CONFIG CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE BANK1 OVLW B 00101111 OVWF TRISA OVLW B 00001111 OVWF OVLW B 10011000 OVWF TRISC OVLW B 00000000 OVWF TRISD OVLW B 00000000 OVWF TRISE OVLW B 11011111 OVWF OPTION REG E E OVLW B 00000000 OVWF 7
37. RE PINO DISPLAY DA UNIDADE 1 gt DISPLAY ATIVADO O gt DISPLAY DESATIVADO PINO PARA ATIVAR LINHA 4 DO TECLADO MATRICIAL 1 gt LINHA ATIVADA O lt LINHA DESATIVADA DEFINE PINO DA LAMPADA 0 L MPADA APAGADA 1 L MPADA ACESA X e ck ok oko Cko ko OA oe ck ok ko 0k m VETOR DE RESET ke OO E lt ks k 00 k ORG 0x00 ENDERE O INICIAL DE PROCESSAMENTO GOTO INICIO A DE E UE 0 4 ea ode Ok IN CIO DA INTERRUPC O dc ado E DE X E 2 Ge de ooo DE s cock oko oo E X AS INTERRUP ES N O SER O UTILIZADAS POR ISSO PODEMOS SUBSTITUIR TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ESTE SISTEMA N O OBRIGAT RIO ORG 0x04 MOVWF W TEMP SWAPF STATUS W MOVWF STATUS TEMP BTFSS INTCON TOIF GOTO SAI INT MAS PODE EVITAR PROBLEMAS FUTUROS ENDERE O INICIAL DA INTERRUP O SALVA W EM W TEMP SALVA STATUS EM STATUS TEMP INTERRUP O DE TMRO N O SAI SE AC O SIM 80 EXA A ck AE EA e ELA Ak oke dk ko ko e SR TRATAMENTO
38. BIT 5 DO REGISTRADOR LINHA ATIVA REPRESENTA A LINHA 2 DO TECLADO 4x4 1 LINHA EST ATIVADA 0 LINHA EST DESATIVADA BIT 6 DO REGISTRADOR LINHA ATIVA REPRESENTA A LINHA 3 DO TECLADO 4x4 1 LINHA EST ATIVADA 0 LINHA EST DESATIVADA BIT 7 DO REGISTRADOR LINHA ATIVA REPRESENTA A LINHA 4 DO TECLADO 4x4 1 LINHA EST ATIVADA 0 LINHA EST DESATIVADA Je ceo oe Ao oe NT o o X ook ok X Kk oko X Xe owes E TD e Ao Xs X AO ko ENTRADAS lt lt ku x ko ook oo de X 0e Ao X ks X AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMA O E FUTURAS ALTERA ES DO HARDWARE DE ENTRADA DA COLUNA 1 ALGUMA TECLA DESTA COLUNA EST PRESSIONADA TECLA DESTA COLUNA EST PRESSIONADA DA ALGUMA TECLA NENHUMA TECLA COLUNA 2 DESTA COLUNA EST PRESSIONADA DESTA COLUNA EST PRESSIONADA COLUNA 3 DESTA COLUNA EST PRESSIONADA DESTA COLUNA EST PRESSIONADA ENTRADA ALGUMA TECLA NENHUMA TECLA COLUNA 4 DESTA COLUNA EST PRESSIONADA DESTA COLUNA EST PRESSIONADA X e ck ook kd ko X oko ko ko ko X Se SA DAS 0k ck ok ok k ko xk k k XxX k xk XxX Xx Se A NOMES PARA FACILITAR A PROGRAMACAO E
39. ESTE PROGRAMA UTILIZA NENHUM FLAG DE USU RIO de ck We de o eoe ko x ko oko X Xe woe X e Xo X CA des cx m ENTRADAS d X EC A oko X A ko ko ck Ck ko Ck Ck oo Cko o ooo de ko X Ak WX AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAC O E FUTURAS ALTERA ES DO HARDWARE DEFINE BT UP STATUS BOTOES 1 ESTADO DO BOT O 1 0 LIBERADO 1 PRESSIONADO DEFINE BT DOWN STATUS BOTOES 2 ESTADO DO BOT O 2 0 LIBERADO 1 gt PRESSIONADO DEFINE BT START STOP STATUS BOTOES 3 ESTADO DO BOT O 0 LIBERADO 1 PRESSIONADO Wok JE co Wo C C BODE 6 E 5 SA DAS x 5 de RAR E RAEE Woo 6 qe SP AS SA DAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMA O E FUTURAS ALTERA ES DO HARDWARE HDEF INE ESTADO TIMER LEDS 0 LED DE ESTADO DO TIMER FUNCIONA TAMB M COMO FLAG 1 gt TIMER CONTANDO O gt TIMER PARADO SDEFINE MUX PORTB MUX PARA ACIONAMENTO DOS DISPLAYS DE RB4 AT RB7 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 109 HDEF INE C LEDS HDEF INE SEGMENTOS HDEFINE LINHA_4 HER ERA ERA
40. LINHA 1 JUMPERS RA5 LINHA 2 T CARGA x6us MOVLW 0x81 COMANDO PARA POSICIONAR O CURSOR CALL ESCREVE LINHA 0 COLUNA 1 BSF RS SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE JUMPERS RA5 MOVLW N CALL ESCREVE MOVLW CALL ESCREVE 170 Q Q Q Q Q Q Q Q Q Q Q POPOPOPOPOPOPOPOPOPOPOP Q BCF MOVI CALI BSF Q Q Q Q Q Q Q Q Q Q Q Q Q POPOPOPOPOPOPOPOPOPOPOPOPOPOPOP Q Q Q ROTINA PARA DESCARREGAR O CAPACITOR DE LEITURA DO CONVERSOR A D A E oe co oo CONVERTE O PINO DO MICROCONTROLADOR EM SA DA COM N VEL L GICO E O CAPACITOR SE DESCARREGUE EM SEGUIDA O PINO CONVERTIDO ENTRADA PARA PERMITIR QUE O CAPACITOR SE CARREGUE ck XX ESTA ROTINA E AGUARDA QU NOVAMENTE E s SESESESESESESESESESES lt LW LW LW LW LW LW LW LW LW LW LW LW LW SESESESESESESESESESESESESESES lt LW LW LW LW LW LW LW LW LW LW LW LW LW LW LW LW ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE RS OXCO ESCREVE RS VS ESCREVE ESCREVE EA ESCREVE Lar ESCREVE ESCREVE n ESCREVE VAS E
41. M QUINA E AGUARDA O ESTOURO DO CONFIG CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE BANK1 OVLW B 00101111 OVWFE TRISA OVLW B 00001111 OVWE TRISB OVLW B 10011000 OVWE TRISC OVLW B 00000000 OVWE TRISD OVLW B 00000000 OVWF TRISE OVLW B 11011011 OVWF OPTION_REG OVLW B 00000000 OVWF INTCON OVLW B 00000111 OVWF CMCON OVLW B 00000100 OVWF ADCON1 MOVLW B 00100100 MOVWF TXSTA MOVLW 25 MOVWF SPBRG BANKO MOVLW B 10010000 MOVWF RCSTA MOVLW B 01000001 MOVWF ADCONO WDT LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO 1 DA RAM CONFIGURA 1 0 DO PORTA CONFIGURA 1 0 DO PORTB CONFIGURA 1 0 DO PORTC CONFIGURA 1 0 DO PORTD CONFIGURA 1 0 DO PORTE CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 1 8 TIMER 1 1 CONFIGURA INTERRUPC ES DESABILITA TODAS AS INTERRUP ES DESLIGA OS COMPARADORES CONFIGURA CONVERSOR A D 1 E COMO ANAL GICO RA2 RA4 E RA5 COMO I O DIGITAL PORTE COMO I O DIGITAL JUSTIFICADO ESQUERDA 8 BITS EM ADRESH E 2 BITS EM ADRESL Vref VDD 45V Vref GND 0V CONFIGURA USART HABILITA TX MODO ASSINCRONO TRANSMISS O DE 8 BITS HIGH SPEED BAUD
42. lt E We e e e Xo AA Ck oc AS SA DAS DEVEM SER ASSOCIADAS FUTURAS ALTERA ES DO HARDWARE HDEF INE DISPLAY PORTD HDEF INE RS PORTE 0 HDEF INE ENABLE PORTE 1 TEMOS TAMB M A SA DA DE TX DA USART ENTRADA DE RX DA USART 0 ua E E E E SA DAS ks ok 8 dese Xo des e ode Xe hee e 0 A NOMES PARA FACILITAR A PROGRAMACAO E BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 gt DADO O gt COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA NOVAMENTE ESTA SA DA N O NECESSITA SER DECLARADA POR M PARA FACILITAR O ENTENDIMENTO DO HARDWARE VAMOS DECLARAR ESTA SA DA NORMALMENTE SDEFINE TXUSART PORTC 6 de ke E eo AAA Aa ko E ode A ko SA DA DE TX DA USART VETOR DE RESET DO MICROCONTROLADOR ck ecc oo E ov E ck OX o oo ck Ck MR ok ck STAR o x dx POSI O INICIAL PARA EXECU O DO PROGRAMA ORG 0x0000 GOTO CONFIG MR 0 8 eo E eo ode ku C oso X6 Ck ENDERE O DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGI O DESTINADA AS ROTINAS SEGUINTES pr ROTINA DE DELAY DE 1MS AT 256MS 8
43. ooo dde Ok E e Ok o Ke ko Ok A ko ko de 7 E S O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITA O HINCLUDE P16F877A INC MICROCONTROLADOR UTILIZADO ck ck Xx ko 0 xk k X XxX XxX k k k k XxX XxX k k Xx X DEFINI O DOS BANCOS DE RAM E ck A XX 0e ok 0k oko ode ook oe ode ko e X oko e ck e de oe ok o OS PSEUDOS COMANDOS BANKO E BANK1 ENTRE OS BANCOS DE MEM RIA AQUI DEFINIDOS AJUDAM A COMUTAR SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM ok 8 e e Ck ok ck ko e A ko Ck e X ko ko e Se Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 79 FLAGS INTERNOS TR DEFINI O DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA HDEF INE ST BT1 FLAGS 0 HDEF INE ST BT2 FLAGS 1 gt de dX STATUS DO 80180 1 STATUS DO BOT O
44. 1 8 AR ko gt lt oko o vk o X DEFINIC O DOS BANCOS DE RAI X ko ok ck ko ok ERA A Ao 7 X CAO A A Rd A OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCE STATUS RPO SELECIONA BANKO DA MEMORIA RAM Ee AE AA E E O X0 E OK Ae MH CONSTANTES INTERNAS ckc CH A ALE EE CE AE de AA A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O FILTRO_TECLA EQU 200 FILTRO P EVITAR RUIDOS DOS BOT ES TURBO_TECLA EQU 70 TEMPORIZADOR P TURBO DAS TECLAS TMR1_HIGH EQU HIGH 65536 62500 TMR1 LOW EQU LOW 65536 62500 VALOR PARA CONTAGEM DE 62500 CICLOS DE CONTAGEM DO TMR1 PROGRAMADO P PRESCALER DE 1 8 koc X cec 8 Aso u E X ee DECLARAC O DOS FLAGs DE SOFTWARE deo c oko dE ko de oe oe E dk Ok ok X ko oko oo ok e Xo RAE Xe oe ok ck A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM
45. DEBUG OFF amp _LVP_OFF _WRT_OFF E dE NE MEE EX E E E NL ND GE EE ME NE GL E E E NE EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER amp lt A A X ks ks k k xk DE UM TIPO DE E E kk ka kk kx BODEN OFF PWRTE ON amp WDT ON amp XT OSC DE REDIGITACAO CBLOCK 0 TEMPOI TEMPOO AUX ENDC SDEFINE BANK1 SDEFINE BANKO e A MEE Oo oe deo de e AA FE AA DEFINIC O DAS VARI VEIS INTERNAS DO PIC CONTADOR AD OS PSEUDOS COMANDOS ENTRE OS BANCOS DE MEM RIA BSF BCF lt 16 877 gt 1 FILTRO BOTOES MICROCONTROLADOR UTILIZADO DEFINIC O DAS VARI VEIS POS CONI FIL CONI C O INICIAL DA RAM ADORES P DELAY TRO PARA RUIDOS DOS BOT ES TADOR PARA CONVERSOR A D REGI X X A AX 8 ck Ov ooo Ko OK E 0X 0 Oe ok e 8 ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE XA A Xo ko AX e X oko AAA EE oko de AR Xo ko x oe X AX AS Ko OX RI M A ROA AAA e
46. Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 139 AJUSTE DECIMAL SALVA ARGUMENTO EM AUX ZERA UNIDADE ZERA DEZENA Testa se o valor a ser convertido igual a zero INCREMENTA UNIDADE ZERA UNIDADE INCREMENTA DEZENA DECREMENTA AUXILIAR Testa fim da convers o RETURN 140 e O Wee E 8 60k da ke e dese oko 7 oko EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER 8 EXPERI NCIA 11 CONVERSOR A D X o ko de de ok c x A ck ve ko A Cho ko ok de E 0 ko ok RR VERS O 1 0 DATA 14 04 2003 eco ck o ck ko A E 0X ko ko ko d Ao E E SR OA AG NP MA ONE A A A dede X A O e ko RR ok DESCRI O GERAL de 3 RA 0k 8 es EA A X A X JW ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DO M DULO DE CONVERS O ANAL GICO DIGITAL INTERNO DO PIC CONVERTIDO O VALOR ANAL GICO PRESENTE NO PINO RAO DO MICROCONTROLADOR SENDO QUE ESTE VALOR PODE SER ALTERADO ATRAV S DO POTENCI METRO DA PLACA O VALOR DA CONVERS O A D AJUSTADO NUMA ESCALA DE 0
47. topas aS 99 CAP TULO 11 EXPERI NCIA 9 VARREDURA DE DISPLAYS E UTILIZA O DO TIMER 1 100 0 100 DESGRIGAO Ha recte AS a 100 ESQUEMA ELETRICO Ze et us So 102 FLUXOGRAMA Qe aitor Al e 0 0 ao 103 iia 108 DIGAS E COMENTARIOS 2 24 ie ree o eem erac PL o eb e ER Dk c o ete Den t br 118 6605 e E E tates tute ettet I eife 118 CAP TULO 12 EXPERI NCIA 10 DISPLAY DE CRISTAL L QUIDO 119 OBJETIVO pM M MEE 119 DESCRI O sre ue M I UN LED eM EIL M ALIUD M MILI Er MS 119 ESQUEMA EL TRICO rca octo e e Deed ertet P Peto ete ecce eB tet RG SOL 120 std ida 121 CODIGO tt E bar e E EAE e ral ato 126 DICAS EICOMENT RIOS muii aletas eo c or VERE ie Ee Loo c ete Cree Ga RE RU as 135 EXERC GIOS PROPOSTOS o Se eere Er eet 135 CAP TULO 13 EXPERI NCIA 11 CONVERSOR A D testes ameet sesenta 136 OBJETIVO PIN DELLI TU 136 DESCRI O rco tette A e e ct ooa s 136 ESQUEMA ELETRICO c EE 137 FLUXOGRAMA vi rete 0 8 ati 138 A E E EAE E E EE ET E E E E 141 DICAS ica 000 iba aa 149 EXERC CIOS PROPOSTOS uentus n suben 149 CAP TULO 14 EXPERI NCIA 12 CONVERS O A D VIA RC J 150 0 E E SET 150 pizzes 150 ES
48. 8 DE TE de Ceo AAA o bh E A LOOP PRINCIPAL x A E Xo E oA QR 8 E de ck 0 ck o Ao OX E Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 97 ESTA ROTINA PRINCIPAL SIMPLESMENTE LIMPA O WDT POIS TODA A L GICA DO PROGRAMA TRATADA DENTRO DAS INTERRUPCOES BSF C_LEDS ATIVA LEDS LIGADOS AO PORTD BSF LINHA_4 ATIVA BOT ES DA LINHA 4 BSF INTCON GIE LIGA AS INTERRUP ES LOOP CLRWDT LIMPA WATCHDOG TIMER GOTO LOOP VOLTA AO LOOP AE E oe ck ck ck e oko ko Ao ok Uk ok A X OX FIM DO PROGRAMA i ck OO E AAA AE oko Ck AREA X Co o AR END FIM DO PROGRAMA 98 Dicas e Coment rios Notar que nesta experi ncia foi utilizada uma tabela para retornar em fung o do estado das teclas pressionadas o valor que deve ser carregado no registrador PR2 Ou seja conforme comentado na experi ncia 4 a utilizac o de tabelas n o se limita apenas convers o de BCD para display de 7 segmentos Prova disso que nesta experi ncia a tabela foi til para exercer fun o completamente diferente O software desta experi ncia apresenta uma particularidade Veja que n o existe nenhuma instru o a n o ser o CLRWDT no loop princi
49. 8 ck E OX AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMACAO E FUTURAS ALTERAC ES DO HARDWARE RSE E ON o ox X X t X Ao ETE 8 ok AR AS SA DAS DEVEM SER ASSOCIADAS A FUTURAS ALTERAC ES DO HARDWARE HDEF INE HDEF INE HDEF INE HDEF INE HDEF INE EAN dd A coU oc DISPLAY RS ENABLE SCL SDA PORT PORT PORT O 1 POR rc 3 de Ck oe 6 ko CX ck doo X ck SA DAS kok lt Xe XS e X ok E NOMES PARA FACILITAR A PROGRAMA O E BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 lt DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA VIA DE CLOCK DO REL GIO par xe MES dO dE DE lt SEMEL GL MS I ULM ENTRADAS SA DAS PORTC 4 de ck COO eo k Ok A ko ok wes E oe ko o E oko Ck ko A ko o ok E ko ok ko ok x X VIA DE DADOS BIDIRECIONAL DO REL GIO VETOR DE RESET MICROCONTROLADOR E o AE RA A E oko A ko X Ao ko x X POSI O INICIAL PARA EXECU
50. CONFIGURA REGISTRADOR PR2 PERIODO DO PWM T PR2 1 4 Tosc TMR2 Prescale T 255 1 4 250ns 16 T 4 096ms gt 244 14Hz CONFIGURA REGISTRADOR T2CON TIMER 2 LIGADO PRESCALER gt 1 16 POSTSCALE gt 1 1 y CONFIGURA ES CCP2CON P PWM ZERA DUTY CYCLE CCPR2L TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO INICIALIZA DISPLAY PREPARA TELA PRINCIPAL MCMASTER PWM OFF 178 2 LIMPA WDT BOT O 0 PRESS BOT O 1 Sim PRESS BOT O 2 eim PRESS BOT O 3 PRESS N o RECARREGA FILTRO TRATA BOT O 0 TRATA BOT O 1 TRATA BOT O 2 TRATA BOT O 3 gt Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 179 TRATA BOT O 0 AC O J FOI EXEC Sim FILTRO TERMINOU CCPR2L 0x00 LIMPA BITS 4 E 5 DE CCP2CON to CCPR2L CCPR2CON 5 4 Tosc TMR2 Prescale to 0 250ns 16 Oms PWM gt Duty Cycle 0 gt OFF y ESCREVE OFF NO LCD TRATA BOT O 2 AC O J FOI EXEC Sim FILTRO TERMINOU CCPR2L 0XCO LIMPA BITS 4 E 5 DE CCP2CON to CCPR2L CCPR2CON lt 5 4 gt Tosc TMR2 Prescale tp 768 250ns 16 t 3 072ms PWM gt Duty Cycle 75 ESCREVE 75 NO LCD TRATA BOT O 1 AC O J FOI EXEC Sim
51. IA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO A TEMPO1 UNIDADES DE MS A TEMPOO P CONTAR 1MS WDT PERDE TEMPO TEMPOO VOLTA 2 INSTRUCOES PASSOU SE 1MS TEMPO1 VOLTA 6 INSTRUCOES A do ERE e TE AE A X dk DE UM CARACTER NO DISPLAY k k k K k k OR 1 ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER W ANTES DE CHAMAR A ROTINA ATUALI PERDE ENVIA DELAY RETORN ZA DISPLAY PORTD 1US PARA ESTABILIZA O UM PULSO DE ENABLE AO DISPLAY DE 1MS A JP LE 8 EE XD LIE 8 IL JE E EI CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE dec Wo Gk ov ode Gk Ck X oko oe 9 NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A M QUINA E AGUARDA O ESTOURO DO WDT CONFIG CLRF LRE LRE LRE LRE cl BANK1 OVW OVW OVW OVW OVW OVW OVLW OVLW OVLW OVLW OVLW OVLW Tj PORTA PORTB PORTC PORTD PORTE B 00101111 TRISA B 00001111 TRISB B 10011000 TRISC B 00000000 TRISD
52. Q ko 8 o ko Ck cA E Wo o de Xe CA S X BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM dk vA ode ck oe ko Ck Ok ko ok o eA E 0 Xo ke X CONSTANTES INTERNAS x ok oe eo SU Ck ck de X oko SE Ko de A dece 38 26 e 268 A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O HDEF INE HDEF INE HDEF INE END HORA END MINUTO END SEGUNDO 4 Be wk o oko X Ok b ko E 0x ok DECLARA O ENDERECO DA HORA NO RELOGIO RTC ENDERECO DO MINUTO NO RELOGIO RTC ENDERECO DO SEGUNDO NO RELOGIO RTC EO U o DOS FLAGs DE SOFTWARE 2 oko s X RATE kk AAA EAN A A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM SDEFINE F ERRO FLAG 0 1 ERRO NA LEITURA DO REL GIO HE AA A AA HA E E AAA AE EA e OK Oeo ENTRADAS X
53. M QUINA E AGUARDA O ESTOURO DO WDT CONFIG CLRF PORTA LIMPA O PORTA CLRF PORTB LIMPA O PORTB CLRF PORTC LIMPA O PORTC CLRF PORTD LIMPA O PORTD CLRF PORTE LIMPA O PORTE BANK1 ALTERA PARA O BANCO 1 DA RAM OVLW B 00101111 OVWF TRISA CONFIGURA I O DO PORTA OVLW B 00001111 OVWF TRISB CONFIGURA I O DO PORTB OVLW B 10011000 OVWF TRISC CONFIGURA I O DO PORTC OVLW B 00000000 OVWF TRISD CONFIGURA I O DO PORTD OVLW B 00000000 OVWF TRISE CONFIGURA I O DO PORTE OVLW B 00000111 OVWF CMCON DESLIGA COMPARADORES ANAL GICOS 96 MOVLW MOVWF MOVLW MOVWF MOVLW MOVW MOVLW MOVWF BANKO MOVLW MOVWF B 00000111 ADCON1 B 11001111 OPTION_REG B 01100000 INTCON B 00000000 PIEL B 00001111 T2CON DESLIGA CONVERSORES A D CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 1 128 TIMER 1 1 CONFIGURA INTERRUP ES HABILITA AS INT DE TMRO E PERIF CONFIGURA INTERRUP ES DESABILITA TODAS AS INT DE PERIF RETORNA PARA O BANCO 0 TIMER2 PRESCALE 1 16 POSTSCALE 1 2 AS INSTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT E COMECA NOVAMENTE BTFSC GOTO
54. de coo ko XX e ok o ee X cde dec X X 9 8 DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO SA DA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 HDEF INE HDEF INE ORG GOTO DSP UNIDADE LINHA 4 PORTB 7 PORTB 7 XK o dd ok Xx INICIALIZA O DA EEPROM i o wk Xo ck ck ck AAA oko A A A A oko ko x X H 2100 POS MEM WD x X Ad XK 0x00 INICIO Ksk fd AS INTERRUPCOES ORG RETFIE 0x04 PINO DISPLAY DA UNIDADE 1 0 DISPLAY ATIVADO DISPLAY DESATIVADO PINO PARA ATIVAR LINHA 4 DO TECLADO MATRICIAL LINHA ATIVADA LINHA DESATIVADA lt ks ck ck ck ko xk k xk k xk xk XxX XxX IN VA CIO DA EEPROM LOR INICIAL PARA CONTADOR 5 0 00k ko oko ok E oko X A ok X VETOR DE RESET dc ch ce 4 ko ok AA eo X ox XA EN DERECO INICIAL DE PROCESSAMENTO 8 Cock ua ck Ck 86 de IN CIO DA INTERRUP O E RARE RR RN ok ok ok N O SER
55. e A0 ko ck HH DEFINI O DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA SDEFINE HDEF INE MIN MAX T_FILTRO POS_MEM ST BT1 FLAGS 0 ST BT2 FLAGS 1 EQU EQU EQU EQU de ck E ck de ce ck ck ck DEFINI O DE TODAS AS VARI VEIS STATUS DO BOT O STATUS DO BOT O NR X EA ok E AAA AR CONSTANTES 0 LS E 2 55 gt 0 P ck ck ck EDTA X k X VAI VA FI EN Ck Ck Ch d ko AE oko ko X UTILIZADAS PELO SISTEMA LOR MINIMO PARA O CONTADOR LOR M XIMO PARA O CONTADOR LTRO PARA BOT O DERECO DA EEPROM ONDE SER ARMAZENADO O VALOR DO CONTADOR kok e o CAO oe do c A ko A A o A N ENTRADAS e X ELA CE ck DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO ENTRADA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 HDEF INE HDEF INE BOTAO1 BOTAO2 PORTB 0 PORTB 1 8 RRE we PORTA DO BOT O 1 gt PRESSIONADO 0 gt LIBERADO PORTA DO BOT O 1 0 PRESSIONADO LIBERADO D dr 6 GEL SL Ms NE CE 3 SA DAS
56. ks ck ck ck ks k Xx k k k Xx NO DISPLAY DA UNIDADE DISPLAY ATIVADO DISPLAY DESATIVADO NO PARA ATIVAR LINHA 4 DO TECLADO ATRICIAL LINHA ATIVADA LINHA DESATIVADA 0k ck ck ck XxX XxX xk k Xx k k m VETOR DE RESET n E E kO X o X k Y Xx ok ORG 0x00 EN GOTO INICIO ck deo M o A de o E IN CIO DA ck E RX X ok Y ck Xx ok AS INTERRUPC ES N O SER O UTILIZADAS ck ks ck ck k k Xx DERECO INICIAL DE PROCESSAMENTO co lt X oko ko ko e ko ko ko ko X ok Y ok INTERRUP O ck 0 X Xx XxX k k POR ISSO PODEMOS SUBSTITUIR TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ESTE SISTEMA OBRIGAT RIO MAS PODE EVITAR PROBLEMAS FUTUROS ORG 0x04 EN RETFIE A oko e E gt lt d ROTINA DE CONVE X ck X cook 0 DERE O INICIAL DA INTERRUP O TORNA DA INTERRUP O LE A MES S NE MT IU E E NS ME NE NS ESSE RS O BIN RIO DISPLAY EXETER ck ck oo de Ao ck Wo Sk WM d ESTA ROTINA IR RETORNAR EM W O SIMBOLO CORRETO QUE DEVE SER MOSTRADO NO DISPLAY PARA CADA VALOR DE CONTADOR O
57. 3us Sim RETURN 1ms Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 125 e O E DL ND OM SE EE ME ND Ge SED E E OMS EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER EXPERI NCIA 10 DISPLAY DE CRISTAL L QUIDO LCD Ok ck ck ck k ko ko ck Xx Xx X X k XxX xXx k xk k xk xk XxX XxX k k xk XxX XxX X VERS O 1 0 DATA 14 04 2003 eco c de o cde E A E KO ko ko ko AO EE EE E A E E A A d e Ck ck deo x ok ko ko Ck E ko A ok o ko ko ko ko d oko k ko ko Y A por DESCRI O GERAL X ck k Ok ko kx kk k k kk kk X ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DO M DULO DE LCD FOI CRIADA UMA ROTINA PARA ESCREVER COMANDOS OU CACACTRES NO LCD EXISTE TAMB M UMA ROTINA DE INICIALIZA O NECESS RIA PARA A CORRETA CONFIGURA O DO LCD OS BOT ES CONTINUAM SENDO MONITORADOS UMA MENSAGEM ESCRITA NO LCD PARA CADA UM DOS BOT ES QUANDO O MESMO PRESSIONADO APENAS OS BOT ES DA LINHA 4 EST O ATIVADOS 00008 0000 0 8 0 8 3 ko de OX oko Ko OX ok EX CONFIGURA ES PARA GRAVA
58. CCPRx 256 4 5 CCPRx 512 Ou seja se carregarmos os registradores que controlam o tempo do pulso em n vel alto com 512 obteremos um duty cycle de 50 Exerc cios Propostos 1 Corrija o problema encontrado no n vel 100 evitando que a sa da seja colocada em zero mesmo que por um per odo de tempo muito curto 2 Em vez de trabalhar com somente 4 n veis de PWM altere o sistema para que um bot o ligue e desligue a sa da e outros dois bot es incremente e decremente o PWM de 50 a 100 com passos de 5 3 Ative as duas sa das PWMs ao mesmo tempo uma para o ventilador e outra para a resist ncia Utilize dois bot es para controlar o ajuste de cada uma delas 190 Cap tulo 17 Experi ncia 15 Acesso s mem rias de dados e programa Objetivo O acesso mem ria de dados EEPROM j foi visto na experi ncia 6 portanto a novidade desta experi ncia o acesso a mem ria de programa do microcontrolador Descric o Nesta experi ncia o LCD est dividido em duas partes Do lado esquerdo temos um valor relativo mem ria de dados vari vel de O a FFh 8 bits com incremento e decremento rotativo atrav s dos bot es das colunas 2 e 3 Do lado direito o valor ser para a mem ria de programa tamb m com incremento e decremento rotativo atrav s dos bot es das colunas 2 e 3 podendo ir de 0 a SFFFh 14 bits Para alterar o controle dos bot es entre o lado esquerdo e o lado direito deve ser usado o b
59. ESTA ROTINA L O VALOR DA MEM RIA E COLOCA O RESULTADO NA VARI VEL LE CONTA MOVLW MOVW CALL MOVW RETURN Y I CONTADOR POS ENDERECO LE E2PROM CONTADOR EFETUA A LEITURA DA EEPROM ATUALIZA O CONTADOR RETORNA de Ck RE ES E E JE o X RS cS ese oe Xe 0000908 ROTINA DE ESCRITA DO VALOR DO CONTADOR 5 lt lt lt Xx kk kk ko ko e Xx A ck ok Ck xXx ko ko ko k NK ok ESTA ROTINA ESCREVE O VALOR ATUAL DE CONTADOR NA MEM RIA EEPROM ESCR_CONTA MOVLW MOVWF MOVF CALL RETURN x INICIO CLRF LRE LRE LRE LRE BANK1 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF ko k xk POS MEM ENDERECO CONTADOR W ESCR_E2PROM A PORT PORT PORT PORT PORT XK XX Y TA rC D TE lt XX kk xXx 3 ACERTA O ENDERECO DE LEITURA COLOCA CONTADOR EM W EFETUA A ESCRITA NA EEPROM RETORNA Xx Xx xk Xx XxX k X XxX XxX INICIO DO PROGRAMA 00101111 TRISA B 00001111 TRISB B 10011001 TRISC LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO CONFIGU CONFIGU CONFIGU kel ck ck cde ck
60. REX ox AA X E ooo CONFIGURA ES INICIAIS DO DISPLAY X ck UE EIA AE A ACA 00 0 AR ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS CURSOR APAGADO E DESLOCAMENTO DO CURSOR INICIALIZACAO DISPLAY DIREITA BCF RS SELECIONA O DISPLAY P COMANDOS OVLW 0x30 ESCREVE COMANDO 0X30 PARA CALL ESCREVE INICIALIZA O OVLW 23 CALL DELAY_MS DELAY DE 3MS EXIGIDO PELO DISPLAY OVLW 0x30 ESCREVE COMANDO 0X30 PARA CALL ESCREVE INICIALIZA O OVLW 0x30 ESCREVE COMANDO 0X30 PARA CALL ESCREVE INICIALIZA O OVLW B 00111000 ESCREVE COMANDO PARA CALL ESCREVE INTERFACE DE 8 VIAS DE DADOS OVLW B 00000001 ESCREVE COMANDO PARA CALL ESCREVE LIMPAR TODO O DISPLAY OVLW gd CALL DELAY_MS DELAY DE 1MS OVLW B 00001100 ESCREVE COMANDO PARA CALL ESCREVE LIGAR O DISPLAY SEM CURSOR OVLW B 00000110 ESCREVE COMANDO PARA INCREM CALL ESCREVE AUTOM TICO A ESQUERDA do o ck ck 8 ce Ok ck OK X o e AE ROTINA DE ESCRITA DA TELA PRINCIPAL dk dest Mo ck E de oko X cook ck OA Ck ck Xo X ob X ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES
61. oko E Cho ko de dk VERS O 0 DATA 14 04 2003 de o cde A E 0X ko ko ko Ao EE EE E A E E A X A de e Ck ck ok ko ko Ck E ko ko ko ko ko d oko k k n koX DESCRIC O GERAL XA E ck E o e A XA ko ko ok ck ok e X Ck Ck Ck A ko gt k ck xk ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DO TECLADO MATRICIAL 4x4 O N MERO DA LINHA E COLUNA DA TECLA PRESSIONADA E MOSTRADA NO LCD Oo X ok 0A o do o OX BD f oko ck ck ce sk Qo u E CONFIGURA ES PARA GRAVA O ARA RIE X MRE AER A ck OX AAA RR CONFIG CP OFF CPD OFF amp DEBUG OFF LVP OFF amp WRT OFF amp _BODEN_OFF PWRTE ON amp WDT ON amp XT OSC ko oW CK ko Ck OK A de Xo AX Lx DEFINI O DAS VARI VEIS de AX AR 8 A ok ko HATCH RI o ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0X20 POSI O INICIAL DA RAM TEMPOO TEMPOI TEMPORIZADORES P
62. ATUALIZA TELA LINHA 2 VARRE VALOR PROG LOW F STATUS Z VALOR PROG HIGH F B 00111111 VALOR PROG HIGH F ATUALIZA TELA LINHA 2 VARRE lt ks k ko xk k Xx k k xk xk XxX XxX TAMENTO DO BOT O 0 FILTRO J IGUAL A ZERO FUN O JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO INVERTE FLAG ALTERA A MEM RIA UTILIZADA CHAMA ROTINA P ATUALIZAR LCD VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO T FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO N O VOLTA P VARRE SIM RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS EST UTILIZANDO MEM RIA DE DADOS N O ENT O PULA P INC MEM PROG SIM INCREMENTA VALOR DADOS CHAMA ROTINA P ATUALIZAR LCD VOLTA P VARREDURA DOS BOT ES INCREMENTA VALOR PROG LOW HOUVE ESTOURO SIM INCREMENTA VALOR PROG HIGH N O LIMITA CONTADOR DA MEM RIA DE PROGRAMA EM
63. EN BUI HO DERECO FFER RA MINUTO SEGUNDO BANK1 BANKO OS PSEUDOS COMANDOS ENTRE OS BANCOS DE MEM RIA hook 4 DE TE ck BR X ok dk CX 00 0 A X X E Xo DEFINIC O DAS VARI VEIS E lt soo ck oc oko ck Ck E oko 09 ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 POSI O INICIAL DA RAM CONTADORES P DELAY REGISTRADOR DE FLAG DE USO GERAL REGISTRADORES DE ENDERE O PARA ACESSO AO RELOGIO RTC REGISTRADOR PARA LEITURA GRAVAC O UTILIZADO PELA COMUNICA O I2C ARMAZENA A HORA ATUAL ARMAZENA O MINUTO ATUAL ARMAZENA O SEGUNDO ATUAL Xo ko AX de o de Oo AXE XA o ok ko x X o ok ko Kk Ok CR DEFINIC O DAS VARI VEIS INTERNAS DO PIC 2 P16F877A INC 1 lt lt lt Ces deo o Xo Wo CK 0 AE A XX gt ov uk ko S SE SE ARQUIVO DE DEFINICOES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO MICROCONTROLADOR UTILIZADO E ge 8 de X A oe Ok An Ok oko CE ck o We ck oe e ooo DEFINI O DOS BANCOS DE RAM 38 lt
64. ESPACOS EM BRANCO EST UTILIZANDO A MEM RIA DE PROGRAMA N O ESCREVE ESPACO EM BRANCO SIM ESCREVE NO DISPLAY INVERTE NIBLE DO VALOR PROG HIGH MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII ENVIA CARACTER AO DISPLAY LCD CARREGA WORK COM VALOR PROG HIGH MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO 202 ADDWF AUX W 7 CALL ESCREVE SWAPF VALOR PROG LOW W ANDLW B 00001111 MOVWF AUX MOVLW SUBWF AUX W MOVLW 0 BTFSC STATUS C MOVLW 7 ADDWF AUX W CALL ESCREVE OVF VALOR PROG LOW W ANDLW B 00001111 OVWF AUX OVLW 0X0A SUBWF AUX W OVLW 0X30 7 BTFSC STATUS C OVLW 0X37 ADDWF AUX W CALL ESCREVE MOVLW h CALL ESCREVE MOVLW lt BTFSS TIPO MEMORIA MOVLW E CALL ESCREVE CLRF DISPLAY RETURN Ok ck k XxX k k k kk ROTINA DE ESCRITA ES XU Ck ko X ESTA ROTINA ESCREVE UM DADO 8 BITS SOMA O WORK AO AUXILIAR CONVERS O
65. ESTA UMA ROTINA DE DELAY VARI VEL COM DURAC O DE 1MS X O VALOR PASSADO EM WORK W DELAY MS OVWF TEMPO1 CARREGA TEMPO1 UNIDADES DE MS OVLW 250 OVWF CARREGA TEMPOO P CONTAR 1MS CLRWDT LIMPA WDT PERDE TEMPO DECFSZ TEMPOO F FIM DE TEMPOO GOTO 2 N O VOLTA 2 INSTRUCOES SIM PASSOU SE 1MS DECFSZ TEMPOI F FIM DE TEMPO1 GOTO 6 N O VOLTA 6 INSTRUCOES SIM RETURN RETORNA ck lt lt e Ck E ER E ARE SA de OP OK AA AR ROTINA DE ESCRITA DE UM CARACTER NO DISPLAY e o XX Rd CT ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK W ANTES DE CHAMAR A ROTINA ESCREVE MOVWF DISPLAY ATUALIZA DISPLAY PORTD NOP PERDE 1US PARA ESTABILIZA O BSF ENABLE ENVIA UM PULSO DE ENABLE AO DISPLAY GOTO 41 BCF ENABLE MOVLW 1 CALL DELAY_MS DELAY DE 1MS RETURN RETORNA JP E EE NE NL NE GE GE NL dE GL XD NS GE E JE JE E EG LIE GE GE IUE M E pad AJUSTE DECIMAL PON W HEX DEZENA DEC UNIDADE DEC de c Ue GA de eode Wes Es db X ode E Oo 9 des E oon Sk ESTA ROTINA RECEBE UM ARGUMENTO PASSADO PELO WORK E RETORNA NAS VARI VEIS DEZENA E
66. HDEF INE DSP UNIDADE PORTB 7 PINO DISPLAY DA UNIDADE 1 DISPLAY ATIVADO O gt DISPLAY DESATIVADO HDEF INE LINHA 4 PORTB 7 PINO PARA ATIVAR LINHA 4 DO TECLADO MATRICIAL 1 LINHA ATIVADA O lt LINHA DESATIVADA DE ok O TE RE X CK ok cho EE o VETOR DE RESET db X cA ck OX gt 0000 HR ORG 0x00 ENDERE O INICIAL DE PROCESSAMENTO GOTO INICIO ARA ck RE 07 DT MM RM dk XA U X IN CIO DA INTERRUP O 8 AE CX RARA e RO X koX ER XA hook AS INTERRUP ES N O SER O UTILIZADAS POR ISSO PODEMOS SUBSTITUIR TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ESTE SISTEMA N O OBRIGAT RIO MAS PODE EVITAR PROBLEMAS FUTUROS ORG 0x04 ENDERE O INICIAL DA INTERRUP O RETFIE RETORNA DA INTERRUPCAO 34 DELAY OVW DL1 OVLW OVW DL2 NOP DECFSZ GOTO DECFSZ GOTO RETURN de JE A 3k K e INICIO CLRF LRP BANK1 OVLW OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF BANKO EC 0 Xo de O
67. LIZADAS ARMAZENA O VA ARMAZENA OS F LOR DA CONTAGEM LAGS DE CONTROLE FILTRAGEM PARA O BOT O 1 FILTRAGEM PARA O BOT O 2 ARMAZENA O EN MEM RIA DE DA FIM DO BLOCO DOS DE MEM RIA de ow E E kl ode X5 As we on we DEFINI O DAS VARI VEIS INTERNAS DO PIC we cde Ok ck E Sa o Ok sk eo 3e Ok 36 O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A DERECO PARA ACESSO EEPROM X gt WA ok X X WX 5k E ej 3k PARA QUE NECESSIDADE MICROCONTROLADOR UTILIZADO 0k xk ck ck ck k k Xx Xx k Xx k xk xk k k k xk xk xk DEFINI O DOS BANCOS DE RAM ck ck ko ko xk Xk Xk k Xk Xx a k xk k k k k xk Xx OS PSEUDOS COMANDOS ENTRE OS BANCOS DE MEM RIA BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR TATUS SELECIONA BANK1 DA MEMORIA RAM TATUS SELECIONA BANKO DA MEMORIA RAM E ko E A A E ER EXE NRE A XX e ko ko de ko X X oA oo e FLAGS INTERNOS Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 67 de CX ER os o ck e 0e ck E ck
68. MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL CLRF GOTO FILTRO BOTOES F VARRE 0XCO CCPR2L CCP2CON 5 CCP2CON 4 TEC MATRICIAL RS 08 ESCREVE RS ESCREVE ES ESCREVE ESCREVE 6 ESCREVE DISPLAY VARRE FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO CARREGA CCPR2L COM OXCO LIMPA OS BITS 5 6 4 LSB DO DUTY CYCLE CCPR2L CCP2CON lt 5 4 gt Tosc TMR2 Prescale 768 3 0 2508 16 72ms DUTY CYCLE 75 DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 8 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE 75 LIMPA BARRAMENTO DE DADOS VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO E TRATA_BOTAO_3 MOVF BTFSC GOTO DECFSZ GOTO MOVLW MOVWF BSF BSF CLRF BCF MOVLW CALL BSF MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL FILTRO BOTOES F STATUS Z VARRE FILTRO BOTOES F VARRE OXFF CCPR2L CCP2CON 5 CCP2CON 4 TEC MATRICIAL RS 08 ESCREVE RS m ESCREVE Vo ESCREVE LOs ESCREVE 6 ESCREVE gt
69. O DO PROGRAMA ORG GOTO dd Ck ck xe Ck oko ko ko ck ok oko o ko X de X kk X X A 0x0000 CONFIG ESTA U EM WORK W DELAY MS OVWF 1 OVLW 250 OVWF CLRWDT DECFSZ TEMPOO F GOTO 2 DECFSZ TEMPO1 F GOTO 6 ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGIAO DESTINADA AS ROTINAS SEGUINTES ROTINA DE DELAY DE 1MS 256 5 5 X ce RARA ck CA X ce 90 oko Ao IA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS FIM N O SIM FIM N O SIM LIMPA WDT PERDE TEMPO DE TEMPOO VOLTA 2 INSTRU ES PASSOU SE 1MS DE TEMPO1 VOLTA 6 INSTRUCOES Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 269 RETURN RETORNA cc E RA 8 RE ck ck Ok EA Wo X ARA ROTINA DE ESCRITA DE UM CARACTER NO DISPLAY 5 A EXE RA EA ce E ko ARE ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK ESCREVE MOVWF DISPLAY NOP BSF ENABLE GOTO 1
70. OVLW OVWE MOVLW MOVWF TEMPOI TEMPOO TEMPOO F TEMPO1 F HOR EXE ER OK ROTINA DE ESCRITA DISPLAY ENABLE 5 1 zd DELAY MS de ck Y ck Xv o oo ES o gt Ck oo CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS LIMPA WDT PERDE TEMPO FIM DE TEMPOO N O VOLTA 2 INSTRU ES SIM PASSOU SE 1MS FIM DE TEMPO1 N O VOLTA 6 INSTRU ES SIM RETORNA E eo 06 A A SEI DE UM CARACTER NO DISPLAY ck Gc Oe o o OO EE ches ok AX Xo E RRE CO Oeo ko ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK W ANTES DE CHAMAR A ROTINA ATUALIZA DISPLAY PORTD PERDE 1US PARA ESTABILIZACAO ENVIA UM PULSO DE ENABLE AO DISPLAY DELAY DE 1MS RETORNA DI A4 E b NE NM ME O E E CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE PORTA PORTB PORTC PORTD PORTE 00101111 TRISA 00001111 TRISB L0011000 TRISC 00000000 TRISD 00000000 TRISE B 11011111 OPTION_REG B 00000000 INTCON de Co e ck o we o ode E oe de OX Kk oko AD Xo oe Ch NESTA ROTINA S O INICIALIZADAS AS PORTAS D
71. TIMER 1 LIMPA FLAG DE TIMER LIGADO LED PARA CONTADOR TMRI1 106 INCREMENTA TIMER INCREMENTA UNIDADE ZERA UNIDADE INCREMENTA DEZENA ZERA DEZENA INCREMENTA CENTENA Sim ZERA CENTENA INCREMENTA MILHAR Sim ZERA MILHAR RETURN p DECREMENTA TIMER DECREMENTA UNIDADE UNIDADE OxFF Sim UNIDADE 9 DECREMENTA DEZENA DEZENA OxFF Sim DEZENA 9 DECREMENTA CENTENA CENTENA 9 DECREMENTA MILHAR MILHAR OxFF Sim MILHAR 9 RETURN Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 107 e O PWRTE ON _WDT_ON amp XT OSC ok se oko ko oe cA ko ko de VERS O 1 0 DATA 14 04 2003 E dee de o codes IPR IER HP Oe Ae DR MR gt EX Xx 0o ck Xx DESC EXPERI NCIA 9 VARREDURA DE DISPLAYS E UTILIZAC O DO TIMER 1 XK kk k k xk k xk X sk RI O GERAL We SAO de de E 8 DE E E ode e DO E o EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER 5 Ok ck k k k X Xo X X k XxX xk XxX xk
72. gt BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 gt DADO O gt COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA ee Ck de ck oko ck che O VETOR DE RESET DO MICROCONTROLADOR ko cA ck ck ok ck X Ck RA XA POSI O INICIAL PARA EXECU O DO PROGRAMA ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGI O DESTINADA AS ROTINAS SEGUINTES Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 255 X oes coke E EA deo A o Xe xe ck A e ko A E do X ko ko oko ROTINA DE DELAY DE 1MS AT 256MS de A cock We Ck E ko ck ERA koX ck RR ERA X Ok A AR ESTA U EM WORK W DELAY MS OVWF 1 OVLW 250 OVWF CLRWDT DECFSZ TEMPOO F GOTO 2 DECFSZ 1 GOTO 5 6 RETURN A Ck o oko A ko X ok ok X X ESCRITO DEVE SER COLOCADO EM WORK ESCREVE MOVWF NOP BSF GOTO BCF MOVLW CALL RETURN ROTINA DE ESCRITA DISPLAY ENABLE 41 ENABLE zl DELAY MS CARREG CARREG LIMPA FIM DE NAO SIM FIM DE N O SIM RETORN
73. ko ok Ak A Ak ok ok 1 DA RAM RA I O DO PORTA RA I O DO PORTB RA 1 0 DO PORTC 70 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWE OVLW OVWE BANKO CLRF CALL GOTO MAIN MOVLW MOVWF MOVW 1 _ 1 BTFSS GOTO DECFSZ GOTO BTFSS GOTO GOTO BTl LIB BCF CHECA BT2 BTFSS GOTO DECFSZ B T HU 00000000 RISD 00000000 RISE 00000111 CMCON gt 00 B 00000111 DCON1 10000000 OPTION REG B 00000000 INTCON DSP UNIDADE xk x dd ADS x lt kx oo FLAGS LE CONTA ATUALIZA xk x T_FILTRO F F ILTRO1 ILTRO2 BOTAO1 BT1_LIB E ILTRO1 F CHECA_BT1 ST BT1 DEC CHECA BT2 ST BT1 BOTAO2 BT2_LIB E ILTRO2 F CONFIGURA 1 0 DO PORTD CONFIGURA 1 0 DO PORTE DESLIGA COMPARADORES ANAL GICOS DESLIGA CONVERSORES A D PRESCALER 1 2 NO TMRO PULL UPS DESABILITADOS AS DEMAIS CONFG S O IRRELEVANTES TODAS AS INTERRUP ES DESLIGADAS RETORNA PARA O BANCO O0 AE EEC Ok owe o INICIALIZA O DO HARDWARE lt lt ME 8 S oko Ok e wes de eo oe ATIVA DISPLAY DA UNIDADE LAE dE d NE E ME NE NE Le NL ME ID Me JN E e INICIALIZAC O DAS V
74. lt LW LW LW LW LW LW LW LW LW LW LW LW LW SESESESESESESESESESESESESESES lt LW LW LW LW LW LW LW LW LW LW LW LW LW LW LW LW ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE RS OXCO ESCREVE RS VS ESCREVE ESCREVE EA ESCREVE Lar ESCREVE ESCREVE n ESCREVE VAS ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE 57281 ESCREVE ESCREVE Vio ESCREVE qu ESCREVE est ESCREVE SE LECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 0 SE LECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE T CARGA x50us de ox gt lt che 0 dk ko BR X 7k koX oW 0 O x Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 159 DESCARGA CAPACITOR CLRWDT LIMPA WATCHDOG TIMER CLRF CONTADOR_AD ZERA O CONTADOR DE TEMPO DE CARGA DO CAPACITOR BANK1 SELECIONA BANCO 1 DA RAM BCF PINO AD TRANSFORMA PINO EM SAIDA BANKO VOLTA P BANCO 0 DA RAM BCF CAD DESCARREGA O CAPACITOR MOVLW 3 CALL DELAY MS CHAMA ROTINA DE DELAY 3ms TEMPO NECESS RIO P DESCARGA DO CAPACITOR BANK1 SELECIONA BANCO 1 DA RAM BSF PINO AD TRANSFORMA PINO EM ENTRADA
75. o X ko de ck ko X A A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O ESTE PROGRAMA UTILIZA NENHUMA CONSTANTE 254 SDEFINE HDEF INE HDEF INE HDEF INE m HDEF NE HDEF NE SDEFINE SDEFINE HDEF INE HDEF INE HDEF INE ORG GOTO LINHA LINHA2 LINHAS LINHA4 COLUNA1 PORT COLUNA2 PORT COLUNA3 PORT de b X 0k OR ok o E ko Uk AA DECLARAC O DOS FLAGs DE SOFTWARE B 0 PB 1 TB 2 COLUNA4 PORT DISPLAY RS ENABLE 0x0000 CONFIG rB 3 Ok k k xk U ko E E A ck EE 0 A A A SRU A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECO LINHA_ATIVA 4 LINHA_ATIVA 5 LINHA_ATIVA 6 LINHA_ATIVA 7 PINO 1 gt lt gt PINO 1 gt 0 gt PINO 1 gt OS PINO 1 gt ON ko E A e che AS SA DAS DEVEM SER ASSOCIADAS FUTURAS ALTERA ES DO HARDWARE PORTD PORTE 0 PORTE 1 e oce ode o A ARRE e K 0k ks ck k xk x OMIZA MEM RIA RAM BIT 4 DO REGISTRADOR LINHA ATIVA REPRESENTA A LINHA 1 DO TECLADO 4x4 1 LINHA EST ATIVADA 0 LINHA EST DESATIVADA
76. s Q ck oe A Xe ce E k CA cde OK ch EE 28k CONFIGURA ES PARA GRAVA O A 3 de ox OX dX oko ck FR k ck UE HH CONFIG CP OFF amp CPD OFF amp DEBUG OFF 6 LVP OFF amp WRT OFF amp BODEN OFF PWRTE ON amp OFF amp XT OSC A deo ok A RRA A ARA oo o o oko X TR ko VARI VEIS ke Ck Xe Oeo X oe oOx ok oko Kk Ko UO Uk PE DEFINI O DOS NOMES E ENDERE OS DE TODAS AS VARI VEIS UTILIZADAS PELO SISTEMA CBLOCK 0 r W_TEMP STATUS TEMP r 1 INTENSIDADE FLAGS FILTRO11 FILTRO12 FILTRO21 FILTRO22 TEMPO ENDC lt lt xe 8 ck o oe ko c ENDERECO INICIAL DA MEM RIA DE USU RIO INTERRUPCOES ZADAS A ARMAZENA OS FLAGS FILTRAGEM 1 PARA FILTRAGEM 2 PARA FILTRAGEM 1 PARA FILTRAGEM 2 PARA x z Bcc de des o c INTERVALOS DE 1 MS REGISTRADORES TEMPOR RIOS PARA ESTAS VARI VEIS NEM SER O UTI RMAZENA O VALOR DA CONTAGEM DE CONTROLE O BOT O 1 O BOT O 1 O BOT O 2 O BOT O 2 DO BLOCO DE MEM RIA we de w de x 0 Gk x e DEFINI O DAS VARI VEIS INTERNAS DO PIC do C de Ck
77. 8 CE e 3 Cf i H xr H i 0 ES li i 5 5 gt 8 9gu H 28 8 i 0 o H lt gt T o 1 lt 1 1 ui 1 H 1 1 a 1 1 7 o 1 x 1 H o hu 9 RN 1 H EIS amp a ES i H 5 s 5 sau i 9 I H H i li H i i i H 1 H H H i H i H 2 H Le c 8858 H oz Su Tecra i i ac H S 0 H A 1 1 1 1 2 H 1 Am i 0002 OOOO 1 1 i ROA 1 1 o al 8 2 8 H 1 x A A i i H a e 1 o o o r 1 5 3 1 T E 1 H H 5 w 1 s lt 5 8 59 1 1 1 ASN AS gt o Nc 1 9 1 i 2 ES d z 2 2 i H mmm ec d d d H o M H hod 0 a 1 a 1 1 8 a o S S E 5 i 5 5 5 3 5 5 5 P xi E x P ogg a a H SS SC M 1 1 H i i H H Y e e 77 0 o hs 4 Divisor Resistivo 1 E 5 E x 3 i 1 z e 7 7 o 0 Q 2 E DivisorCapacitivo e e e H a 1 i 1 19 i i H 1 al amp o E dra d i 8 E w 5 5 e s H i 9 0 o i i 5 ec i 1 1 her 1 1 1 1 H I
78. B p B e 0 0 0 0 0 0 ok k kx ok k kx PORTA PORTB PORTC PORTD PORTE B 00101111 TRISA 00001111 TRISB L0011001 TRISC 00000000 TRISD 00000000 TRISE 00000111 CMCON 00000111 DCON1 gt B 10000001 OPTION_REG B 10100000 INTCON E ok AX A DSP_UNIDADE X ck Xx psk ok k kx FLAGS XK ks k k xk xk Sk POSI O CORRETA DOS SEGMENTOS 00 02 03 04 052 06 07 08 09 10 LL ZE 13 14 RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO RETORNA S MBOLO CORRETO HH20T gt Q N gt O E ERA TD OK A do X 0X INICIO DO PROGRAMA lt ko X ko ck o Cho EXE E x OK A o d 0X A d 0k do X X Re ce des c E LIMPA LIMPA LIMPA LIMPA LIMPA O PORTA O PORTB O PORTC O PORTD O PORTE ALTERA PARA O BANCO 1 DA RAM CONF
79. B 00000000 TRISE B 11011111 OPTION REG LIMPA LIMPA LIMPA LIMPA LIMPA ALTERA CONFIG CONFIG CONFIG CONFIG CONFIG CONFIG PULL U INTER PORTA PORTB PORTC PORTD PORTE 00000 PARA O BANCO 1 DA RAM URA 1 0 DO PORTA URA 1 0 DO PORTB URA 1 0 DO PORTC URA 1 0 DO PORTD URA 1 0 DO PORTE URA OPTIONS Ps DESABILITADOS NA BORDA DE SUBIDA DO RBO 256 MOV MOVWF MOV MOVWF MOV MOVWF BAN KO B 00000000 INTCON B 00000111 CMCON B 00000111 ADCON1 AS INSTRUCOES A SEGUIR FAZEM COM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT TIMERO INCREM PELO CICLO DE M QUINA WDT 1 128 TIMER 1 1 CONFIGURA INTERRUP ES DESABILITADA TODAS AS INTERRUP ES DESLIGA OS COMPARADORES CONFIGURA CONVERSOR A D CONFIGURA PORTA E PORTE COM I O DIGITAL SELECIONA BANCO 0 DA RAM QUE O PROGRAMA TRAVE QUANDO HOUVER UM DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT ISTO EVITA PROBLEMAS NO START UP DO PIC E COME A NOVAMENTE BTFSC GOTO STATUS NOT TO de ku dee o ck wo x X X X u SR INICIALIZA O DA RAM o Oo deo e we c X MoU 9 0 e o c4 X e ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 MOVLW MOVWF LIMPA RAM CLRF INCF MOVF XORLW
80. BCF LW LW LW LW LW LW LW LW RS 0x30 ESCREVE 23 DELAY_MS 0x30 ESCREVE 0x30 ESCREVE B 00111000 ESCREVE B 00000001 ESCREVE gd DELAY_MS B 00001100 ESCREVE B 00000110 ESCREVE de cA DE E TE Ck ROTINA DE ESCRITA DA TELA PRINCIPAL d sk DE 0 E U ck ck 2 ck CAS X Ok UK oko Ko DDR MM A X ESTA ROTINA ESCREVE A 1 LIN LIN MOV CAL BSF MOV CAL MOV CALI MOV CALI MOV HA 1 HA 2 LW Ll LW LW LW LW AQUEC RPS TEMP 000 0x80 ESCREVE RS LA ESCREVE gr ESCREVE ty ESCREVE 000 000 C INDO DE 0X20 A 0X7F APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSIC O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS COMPARA O PONTEIRO COM A LT POS J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM 1 d X EA PRO e o 0k ko ok CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS ESCREVE
81. CARREGA NACK TRANSM ITE VOLTA P BANKO RETORNA KO Ok ck Xx k Xx k k k XxX k ALTERA RECEBE P BANK1 U ACK N O SINALIZA ERRO SIM VOLTA P BANKO LIMPA FLAG DE ERRO RETORNA VOLTA P BANKO SETA FLAG P INDICAR ERRO RETORNA 4c C4R Ka Ge Ok ck UM ok WI KH ALTERA P BANK1 226 BSF SSPCON2 SEN BANKO CALL AGUARDA I2C LIVRE MOVLW B 10101110 MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F ERRO GOTO I2C ERRO MOVE ENDERECO H W MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F ERRO GOTO 120 ERRO MOVF ENDERECO_L W MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F ERRO GOTO I2C ERRO BANK1 BSF SSPCON2 RSEN BANKO CALL AGUARDA I2C LIVRE MOVLW B 10101111 MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BIFSC F_ERRO GOTO I2C ERRO BANK1 BSF SSPCON2 RCEN BANKO CALL AGUARDA I2C LIVRE MOVF SSPBUF W MOVWF BUFFER CALL NACK OUT CALL AGUARDA I2C LIVRE BANK1 BSF SSPCON2 PEN BANKO CALL AGUARDA I2C LIVRE RETURN A Xo X deo oko oc kc IR ESCRITA NA lt 8 DE E STE ode E S PASSADO PELA VARI VEL ENDERECO EM BUFFER I2C EEPROM WRITE BANK1 BSF SSPCON2 SEN BANKO CALL AGUARDA_12C_LIVRE MOVLW B 10101110 MOVWF SSPBUF INICIA START BIT V
82. CLRF STATUS E E xXx X kk X 4e Gk SALVA REGISTRADOR DE TRABALHO E DE STATUS DURANTE O TRATAMENTO DA INTERRUPCAO SALVA REGISTRADOR FSR SALVA REGISTRADOR PCLATH LIMPA REGISTRADOR PCLATH SELECIONA P GINA 0 LIMPA REGISTRADOR STATUS SELECIONA BANCO 0 de ck o e kx oko d de CA ES koe koX ok TESTA QUAL INTERRUP O FOI SOLICITADA c E RE XA e A ko ko ok E A X TESTA O FLAG DAS INTERRUP ES PARA SABER PARA QUAL ROTINA DESVIAR 55 INTCON TOIF GOTO INT_TMR1 ks ks k x ook qes TRATAMENTO FOI INTERRUP O DE TMRO N O ENT O PULA P INT TMR1 SIM k ck k xk xk Xx DA INTERRUP O DE TIMER 0 Se E A XX E o c ke cde ko A O ES CA Cho X ROTINA PARA EXECUTAR AS A ES NECESS RIAS SEMPRE QUE A INTERRUP O ACONTECE NESTE CASO A INTERRUP O ESTA SENDO UTILIZADA PARA GERAR A FREQU NCIA DE VARREDURA DOS DISPLAYS POR ISSO CADA VEZ QUE ELA ACONTECER O PR XIMO DISPLAY SER ACIONADO INT TMRO BIFSS LINHA 4 GOTO VARRE DISPLAY MOVF PORTB W MOVWF STATUS BOTOES VARRE DISPLAY INCF INDICE VARRE DISPLAY F ESTA VARRENDO A LINHA 4 NAO
83. CONF CONF CONF CONF DESL DESL PRESC PULL AS DE HABIL RETOR GURA 1 0 DO PORTA GURA 1 0 DO PORTB GURA 1 0 DO PORTC GURA 1 0 DO PORTD GURA 1 0 DO PORTE GA COMPARADORES ANAL GICOS GA CONVERSORES A D ALER 1 4 NO TMRO UPS DESABILITADOS MAIS CONFG S O IRRELEVANTES ITA INTERRUPCAO DE TMRO NA PARA O BANCO O0 S O de OK INICIALIZA O DO HARDWARE kho de dh 3e O U gt Ck Wk ck ck o k ATIVA DISPLAY DA UNIDADE Ok ck k ck ck Xk Xk xk k XxX X XxX Xx Xx INICIALIZAC O DAS VARI VEIS 4e de db ck Ct de de de koX LIMPA TODOS OS FLAGS 82 MOVLW MOVWF MOVLW MOVWF GOTO 6 8 r z r x cd 8 r MAIN CLRF CLRF MOVLW MOVWF MOVWF CHECA_BT1 BTFSS GOTO DECFSZ GOTO DECFSZ GOTO BTFSS GOTO GOTO BTl LIB BCF CHECA BT2 BTFSS GOTO DECFSZ GOTO DECFSZ GOTO BTFSS GOTO GOTO BT2 LIB BCF GOTO DEC BSF MOVF XORLW BTFSC GOTO MIN INTENSIDADE 256 250 TMRO ATUALIZA X ko x ck d X Ak ok ox A RA ROTINA PRINCIPAL 5 AXE KK A 0k ck FILTRO11 FILTRO21 T_FILTRO FILTRO12 FILTRO22 BOTAO1 BT1_
84. ESC ESC ESC ESC REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE LIMPA FLAG DE MOSTRAR TELA PRINCIPAL DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO PARA LIMPAR A TELA DELAY DE 1MS SELECIONA O DISPLAY P DADOS 128 LW Q SE LW Q SE LW a lt E LW Q SE LW Q SE LW lt 6 6 gt gt gt gt Q OVLW Q lt LW Q lt LW Q SE LW lt E LW Q SE LW Q SE LW Q POPOPOPOPOPOR Q E E CLRF RETURN lt ok ESCREVE ESCREVE PEI ESCREVE Yt ESCREVE Yen ESCREVE to ESCREVE RS OXC5 ESCREVE RS re ESCREVE cn ESCREVE ESCREVE 117 ESCREVE ESCREVE 0 ESCREVE 0 ESCREVE DISPLAY ESCREVE Sistema Didatico SELECIONA O DISPLAY P COMANDO POSICIONA O CURSOR POSI O 5 LINHA 1 SELECIONA O DISPLAY P DADOS ESCREVE MCMASTER LIMPA BARRAMENTO DE DADOS LE AE E NL EE X E X NE NE E NE UE ME O CONFIGURA ES INICIAIS DE HARDWARE Gee ck owe Ok CK oko XX TE Os NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO CONFIGURA ES DOS REGISTRADORES ESPECIAIS M QUINA E AGUARDA O ESTOURO DO WDT CONFIG CL
85. ESCREVE ESCREVE 0 ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE DISPLAY LINHA 1 DO LCD ck oko TELA PRINCIPAL DO LCD COM A FRASE DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 0 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE M DADOS M PROG LIMPA BARRAMENTO DE DADOS RETORNA Ok ok ck k k ck k k k Xx ROTINA DE ESCRITA LINHA 2 DO LCD o e o ko ck ok AX oko ko ee E oo ko o oA 0X o ESTA ROTINA ESCREVE A LINHA 2 DA TELA PRINCIPAL DO LCD A ROTINA LEVA EM CONTA TODAS AS VARI VEIS PERTINENTES P FORMAR A LINHA 2 OVLW CALL BSF OVLW BTFSC OVLW CALL ALIZA TELA LINHA 2 TEC MATRICIAL RS 0XC1 ESCREVE RS Us TIPO MEMORIA ESCREVE DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDO COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 1 SELECIONA O DISPLAY P DADOS EST UTILIZANDO A MEM RIA DE DADOS N O ESCREVE ESPACO EM BRANCO SIM ESCREVE NO DISPLAY Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER
86. FAZ O AJUSTE DECIMAL DO RESULTADO ROTA ES POR SEGUNDO CONVERTE CENTENA EM ASCII ESCREVE VALOR NO LCD CONVERTE DEZENA EM ASCII ESCREVE VALOR NO LCD CONVERTE UNIDADE EM ASCII ESCREVE VALOR NO LCD LIMPA BARRAMENTO DE DADOS RETORNA de de oko de e oko ko ko ko d o ko ok ko X A dd MOSTRAR A TEMPERATURA NO LCD de ck ok oko ok c ko ko d X ok e ck ko Ak ko ko o P CONVERTER O VALOR DO CANAL A D DO SENSOR MOSTRA ESTE NO LCD E TRANSMITE PELA USART LIMPA FLAG DE ATUALIZACAO DA TEMP CONVERTE A D EM GRAUS CELSIUS SALVA VALOR EM TEMP CELSIUS FAZ O AJUSTE DECIMAL DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 11 SELECIONA O DISPLAY P DADOS CONVERTE CENTENA EM ASCII ESCREVE VALOR NO LCD Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 291 ADDLW CALL MOVF ADDLW CALL MOVF BANK1 BTFSS GOTO BANKO MOVWF RETURN CONFIG CLRF BANK1 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVWF OVLW OVWF MOVLW MOVWF MOVLW MOVW a MOVLW MOVWF MOVLW MOVWF 0x30 ESCREVE UNIDADE W 0x30 ESCREVE DISPLAY TEMP CELSIUS W TXSTA TRMT 1 TXREG E E SKU
87. FILTRO TERMINOU CCPR2L 0x80 LIMPA BITS 4 E 5 DE CCP2CON to CCPR2L CCPR2CON lt 5 4 gt Tosc TMR2 Prescale tp 512 250ns 16 tp 2 048ms PWM gt Duty Cycle 50 y ESCREVE 50 NO LCD TRATA BOT O 3 AC O J FOI EXEC Sim FILTRO TERMINOU SETA BITS 4 E 5 DE CCP2CON to CCPR2L CCPR2CON lt 5 4 gt CCPR2L OxFF Tosc TMR2 Prescale to 1023 250ns 16 lp 4 092ms PWM gt Duty Cycle 99 90 ESCREVE 100 NO LCD 180 e O dete 5 3 x AX EXEMPLO DE C DIGO PARA UTILIZA O COM O MCMASTER EXPERI NCIA 14 M DULO E x x x PE VERS O 1 0 por DATA 14 04 2003 j Je x o x 5 x 5 x x XC x n DESCRI O GERAL NS E 4e d E x A s o ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DO M DULO PWM DO PIC16F877 ELE MONITORA OS QUATRO BOT ES E CONFORME O BOT O SELECIONADO APLICA UM VALOR DIFERENTE NO PWM FAZENDO ASSIM UM CONTROLE SOBRE A VELOCIDADE DO VENTILADOR NO LCD MOSTRADO O VALOR ATUAL DO DUT
88. LED RETORNA de oo eoe ko OK kc 7k ck X c e coke E SS ESTA ROTINA EXECUTA AS AC ES NECESS RIAS PA WA A X ck xk X k xk ROTINA CONVERTE RTE CONTADOR NO N MERO DO LIZARMOS O VALOR DE CONTADOR AX S EXE UA o0 ck ck k Xx xk XxX k k xk XxX XxX DO PROGRAMA de lt ok ck o Cho ko o de X 0e ko ck 0 o ko LIMPA LIMPA LIMPA LIMPA LIMPA ALTERA CONFIGURA CONFIGURA CONFIGURA CONFIGURA O PORTA O PORTB O PORTC O PORTD O PORTE I O D I O D I O D PARA O BANCO O PORTA O PORTB O PORTC I O DO PORTD DA RAM 58 OVW OVW OVW OVW OVL OVLW OVLW OVLW OVLW OVW CLRF CALL MAIN CALL CALL j BANKO MOVLW MOVWF BTFSC MOVLW MOVWF E MOVW GOTO GOTO GOTO GOTO BCF GOTO GOTO GOTO GOTO E CHECA BT1 BTFSS DECFSZ 55 BT1_LIB CHECA_BT2 BTFSS DECFSZ BTFSS B 00000000 TRISE B 00000111 CMCON B 00000111 ADCON1 B 10000101 OPTION_REG B 00100000 INTCON kx kx ok k O DSP_UNIDADE do A AX o XA A ck o FLAGS V_INICIO TEMPO
89. N O TRATA SIM DECREMENTA FIL T O COMO LIBERADO RO DO BOT O ACABOU N O TESTA PR XIMO BOT O SIM BO COMO PRESSIONADO TESTA PR XIMO BOT O REINICIALIZA FILTRO MARCA BOT O COMO LIBERADO BOT O 2 PRESSIONADO N O TRATA BO SIM DECREMENTA FILI T O COMO LIBERADO DO BOT O ACABOU N O TESTA PR XIMO BOT O SIM MARCA BO COMO PRESSIONADO TESTA PR XIMO BOT O REINICIALIZA FILTRO MARCA BOT O COMO LIBERADO BOT O 3 PRESSIONADO N O TRATA SIM DECREMENTA FIL N O CONTINUA SIM MARCA COMO LIBERADO RO DO BOT O ACABOU EXECU O DO PROGRAMA COMO PRESSIONADO E CONTINUA EXECU O DO PROGRAMA REINICIALIZA FILTRO MARCA BOT O COMO LIBERADO ATUALIZA LEDS CONFORME BOT ES TODOS OS BOT ES SOLTOS N O DEVE ALT SIM A FREQ MUDA PARA BANK1 PR2 255 DESLIGA INT TIMER2 MUDA PARA BANKO GARANTE PINO DO BUZZER EM 0 SAI DA INTERRUPCAO CHAMA TABELA DE FREO MUDA PARA BANK1 ACERTA VALOR DE PR2 CONFORME RETORNO LIGA INT DA TABELA TIMER2 MUDA PARA BANKO k kx KO OK ck xk xk k k xk k Xx DE INTERRUPCAO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 95 e Ck E oe E ck o e oe ck ok ko deo k
90. O DA RAM d E XX Coe ck O cb ck Ko HR ESTE TRECH ATUALIZA A RAM OVLW OVWF OVLW OVWF OVF OVWF ORIA_EEPROM END_EEPROM_H ENDERECO_H END_EEPROM_L ENDERECO_L 12C_EEPROM_READ BUFFER W VALOR_DADOS INDO DE 0X20 A 0X7F APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSIC O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS COMPARA O PONTEIRO COM A LT POS 1 J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM KE ce X INICIAIS DO DISPLAY MEE GE NE M CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS ESCREVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA SELECIONA O DISPLAY P DADOS E ko ke ko RR c IC O DO PROGRAMA L O DADOS DA MEM RIAS E2PROM EXTERNA E CARREGA ENDERECO P LEITURA CHAMA ROTINA P LER DADO SALVA DADO LIDO EM VALOR DADOS 230 LINHA 1 LINHA 2
91. OVLW B 00000111 OVWF ADCON1 OVLW B 00100111 OVWF SSPADD OVLW B 10000000 OVWF SSPSTAT BANKO MOVLW B 00101000 MOVWF SSPCON LIMPA LIMPA O PORTA LIMPA O PORTB PORTE PORTD PORTE LIMPA LIMPA ALTERA PARA O BANCO 1 DA RAM CONFIGURA I O DO PORTA CONFIGURA I O DO PORTB CONFIGURA 1 0 DO PORTC CONFIGURA 1 0 DO PORTD CONFIGURA 1 0 DO PORTE CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 8 TIMER 1 1 CONFIGURA INTERRUP ES DESABILITADA TODAS AS INTERRUP ES CONFIGURA CONVERSOR A D CONFIGURA PORTA E PORTE COMO 1 0 DIGITAL VELOCIDADE 100KHz 6 4MHz DESABILITA SLEW RATE CONTROL 100KHz SELECIONA BANCO 0 DA RAM HABILITA I2C MASTER MODE CONFIGURA PINOS COMO DA I2C AS INSTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT E COMECA NOVAMENTE BTFSC STATUS NOT TO GOTO r ed DO eo e E A ISTO EVITA PROBLEMAS NO START UP DO PIC RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM E RE deo AX 4k INICIALIZA O DA RAM Xo We CK Ces dee d A am
92. PASSOU SE 1MS FIM DE TEMPO1 VOLTA 6 INSTRU ES SIM RETORNA ko o X AR o dde o oko REA ko DE UM CARACTER NO DISPLAY W ANTES DE CHAMAR A ROTINA ATUALIZA DISPLAY PORTD PERDE 1US PARA ESTABILIZA O ENVIA UM PULSO DE ENABLE AO DISPLAY DELAY DE 1MS RETORNA dE NE E NU UE LIE X IINE E ME DEZENA DEC UNIDADE DEC A de oov Xs ox xxx x UM ARGUMENTO PASSADO PELO WORK E RETORNA NAS VARI VEIS CENTENA DEZENA E UNIDADE O N MERO BCD CORRESPOND NTE AO PAR METRO PASSADO SALVA VALOR A CONVERTER EM AUX RESETA REGISTRADORES VALOR A CONVERTER 0 SIM RETORNA N O INCREMENTA UNIDADE UNIDADE N O SIM RESETA UNIDADE INCREMENTA DEZENA 10d DEZENA N O SIM RESETA DEZENA INCREMENTA CENTENA 10d FIM DA CONVERS O N O VOLTA P CONTINUAR CONVERS O SIM AA E AA 0x oko A Ck o ok AE sk X A AA Xo CONFIGURAC ES INICIAIS DE HARDWARE E SOFTWARE ko o o ES Dh RR A OM c Se NESTA ROTINA S O INICIALIZADAS AS PORTAS DE 1 0 DO MICROCONTROLADOR E AS CONFIGURAC ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 241
93. RETORNA KO Xk k xk xk k X XxX xk NA MEM RIA DE PROGRAMA Ok 0 k k k RIA DE PROGRAMA FEITA DE 4 EM 4 WORDS OU DE 8 EM 8 BYTES OBRIGATORIAMENTE ESTAR ALINHADO OU SEJA DESTA FORMA SEMPRE 01 10 E 11 COMPLETANDO ASSI ESTA ROTINA ESCREVE QUATRO WO OS VAORES A SEREM SALVOS DEVE DADO_HIGH_00 DADO_LOW_00 DADO_HIGH_10 DADO_LOW_10 E DA PROGRAM WRITE MOVF ENDERECO HIGH W BANKSEL EEADRH MOVWF EEADRH BANKSEL ENDERECO LOW MOVF ENDERECO LOW W ANDLW B 11111100 RDS A ESCRITA NA MEM RIA DE PROGRAMA FEITA NOS ENDERECOS COM FINAIS 00 4 WORDS 14 BITS SER PASSADOS PELOS REGISTRADORES DADO HIGH 01 DADO LOW 01 NA MEM RIA DE PROGRAMA DO HIGH 11 DADO LOW 11 O ENDERECO DEVE SER PASSADO PELOS REGIST ENDERECO HIGH E ENDERECO LOW CARREGA NO WORK O ENDERE O DE DESTINO ALTERA P BANK DO REGISTRADOR EEADH SALVA ENDERECO EM EEADH ALTERA P BANK DO REGIST ENDERECO LOW CARREGA NO WORK O ENDERE O DE DESTINO MASCARA PARA ZERAR OS LTIMOS DOIS BIT 204 FLASH BANKSEL MOVWF MOVLW DADO_HIGH_00 MOVWF BANKSEL MOVF MOVWF INCF MOVF MOVWF INCF BANKSEL BSF BSF MOVLW MOVWF MOVLW MOVWF BSF NOP NOP BCF BANKSEL INCF MOVLW ANDWF ENDERECO BTFSS GOTO BANKSEL RETURN de AS E ko ox
94. TAMENTOS DOS BOT ES LAMENTO DO BOT O 0 RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 231 GOTO MOVLW MOVWF INCF CALL GOTO VARRE TURBO_TECLA TEMPO_TURBO VALOR DADOS F ATUALIZA TELA LINHA 2 VARRE N O VOLTA P VARRE SIM RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS INCREMENTA VALOR DADOS CHAMA ROTINA P ATUALIZAR LCD VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 1 TRATA_BOTAO_1 DECFSZ GOTO DECFSZ GOTO MOVLW MOVWF DECF CALL GOTO FILTRO BOTOES F VARRE TEMPO TURBO F VARRE TURBO TECLA TEMPO TURBO VALOR DADOS F ATUALIZA TELA LINHA 2 VARRE FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO N O VOLTA P VARRE SIM RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS DECREMENTA VALOR DADOS CHAMA ROTINA P ATUALIZAR LCD VOLTA P VARREDURA DOS BOT ES
95. ke Wes e As ESTA ROTINA ESCREVE A LINHA 2 DA TELA PRINCIPAL DO LCD A ROTINA LEVA EM CONTA A VARI VEL CLRF BCF MOVLW CALL BSF SWAPF ANDLW MOVWF MOVLW SUBWF MOVLW BTFSC MOVLW ADDWF CALL OVF ANDLW OVWF BTFSC ADDWF CALL MOVLW CALL CLRF ATUALIZA TELA LINHA 2 TEC MATRICIAL RS 6 ESCREVE RS VALOR_DADOS W B 00001111 AUX 0X0A AUX W 0x30 STATUS C 0X37 AUX W ESCREVE VALOR_DADOS W B 00001111 AUX 0X0A AUX W 0x30 STATUS C 0X37 AUX W ESCREVE rt ESCREVE DISPLAY SE SE LECIONA O DISP COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA LECIONA O DISP INVERTE NIBLE DO MASCARA BITS MAIS SIGNIFICATIVOS SA LVA EM AUXILIA VALOR DADOS PARA FORMAR A LINHA 2 DESATIVA TODAS AS LINHAS DO TECLADO LAY P COMANDO 6 LAY P DADOS VALOR DADOS R AUX 10d ATUALIZA FLAG DE CARRY CA RREGA WORK COM RESULTADO POSITIVO 30h UMA LETRA SIM CARREGA WORK COM 37h NAO WORK F CA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII ENVIA CARACTER AO DISPLAY LCD CARREGA WORK COM VALOR_DADOS MASCARA BITS MAIS SIGNIFICATIVOS LVA EM AUXILIAR SA AUX 10d ATUALIZA FLAG DE CARRY CA RREGA WORK COM RESULTADO POSITIVO 30h UMA LETRA S
96. lt gt 0 E oko ko ESTE TRECHO DO PROGRAMA L OS DADOS DAS MEM RIAS E2PROM E FLASH E ATUALIZA A RAM MOVLW LE_MEMORIA_PROGRAMA END_MEM_PROG_H Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 207 LE_MEMORIA_DADOS MOVWF MOVLW MOVWF CALL OVF OVW OVF OVW LEi 1 OVLW OVWF CALL OVF OVWF ENDERECO_HIGH END_MEM_PROG_L ENDERECO_LOW FLASH_PROGRAM_READ DADO HIGH 00 W VALOR PROG HIGH DADO LOW 00 W VALOR PROG LOW END MEM DADO ENDERECO LOW DATA EEPROM READ DADO LOW 00 W VALOR DADOS r ck E oe AAA X 00k Ak ok X ROTINA DE ESCRITA CARREGA ENDERECO P LEITURA CHAMA ROTINA P LER DADO SALVA O DADO LIDO EM VALOR PROG HIGH E VALOR PROG LOW CARREGA ENDERECO P LEITURA CHAMA ROTINA P LER DADO SALVA DADO LIDO EM VALOR DADOS Re e 0 OA OK CA e des X6 AX SA DA TELA PRINCIPAL 4 ck ko e hook o Xo EE E e ck Ko RM MH ESTA ROTINA ESCREVE A TELA LINHA 1 LINHA 2 CALL CALL 8 o oe ook ow de Ck 98 8 oe ode de eoo M DADOS M PROG gt xxh lt XXX
97. n 3 CARREGA MULTIPLICADOR PARA O DFI AY DELAY PROPORCIONAL AO VALOR DO CONTADOR im 1 PRESS N o Sim INVERTE LEDS DO DISPLAY Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 31 CONTADOR CONTADOR STEP CONTADOR lt M N CONTADOR M NIMO BOT O 1 SOLTO CONTADOR CONTADOR STEP CONTADOR gt M X CONTADOR M XIMO BOT O 2 SOLTO CARREGA ARGUMENTO PASSADO PELO WORK EM TEMPO2 INICIALIZA TEMPO1 COM 250d NOP 1us FIM DO TEMPO FIM DO TEMPO RETURN 32 e O PWRTE ON amp _WDT_OFF amp XT OSC We SAO de s de ko o 00 E OK e odes e 7 U EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER e EXPERI NCIA 3 PISCA PISCA xo ke ko de TE ck oko ok E Ck ko o e ko oko gt VERS O 1 0 DATA 14 04 2003 eco ck des ode o cde E ES ko ko ko ko d AO 0X E E SR OA AG NP MA ONE A lt coke veo oo dee ko AA oo OO ck oko Oo A E DESCRI O GERAL ck Ok kk ko ko kk ok ok kk
98. 5V E MOSTRADO NO LCD FORAM UTILIZADAS ROTINAS DE MULTIPLICA O DE 8x8 E DIVIS O DE 16x16 ESTAS ROTINAS FORAM RETIRADAS DE APLICATION NOTES DA PR PRIA MICROCHIP lt lt E A cde 8 A C Wk OK X koX 0A 2R deo E CONFIGURA ES PARA GRAVA O ko seo 8 MRE 8 Ck ck A ARM HR CONFIG CP OFF _CPD_OFF amp _DEBUG_OFF _LVP_OFF amp _ 6 _BODEN_OFF PWRTE ON amp _WDT_ON amp XT OSC A de A K RA AE ARA E 0o OW y DEFINI O DAS VARI VEIS de ARA Ck o AA Ko 0 TR Mc ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0 POSIC O INICIAL DA RAM ACCaHI ACUMULADOR a DE 16 BITS UTILIZADO ACCaLO NA ROTINA DE DIVIS O ACCbHI ACUMULADOR b DE 16 BITS UTILIZADO ACCbLO NA ROTINA DE DIVIS O ACCCHI ACUMULADOR c DE 16 BITS UTILIZADO ACCCLO NA ROTINA DE DIVIS O ACCdHI ACUMULADOR d DE 16 BITS UTILIZADO ACCdLO NA ROTINA DE DIVIS O temp CONTADOR TEMPOR RIO UTILIZADO NA ROTINA DE DIVIS O H byte ACUMULADOR DE 16 BITS UTILIZADO L byte P RETORNAR O VALOR DA ROTINA DE MULTIPLICA O mulpl
99. A ROTINA DE SATURAC O GARANTE UM VALOR M XIMO PARA O TEMPO DE CARGA OxFF SATURACAO MOVLW OXFF MOVWF CONTADOR_AD SATURA O CONTADOR CAPACITOR N O CARREGOU MOSTRA CONTADOR MOVLW OXC9 COMANDO PARA POSICIONAR O CURSOR CALL ESCREVE LINHA 1 COLUNA 9 BSF RS SELECIONA O DISPLAY P DADOS SWAPF CONTADOR AD W INVERTE NIBLE DO CONTADOR AD ANDLW B 00001111 MASCARA BITS MAIS SIGNIFICATIVOS MOVWF AUX SALVA EM AUXILIAR MOVLW OXOA SUBWF AUX W AUX 10d ATUALIZA FLAG DE CARRY MOVLW 0x30 CARREGA WORK COM 30h BTFSC STATUS C RESULTADO E POSITIVO UMA LETRA 160 MOVLW ADDWF CALL BTFSC ADDWF CALL BCF GOTO m END 0x37 AUX W ESCREVE CONTADOR AD W B 00001111 AUX 0X0A AUX W 0x30 STATUS C 0X37 AUX W ESCREVE RS DESCARGA_CAPACITOR SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII MOSTRA NO DISPLAY CARREGA NO WORK O CONTADOR AD MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO E POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII MOSTRA NO DISPLAY SELECIONA O DISPLAY P COMANDOS VOLTA P DESCARREGAR O CAPACITOR ck eco 4o ode ko c
100. AAA AS A A AE DEFINI O DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN EQU 10 MAX EQU 240 STEP EQU 5 MULTIPLO EQU 3 A CONSTANTE DISPLAY REPRESENTA O S MBOLO QUE APARECER PISCANDO NO DISPLAY 1 LED LIGADO E O LED DESLIGADO A RELA O ENTRE BITS E SEGMENTOS A SEGUINTE GFEDCBA a E na 5 E g E E E d DISPLAY EQU B 01110110 LETRA H eode wA oo ok X Xo OK CK X ook ko Xo Kk coke 3 Oe we ce xo e A Xs ko P ENTRADAS desk Wo e Ao lt lt A Kk 0 OK cS ko ce X cde e de ws X ko koc DEFINIC O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO ENTRADA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 HDEF INE BT1 PORTB 0 BOT O 1 INCREMENTA 1 gt PRESSIONADO O gt LIBERADO HDEF INE BT2 PORTB 1 BOT O 2 DECREMENTA 1 gt PRESSIONADO O lt LIBERADO 3 We ode 28 K E Wo A o X Oo os del we E kk SA DAS X ck o co X e Ok oko E Xo dej gt A 5 Ro lt A DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO SA DA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1
101. ATUALIZA kk k k FA A OZ F FI DESL TIMER ATUALIZA T FILTRO FILTRO1 FILTRO2 BOTAO1 BT1_LIB FILTRO1 F CHECA_BT1 ST_BT1 ACAO_BT1 CHECA_BT2 ST_BT1 BOTAO2 BT2_LIB FILTRO2 F CHECA_BT2 ST_BT2 ACAO_BT2 MAIN CONFIGURA 1 0 DO PORTE DESLIGA COMPARADORES ANAL GICOS DESLIGA CONVERSORES A D PRESCALER 1 64 NO TMRO PULL UPS DESABILITADOS AS DEMAIS CONFG S O IRRELEVANTES HABILITA INTERRUP O DE TMRO RETORNA PARA O BANCO O0 AA E 9 A INICIALIZACAO DO HARDWARE TAE EE RE ARA Co R A ATIVA DISPLAY DA UNIDADE mbi EE E NE UE EIE ME ME Mo E INICIALIZA O DAS VARI VEIS 6 TE E Xo xe X LIMPA TODOS OS FLAGS INICIA TEMPO V INICIO ATUALIZA O DISPLAY INICIALMENTE La Eb M DL NE NE E 9 aE ME DNE XE E ROTINA PRINCIPAL Lar ue S DE NL ME XE ND NE e ELI MEE GE XD E CHEGOU AO FIM SIM ENT O DESLIGA O TIMER N O ATUALIZA O DISPLAY INICIALIZA FILTRO1 T FILTRO INICIALIZA FILTRO2 T FILTRO O BOT O 1 EST PRESSIONADO NAO ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM BOT O J ESTAVA PRESSIONADO N O EXECUTA A O DO BOT O SIM CHEC
102. ATUALIZA CALL CONVERTE CONVERTE CONTADOR NO N MERO DO DISPLAY MOVWF PORTD ATUALIZA O PORTD PARA VISUALIZARMOS O VALOR DE CONTADOR NO DISPLAY GOTO MAIN VOLTA AO LOOP PRINCIPAL 4 EE NE E M RE E E M S KE E RA EL ME Lus FIM DO PROGRAMA E NENE c Ok o o oko Ko E EE ko de Ao 8 OM Oo RRE END OBRIGAT RIO Dicas e Coment rios A tabela implementada neste exemplo apresenta 16 linhas assim poss vel representar qualquer valor hexadecimal entre Oh e Fh No entanto utilizando o mesmo conceito poder amos criar representa es para praticamente todas as letras do alfabeto E para escrever mensagens no display bastaria associar a cada letra um n mero bin rio O conceito da tabela n o se limita apenas utilizac o com displays de 7 segmentos infinitas situa es podem ser resolvidas com o uso de uma tabela Por exemplo pode se criar uma tabela para converter n meros bin rios em caracteres ASCII e vice versa Exerc cios Propostos 1 Mantendo as 16 linhas atuais alterar a tabela para mostrar as letras A C a E F G H ALE pu Lit n O P er e 2 Alterar o software fim de utilizar uma tabela que contenha todos os n meros e todas as poss veis letras Manual do Usu rio Sistema de Treinamento em Microcontroladore
103. BTFSS GOTO 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA RAM EX ck Xo ck ko X CONFIGURA ES INICIAIS DO DISPLAY A c A A ck ook o ck E ck o de Ck oko ck ck ck ko x ck E ko ck ck ko xk ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS BCF LW LW LW LW LW LW INICIALIZACAO DISPLAY RS 0x30 ESCREVE 3 DELAY_MS 0x30 ESCREVE 0x30 ESCREVE B 00111000 ESCREVE B 00000001 ESCREVE m DELAY MS RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM D E Wr dE UE LE E Jb GENE E G IE NEM E INDO DE 0X20 A 0X7F APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSI O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS COMPARA O PONTEIRO COM A LT POS 1 J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM lt Ok RR k xk XxX XxX Xx CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS Manual d
104. CONVERTE DEZENA EM ASCII ESCREVE VALOR NO LCD CONVERTE UNIDADE EM ASCII ESCREVE VALOR NO LCD LIMPA BARRAMENTO DE DADOS CARREGA EM WORK A TEMPERATURA ALTERA P BANCO 1 DA RAM O BUFFER DE TX EST VAZIO N O AGUARDA ESVAZIAR SIM VOLTA P BANCO 0 DA RAM CARREGA TXREG COM O VALOR DO WORK TRANSMITE A TEMPERATURA EM GRAUS CELSIUS PELA USART RETORNA deo eo A Xe Xo o ck Ck oo 0 0 X CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE PORTA PORTB PORTC PORTD PORTE B 00101111 TR TR TR TR B SA 00001111 SB 10011001 5 00000000 SD 00000000 SE 11011011 ION REG B 01000000 INTCON B 00000010 PIEL B 00000111 CMCON B 00000100 ADCON1 LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO 1 DA RAM CONFIGURA 1 0 DO PORTA CONFIGURA 1 0 DO PORTB CONFIGURA 1 0 DO PORTC CONFIGURA 1 0 DO PORTD CONFIGURA I O DO PORTE CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT cS TIMER 1 1 CONFIGURA INTERRUP ES HABILITA INTER DE PERIF RICOS CONFIGURA INTER DE PERIF RICOS HABILITA A INTERRUP O DE TMR2 DESLIGA OS COMPARADORES CONFIGURA CONVERSOR A D RAO RAl E COMO ANAL GICO ce X
105. DA RAM IRO P A PR X POS COM A LT POS 1 POSI ES IMA POSI O OFF CARREGA CONTADOR DE 1SEG xk VARREDURA DOS BOT ES LOOP PRINCIPAL A E ko oko e k ok ko ok X 3 K ck ck ck ok xk Xx k k A ROTINA PRINCIPAL FICA CHECANDO O ESTADO DOS BOT ES PRESSIONADO A ROTINA DE TRATAMENTO CASO ALGUM SEJA DO BOT O CHAMADA HABILITA AS INTERRUPC ES USADA INT DOS DISPLAYS TMRO PARA VARREDURA LIMPA WATCHDOG TIMER O BOT O DE UP EST PRESSIONADO SIM PULA P TRATA BT UP N O O BOT O DE DOWN EST PRESSIONADO SIM PULA P TRATA BT DOWN NAO O BOT O START STOP EST PRESSIONADO N O SIM PULA P TRATA BT START STOP Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 115 FILTRO_TECLA FILTRO_BOTOES TEMPO_TURBO MOVLW MOVWF MOVLW MOVWF GOTO VARRE ERE ERA TRATAMENTO DOS BOT ES s Co e oe AA EE EE 6 8 RAE THE CARREGA NO WORK O VALOR DE FILTRO TECLA SALVA EM FILTRO BOTOES RECARREGA FILTRO P EVITAR RUIDOS CARREGA TEMPO DO TURBO DAS TECLAS COM 1 IGNORA O TURBO A PRIMEIRA VEZ QUE A TECLA PRESSIONADA VOLTA PARA VARRER TECLADO lt ks k
106. DE ERRO RETURN SETA FLAG DE ERRO NACK OUT CARREGA 1 SSPCON2 ACKDT 1 y ENVIA ACK SSPCON2 ACKEN 1 RETURN 218 IC EEPROM READ ENVIA START BIT SSPCON2 SEN 1 y AGUARDA LIVRE OCORREU P ERRO N o ENVIA START BIT SSPCON2 SEN 1 ENVIA CONTROLE END COMP WRITE 10101110b gt SSPBUF ENVIA CONTROLE END COMP READ 10101111b gt SSPBUF E AGUARDA LIVRE gt AGUARDA LIVRE TESTA ACK OCORREU Y ERRO N o TESTA ACK ENVIA ENDEREGO HIGH xxxxxxxxb gt SSPBUF RECEBE BYTE SSPCON2 RCEN 1 AGUARDA LIVRE TESTA ACK OCORREU 5 ERRO ENVIA ENDEREGO LOW xxxxxxxxb gt SSPBUF C AGUARDA LIVRE gt TESTA ACK AGUARDA LIVRE ENVIA STOP BIT SSPCON2 PEN 1 FC LIVRE RN Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 219 IC EEPROM WRITE ENVIA START BIT SSPCON2 SEN 1 y AGUARDA IC LIVRE ENVIA CONTROLE END COMP WRITE 10101110b gt SSPBUF FC LIVRE m ACK OCORREU ERRO ENVIA ENDEREGO HIGH xxxxxxxxb gt SSPBUF AGUARDA 20 LIVRE TESTA ACK OCORREU 5 ERRO N o ENVIA ENDEREGO LOW xxxxxxxxb gt SSPBUF ao
107. DEL ESC INI ESC INI ESC INT ESC CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA ECIONA O DISPLAY P COMANDOS REVE COMANDO 0X30 PARA CIALIZA O AY DE 3MS EXIGIDO PELO DISPLAY REVE COMANDO 0X30 PARA CIALIZA O REVE COMANDO 0X30 PARA CIALIZA O REVE COMANDO PARA ERFACE DE 8 VIAS DE DADOS REVE COMANDO PARA LIMPAR TODO O DISPLAY DEL ESC AY DE 1MS REVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESC AUT xk DA REVE COMANDO PARA INCREM OM TICO A ESQUERDA ck ck ck xk Xx k TELA PRINCIPAL COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 0 SEL ECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LET RAS DE A D por RC RAO 158 Q Q Q Q Q Q Q Q Q Q Q POPOPOPOPOPOPOPOPOPOPOP Q BCF MOVI CALI BSF Q Q Q Q Q Q Q Q Q Q Q Q Q POPOPOPOPOPOPOPOPOPOPOPOPOPOPOP Q Q Q ROTINA PARA DESCARREGAR O CAPACITOR DE LEITURA DO CONVERSOR A D A ke wb E STE E U Xs oco CONVERTE O PINO DO MICROCONTROLADOR EM SA DA COM N VEL L GICO E O CAPACITOR SE DESCARREGUE EM SEGUIDA O PINO CONVERTIDO ENTRADA PARA PERMITIR QUE O CAPACITOR SE CARREGUE ck XX ESTA ROTINA E AGUARDA QU NOVAMENTE E s SESESESESESESESESESES
108. E INICIALIZA FILTRO O BOT O EST PRESSIO N O ENT O CONTINUA SIM DECREMENTA O FILTRO TERMINOU N O CONTINUA ESPERA SIM DEVE SOMAR SENTIDO SIM N O DECREMENTA O CONTADO MOVE O VALOR M NIMO SUBTRAI O VALOR DE W TESTA CARRY RESULTA N O ENT O CONTA gt SIM ENT O CONTA lt M INCREMENTA CONTADOR T FILTRO NADO ESPERANDO DO BOT O NDO 0 R PARA W MIN DE CONTADOR DO NEGATIVO IN IN OVAMENTE 26 BCF GOTO SOMA INCF MOVLW SUBWF 55 GOTO BSF GOTO ATUALIZA MOVF MOVWF 55 GOTO GOTO m END POIS PASSOU DO LIMITE SENTIDO MUDA SENTIDO PARA SOMA MAIN VOLTA AO LOOP PRINCIPAL CONTADOR F INCREMENTA O CONTADOR MAX MOVE O VALOR M XIMO PARA W CONTADOR W SUBTRAI O VALOR DE W MIN DE CONTADOR STATUS C TESTA CARRY RESULTADO NEGATIVO ATUALIZA SIM ENT O CONTA MAX N O ENT O CONTA gt MAX SENTIDO MUDA SENTIDO PARA SUBTRACAO MAIN VOLTA AO LOOP PRINCIPAL CONTADOR W COLOCA CONTADOR EM W PORTD ATUALIZA O PORTD PARA VISUALIZARMOS O VALOR DE CONTADOR BOTAO O BOT O CONTINUA PRESSIONADO 1 SIM ENT O ESPERA LIBERA O PARA QUE O CONTADOR DISPARE MAIN N O VOLTA AO LOOP PRINCIPAL E TA XA AR ko TEA A ces hu E CRA AR RE FIM DO PROGRAMA 4X
109. E RR e Uo eode o A AX Xo A RA ESTA ROTINA SOMENTE EXECUTA CASO ALGUM ERRO DE LEITURA GRAVA O OCORRA COM A MEM RIA SERIAL A ROTINA ENVIA UM STOP BIT PARA FINALIZAR A COMUNICA O COM A MEM RIA SERIAL ENVIA UMA MENSAGEM DE ERRO AO DISPLAY E AP S 1s RETORNA TELA PRINCIPAL I2C ERRO BANK1 BSF SSPCON2 PEN BANKO CLRF TEC_MATRICIAL BCF RS MOVLW 6 CALL ESCREVE BSF RS MOVLW CALL ESCREVE MOVLW CALL ESCREVE MOVLW CALL ESCREVE CLRF DISPLAY MOVLW 250 CALL DELAY_MS MOVLW 250 CALL DELAY_MS MOVLW 250 CALL DELAY_MS MOVLW 250 CALL DELAY_MS CALL ATUALIZA_TELA_LINHA_2 ALTERA P BANK1 INICIA STOP BIT VOLTA P BANKO DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDO COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 6 SELECIONA O DISPLAY P DADOS ESCREVE Err NO LCD LIMPA BARRAMENTO DE DADOS DELAY DE 1seg ATUALIZA TELA PRINCIPAL 228 RETURN RETORNA E ok REE AR P CONFIGURAC ES INICIAIS DE HARDWARE E SOFTWARE sco E ko ARA ck MA ck Ko coc AR RARA AA ko oe AE NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA AS VARI VEIS DE RAM E AGUARDA O ESTOURO D
110. EA e DE EE de c FLAG DE USU RIO Ak deo DO Uk x X ko X ROS ENTRADAS ck ck ck k XxX Xx k k X AS ENTRADAS DEVEM SER ASSOCIADAS FUTURAS ALTERA ES DO HARDWARE HDEF INE PINO AD TRISA 5 SDEFINE CAD PORTA 5 de Ck cook ox dee ko WX 7 X e OR d CoU ck kuu deo ko ck Ao XX Xo AS SA DAS DEVEM SER ASSOCIADAS A FUTURAS ALTERA ES DO HARDWARE SDEFINE DISPLAY PORTD HDEF INE RS PORTE O r r HDEF INE ENABLE PORTE 1 ok E AR e dd ko ks ks k ko xk k XxX k xk XxX X Xx A NOMES PARA FACILITAR A PROGRAMA O E PINO P LEITURA DOS JUMPERS 0 FOR A A DESCARGA DO CAPACITOR 1 LIBERA A CARGA DO CAPACITOR PINO P LEITURA DOS JUMPERS 0 CAPACITOR DESCARREGADO 1 CAPACITOR CARREGADO ES 0 6 we des s Os c SA DAS MAR ue odes MAD ERE MO MEVA AA Ska ku ox 3k k NOMES PARA FACILITAR A PROGRAMA O E BARRAMENTO DE DADOS DO DISPLAY INDICA P DISPLAY UM DADO OU COMANDO 1 gt DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE SUBIDA E de sk E m VETOR DE RESET DO MICROCONTROLADOR 7 o DR POSI O INICIAL PARA EXECU O DO ORG
111. GOTO 0x000 CONFIG E cA MX Ao gt X X KO ok ck ck k xk Xk k Xx k xk XxX XxX PROGRAMA ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGI O DESTINADA AS ROTINAS SEGUINTES KO Ok Xx E ROTINA DE DELAY DE 1MS AT 256MS E E Xo e 0k A SR ESTA U EM WORK W DELAY MS OVWF 1 OVLW 250 OVWF CLRWDT DECFSZ TEMPOO F GOTO 2 DECFSZ 1 GOTO 5 6 i RETURN e E ko A ko X o gt ROTINA DE ESCRITA O Uk seco e OX ok 8 0 0 lt ck k oko oko e oe HE Cho ko de oe u IA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS LIMPA WDT PERDE TEMPO FIM DE TEMPOO N O VOLTA 2 INSTRU ES SIM PASSOU SE 1MS FIM DE TEMPO1 VOLTA 6 INSTRU ES SIM RETORNA w ks ks ck k k xk k XxX k xk XxX XxX X X DE UM CARACTER NO DISPLAY E lt lt lt de e A k de oA 168 ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK W ANTES DE CHAMAR
112. Microcontroladores PIC Introdu o O McMaster um equipamento para desenvolvimento de sistemas completo para o estudo da tecnologia de microcontroladores Microchip e em particular ao estudo do microcontrolador PIC16F877A Na verdade este sistema serve para muito mais que simplesmente o aperfei oamento dos conhecimentos da fam lia PIC Com ele o usu rio capaz de criar projetos completos colocando em teste tamb m a efici ncia de seus conceitos e algoritmos Tudo isso poss vel porque este sistema foi criado e desenvolvido pensando na did tica de ensino e nos problemas mais comuns do mercado em rela o ao uso de microcontroladores Vis o Macro do Sistema Nesta se o ser abordado atrav s de uma vis o macro o conceito do sistema utilizado no McMaster Ele composto de um gravador para o microcontrolador o microcontrolador PIC central os perif ricos ligados ao microcontrolador aos quais daremos o nome de perif ricos padr o e um conector de expans o para experi ncias onde novos perif ricos aos quais daremos o nome de perif ricos adicionais poder o ser ligados Um dos perif ricos padr o do MCMASTER o m dulo de comunica o serial RS232 Como o gravador tamb m utiliza comunica o serial RS232 para se comunicar com o Mplab e no MCMASTER existe apenas uma sa da serial este recurso deve ser compartilhado para que tanto o gravador como o m dulo RS232 do sistema possam utilizar a mesma sa da Desta
113. O E LEITURA DO TECLADO 00 BOT O 0 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 0 N O 0 BOT O 1 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 1 N O FO BOT O 2 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 2 N O O BOT O 3 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 3 N O DESATIVA A LINHA 4 DO TECLADO MATRICIAL FILTRO P EVITAR RUIDOS MOVLW MOVWF GOTO FILTRO TECLA FILTRO BOTOES VARRE CARREGA O VALOR DE FILTRO TECLA SALVA EM FILTRO BOTOES RECARREGA FILTRO P EVITAR RUIDOS NOS BOT ES VOLTA PARA VARRER TECLADO Ke ERE o E ko oko kk ck xk ko ko ck ck Ck ok ko ko ok ko ok X TRATAMENTO DOS BOT ES A E E EE CR o 0o de A X ok de E oko koe A Ak ok ok X NESTE TRECHO DO PROGRAMA EST O TODOS OS TRATAMENTOS DOS BOT ES TRATAMENTO DO BOTAO 0 TRATA_BOTAO_0 MOVF BTFSC GOTO DECFSZ GOTO
114. O UTILIZADAS POR ISSO PODEMOS SUBSTITUIR TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ESTE SISTEMA N O OBRIGAT RIO MAS PODE EVITAR PROBLEMAS FUTUROS RETORNA DA INTERRUP O EN DERE O INICIAL DA INTERRUP O ARE deo AA Xo XA AA o oko ko Ck o A AE oko ko XA X deo A A AX ROTINA DE CONVERS O BIN RIO DISPLAY 68 d X A ok EA A E XA oko ke ko e ko Xe c ESTA ROTINA IR RETORNAR EM W O SIMBOLO CORRETO QUE DEVE SER MOSTRADO NO DISPLAY PARA CADA VALOR DE CONTADOR O RETORNO J EST FORMATADO PARA AS CONDI ES DE LIGA O DO DISPLAY AO PORTD a s f b r g E r F e 6 d CONVERTE MOVF CONTADOR W COLOCA CONTADOR EM W ANDLW B 00001111 MASCARA VALOR DE CONTADOR CONSIDERAR SOMENTE AT 15 ADDWF i B GFEDCBA POSIC O CORRETA DOS SEGMENTOS RETLW B 00111111 00 RETORNA S MBOLO CORRETO 0 RETLW 00000110 01 RETORNA S MBOLO CORRETO 1 RETLW B 01011011 02 RETORNA S MBOLO CORRETO 2 RETLW B 01001111 03 RETORNA S MBOLO CORRETO 3 RETLW 01100110 04 RETORNA S MBOLO CORRETO 4 RETL
115. PULA P VARRE DISPLAY SIM SALVA O STATUS DOS BOTOES INCR O NDICE DE VAR DOS DISPLAYS 110 MOVLW 9 XORWF INDICE VARRE DISPLAY W LIMITA CONTAGEM DE 0 A 4 BTFSC STATUS Z INDICE VARRE DISPLAY 5 CLRFE INDICE VARRE DISPLAY SIM LIMPA CONTADOR N O MOVF INDICE VARRE DISPLAY W CARREGA NO WORK O VALOR DO NDICE ADDLW UNIDADE SOMA ENDERE O DO PRIMEIRO D GITO MOVWF FSR SALVA RESULTADO NO FSR APONTANDO PARA O ENDERECO DO D GITO ATUAL ENDERECAMENTO INDIRETO CLRFE SEGMENTOS LIMPA OS SEGMENTOS BLANK UTILIZADO P EVITAR SOMBRAS NOS DISPLAYS MOVLW B 00001111 PREPARA M SCARA ANDWF MUX F EXECUTA M SCARA DESLIGA OS DISP BCF C LEDS DESLIGA O COMUM DOS LEDS MOVLW 4 XORWF INDICE VARRE DISPLAY W BTFSS STATUS Z DEVE ACENDER LEDS GOTO ACENDE DISPLAYS AO PULA P ACENDE DISPLAYS SIM ACENDE LEDS BSF C_LEDS HABILITA GRUPO DE LEDS GOTO 5 1 DELAY DE 205 MOVF LEDS W MOVWF SEGMENTOS ATUALIZA OS SEGMENTOS COM O VALOR DE LEDS GOTO SAI_INT_TMRO PULA P SAI INT TMRO ACENDE DISPLAYS MOVF INDICE VARRE DISPLAY W SALVA NO WORK O VALOR DO NDICE CALL TABELA MUX CONSULTA TABELA MUX IORWF MUX F ATUALIZA MUX SELECIONANDO O DISPLAYS CORRETO PARA O MOMENTO GOTO 41 DELAY DE 2US TEMPO DE RESPOSTA DO TRANSISTOR MOVE INDF W RECUPERA NO WORK O VALOR DO D GITO CALL TABELA DISPLAY 7 SEG CONSULTA TABELA P DISPLAYS MOVWF SEGMENTOS AT
116. ROTINA DE DELAY FILTRO FILTRO PARA TECLAS NUM LINHA ARMAZENA O N MERO DA LINHA ATIVADA NUM COLUNA ARMAZENA O N MERO DA COLUNA LINHA ATIVA REGISTRADOR AUXILAR PARA ATIVAR AS LINHAS DO TECLADO 4x4 ENDC de ode ck e o Ju ox o ko e CE ko e o oko ko kl d Ae Ok 2 ke o zs DEFINI O DAS VARI VEIS INTERNAS DO PIC d X De O amp P ko ko oko CE oo A ke dec des Ws ARQUIVO DE DEFINICOES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO P16F877A INC MICROCONTROLADOR UTILIZADO 1 dc we Se Jk de 8 eo O E pu DEFINI O DOS BANCOS DE RAM A de o o ck E Ck e oe oe oko ck e ko E ko ko e E ko X ko oko d r OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA HDEF INE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM X o eo de oko Go X Ck e o6 de eo po CONSTANTES INTERNAS de o EX o oe E Ck e o6 Ck des
117. SUBWF BTFSC GOTO INCF L0011001 TRISC 00000000 TRISD 00000000 TRISE 00000111 CMCON 00000111 ADCON1 B 10000000 OPTION_REG B 00000000 INTCON C_LEDS LINHA_4 MIN CONTADOR PORTD E E CR Ok ks k k 3 T_FILTRO FILTRO BOTAO MAIN FILTRO F CHECA_BT SENTIDO SOMA CONTADOR F MIN CONTADOR W STATUS C ATUALIZA CONTADOR F E CONFIGURA 1 0 DO POR CONFIGURA 1 0 DO POR CONFIGURA 1 0 DO POR DESLIGA COMPARADORES TC TD TE ANAL GICOS DESLIGA CONVERSORES A D PRESCALER 1 2 NO TMR PULL UPS DESABILITAD AS DEMAIS CONFG S O TODAS AS INTERRUP E RETORNA PARA O BANCO 0 OS IRRELEVANTES S DESLIGADAS 0 e o b ee do ode o deo INICIALIZA O DO HARDWARE We e E e ATIVA LEDS LIGADOS A ATIVA LINHA 4 DO TEC O PORTD LADO MATRICIAL 6 da A 0 de de cec INICIALIZAC O DAS VARI VEIS Wee 6 RE Coe A RE KOCH 8 Ao oce 3e E Mee E WE INICIA CONTADOR V_ INICIA SAIDA V_INI INICIAL CIAL deo co o ode CX E koe ko X o ROTINA PRINCIPAL de E ck ko AA A ko ode ko A
118. Xo e ko oe e cA Ok oo E ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE MICROCONTROLADOR UTILIZADO dc CX Se Ok o de We OW cec eo We e p DEFINI O DOS BANCOS DE RAM d c ko oo o AX O E ko ko e Wo SR OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA TATUS SELECIONA BANK1 DA MEMORIA RAM 81 TATUS SELECIONA BANKO DA MEMORIA RAM EA A o XX E ko A E A AA oko RA EA REA E FLAGS INTERNOS KO Ok k 0 k k Xk Xk k DEFINI O DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA FLAG DE SENTIDO 24 MIN MAX T_FILTRO HDEF INE SDEFINE SDEFINE ORG GOTO ORG INICIO CLRF LRE LRE LRE LRE BANK1 MOVLW MOVWF MOVLW MOVWF RETFIE BOTAO C_LEDS LINHA 4 PORT A de xoc 0x00 INICIO kk k x o 0x04 PORT PORT PORT PORT PORT 00101111 rc TD TE TRISA B 0000
119. e DE ck d o As 090 ROTINA DE DELAY DE 1MS AT 256MS e 00 de Ok oe E oko eode 6 ESTA U EM WORK W DELAY MS OVWF 1 OVLW 250 OVWF CLRWDT DECFSZ GOTO 2 DECFSZ TEMPO1 F GOTO 6 RETURN co EC M o ck oo e Ck 0k X ROTINA DE ESCRITA we E A X E E Ku E o AS ook ck Ck A ck 0k TE EH ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK W ANTES DE CHAMAR A ROTINA ESCREVE OVWFE NOP BSF GOTO BCF OVLW CALL RETURN DISPLAY ENABLE 5 1 SK DELAY MS de xo Sk s e ck o E A SA DAS ck ck ck ck XxX k xk xk XxX Xx Xx A NOMES PARA FACILITAR A PROGRAMACAO E BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 gt DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA PORT DO MICROCONTROLADOR LIGADO AO TECLADO MATRICIAL lt RB4 RB7 gt LINHAS gt ATIVADAS 0 gt DESATIVADAS lt RBO RB3 gt COLUNAS gt TECLAS PRESSIONADAS 0 gt TECLAS LIBERADAS PINO P ATIVAR LINHA 4 TECLADO MATRICIAL O gt LINHA 4 ATIVADA LINHA 4 DESATIVADA dec
120. ks k k ok k xk XxX xk de ck CEE RA Xo Ck XA ck oe ck ck oko Wd Ck ko Ck A A A ko x X ESTE EXEMPLO FOI PREPARADO PARA DEMONSTRAR O FUNCIONAMENTO DO TIMER DE 16 BITS DO PIC TMR1 E DA VARREDURA DE DISPLAYS CONSISTE NUM TEMPORIZADOR DE SEGUN DOS DOIS BO T ES FORAM UTILIZADOS PARA PROGRAMAR O TEMPO DA CONTAGEM UM OUTRO BOT O FOI UTILIZADO PARA DISPARAR E PARALIZAR O CONTADOR O TEMPORIZADOR CONSEGUE CONTAR AT 9999 SEGUNDOS DE FORMA QUE OS 4 DISPLAYS DE 7 SEGMENTOS FORAM NECESS RIOS A CONTAGEM REGRESSIVA UM LED INDICA QUE O TEMPORIZADOR EST OPERANDO QUANDO O SISTEMA CHEGA A 0000 ZERO O LED DESLIGADO AUTOMATICAMENTE NESTE EXEMPLO APENAS OS BOT ES DA LINHA 4 PODEM SER UTILIZADOS A ck A o eo Ko OK Ck A A 0X5 AAA Oe ok CONFIGURA ES PARA GRAVA O lt de A AXE AA o A E AAA A AAA A A CONFIG CP OFF amp CPD OFF 8 _DEBU G OFF amp _LVP OFF amp _ OFF amp BODEN OFF lt lt lt AA o o Ck ox 0k o ke ck ko X Ck o o A de ko ko A DEFINI O DAS VARI VEIS E E c de e xk AAA o ok Cko Ko AAA oe ko EA A oA A XA RR O PRIMEIRO BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOC
121. lt 0 lt O p O p O lt O lt O Pp O 2 2 2 BS Q Q Q BCF BSF SES SE OV CALI OV CALI OV CALI OV dtr LW LW LW LW LW LW LW LW LW LW LW LW LW 0x30 ESCREVE B 00111000 ESCREVE B 00000001 ESCREVE 1 DELAY_MS B 00001100 ESCREVE B 00000110 ESCREVE ck ck ko e ok o o E ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS ESCREVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA 3 Choo CA X koe A e ROTINA DE ESCRITA DA TELA PRINCIPAL 0x81 ESCREVE RS ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE RS 0XC7 ESCREVE RS SNA ESCREVE Lo ESCREVE Lr Volts RAO ck E Xo ASA 8 0X0 RR ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES A D Int COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 1 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE A D Int P2 SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR L
122. o poder criar vari veis diferentes de aquecimento e resfriamento Controla se o ventilador pelo duty cycle do PWM mas para o sistema ficar um pouco mais completo mostra se no LCD centro o valor da rota o do motor em RPS rota es por segundo Isto feito atrav s do sensor ptico que se encontra instalado na base das h lices do ventilador Os bot es das colunas 3 e 4 s o usados para aumentar e diminuir o duty cycle do PWM variando de O a 100 Mantendo se os bot es pressionados o incremento decremento autom tico Cada vez que uma das p s da h lice passa em frente ao sensor ptico um pulso transmitido ao PIC Como este sinal est ligado ao pino RC1 utilizou se o TMR1 com incremento externo para contabilizar a quantidade de pulsos gerados A cada segundo base de tempo gerada pela interrup o de TMR2 o total de pulsos transferido para a vari vel CONT VENT Antes de mostrar o valor correto no LCD deve se dividir o total de pulsos durante 1 segundo CONT VENT pelo n mero de paletas pulsos por volta Neste caso CONT VENT dividido por 7 Comunica o serial O sistema possibilita ainda que maiores implementa es sejam feitas com o tratamento externo da temperatura pois os valores obtidos s o enviados automaticamente pela porta serial a cada segundo Com isso poss vel criar um pequeno programa de computador capaz de plotar esta temperatura no decorrer do tempo Os dados tamb m podem ser armaz
123. o o d E We de E de o ko Xo X ko ko o AS SA DAS DEVEM SER ASSOCIADAS FUTURAS ALTERAC ES DO HARDWARE HDEFINE DISPLAY PORTD HDEFINE RS PORTE 0 HDEFINE ENABLE PORTE 1 HDEFINE TEC MATRICIAL PORTB HDEFINE LINHA_4 PORTB 7 oo De 0 de ok gt EX FLAG P INDICAR QUE DEVE MOSTRAR A TELA PRINCIPAL 1 MOSTRA TELA PRINCIPAL 0 TELA PRINCIPAL J FOI MOSTRADA lt RX ko e cock ck A ko X ko ko ko X ko ok Y ENTRADAS E ok Xe c ko eo ko ko 0 oko A NOMES PARA FACILITAR A PROGRAMAC O E ESTADO DO BOT O 0 0 gt LIBERADO gt PRESSIONADO ESTADO DO BOT O 1 0 gt LIBERADO gt PRESSIONADO ESTADO DO BOT O 2 0 gt LIBERADO gt PRESSIONADO ESTADO DO BOT O 3 0 gt LIBERADO PRESSIONADO KEN A AE AXE A SA DAS ee Kee GAS Oe os E Xe X ck ks ok A NOMES PARA FACILITAR A PROGRAMACAO E BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA PORT DO MICROCONTROLADOR LIGADO AO TECLADO MATRICIAL lt RB4 RB7 gt LINHAS gt ATIVADAS 0 gt DESATIVADAS lt RBO RB3 gt COLUNAS gt TECLAS PRESSIONADAS 0 gt TECLAS LIBERADAS PINO P
124. 052 053 053 054 054 055 055 056 056 057 057 058 058 059 059 060 060 061 061 062 062 063 063 064 064 065 065 066 066 067 067 068 068 069 069 070 070 071 071 072 072 073 073 074 074 075 075 076 076 077 077 078 078 079 079 080 080 081 081 082 082 083 083 084 084 085 085 086 086 087 087 088 088 089 089 090 090 091 091 092 092 093 093 094 094 095 095 096 096 097 097 098 098 099 099 100 100 101 101 102 102 103 103 104 104 104 105 105 106 106 107 107 108 108 109 109 110 110 111 111 112 112 lt lt e AAA E EEE OX E CEE OX E e Oe FIM DO PROGRAMA RR CX 8 EE ko OX EE OM OK X Oe END FIM DO PROGRAMA 47 63 79 9 5 ALLI 3127 3143 159 175 191 207 1223 239 2255 300 Dicas e Coment rios Para converter a temperatura do diodo lida pelo conversor A D na temperatura ambiente em graus Celsius utilizou se uma tabela de convers o do mesmo tipo da utilizada para converter um n mero BCD numa representac o gr fica para displays de 7 segmentos Por m como a tabela relativamente extensa possui 256 posic es relativos aos 8 bits da convers o A D para economizar espaco na listagem do software utilizou se a diretriz DT O compilador interpreta a diretriz substituindo cada valor que a sucede por uma instrug o RETLW Assim o c digo fonte exatamente o mes
125. 1 ATUALIZA TELA LINHA 1 ATUALIZA TELA LINHA 2 ATUALIZA TELA ATUALIZA TELA VARREDURA DOS BOT ES LINHA 1 LINHA 2 PRINCIPAL DO PROGRAMA COM AS FRASES DO LCD DO LCD ser ME sh S MEE NE ESTA ROTINA VERIFICA SE ALGUM BOT O EST PRESSIONADO E CASO AFIRMATIVO DESVIA PARA O TRATAMENTO DO MESMO VARRE CLRWDT VERIFICA ALGUM VARRE BOTOES BSF GOTO BTFSC GOTO BTFSC GOTO BTFSC GOTO BTFSC GOTO BCF LINHA 4 41 BOTAO 0 TRATA BOTAO 0 BOTAO 1 TRATA BOTAO 1 BOTAO 2 TRATA BOTAO 2 _3 TRATA_BOTAO_3 LINHA 4 LIMPA WATCHDOG TIMER BOT O PRESSIONADO ATIVA LINHA 4 DO TECLADO MATRICIAL DELAY PARA ESTABILIZACAO E LE O BOT O 0 ESTA SIM PULA P TRA N O O BOT O 1 ESTA PRESS SIM PULA P TRA N O SIM PULA P TRA N O PRESS O BOT O 2 ESTA PRESS O BOT O 3 ESTA PRESS TURA DO TECLADO TA BOT TA BOT TA BOT SIM PULA P TRA N O TA BO DESATIVA A LINHA 4 DO T LONADO rAO_0 LONADO 1 ONADO TAO 2 LONADO _3 TECLADO MATRICIAL
126. 1 incrementa o valor do delay enquanto a tecla da coluna 2 decrementa Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 29 Esquema El trico 5V 5V RC5 220R DS2 DS4 Centena Unidade PARA i AAA AN AAA AAA AAA DAVA NARA NA NANA AAA 220R BC337 BC337 BC337 BC337 5V 4 7K 4 7K 4 7K 4 7K MC1 s R vDD 22 vss 2 A A A i ES Pa Na NANA VA NAN pes E RB4 22 ca Jue RB3 5 PANA ANA NA NAN RB2 35 m IIA RB1 AAA AV VA A A EE EARN 5 5 s 1 2 30 RD7 npe ea 5 CJ2 28 Mm 1 RD5 2 2 RDA 22 8 9 9 RD3 3 E RD2 25 3 RD1 RDO H2 Rc 26 ES PIC16F877A 220R LIN4 SA13 SA14 SA15 SA16 o COL1 COL2 COL3 COL4 3 2 1 CJ3 l Coluna 1 RBO o o z x 30 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURAG ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs HABILITA DISPLAY DA UNIDADE E LINHA 4 DO TECLADO MATRICIAL CARREGA CONTADOR COM VALOR MINIMO ATUALIZA DISPLAY
127. 14 BITS CHAMA ROTINA P ATUALIZAR LCD VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 2 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 209 TRATA BOTAO 2 FILTRO BOTOES F VARRE DECFSZ GOTO DECFSZ GOTO MOVLW MOVWF BTFSC GOTO DEC MEM DADOS CALL GOTO DEC_MEM_PROG MOVLW SUBWF BTFSS DECF MOVLW ANDWF CALL GOTO TEMPO_TURBO F VARRE TURBO_TECLA TEMPO_TURBO TIPO_MEMORIA DEC_MEM_PROG VALOR DADOS F ATUALIZA TELA LINHA 2 VARRE 41 VALO STAT VALO B 00 VALO ATUA R PROG LOW F US C R PROG HIGH F 111111 R PROG HIGH F VARRE LIZA TELA LINHA 2 FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO N O VOLTA P VARRE SIM RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS EST UTILIZANDO MEM RIA DE DADOS N O ENT O PULA P DEC MEM PROG SIM DECREMENTA VALOR DADOS CHAMA ROTINA P ATUALIZAR LCD VOLTA P VARREDURA DOS BOT ES DECREMENTA VALOR PROG LOW HOUVE ESTOURO SIM DECREMENTA VALOR PROG HIGH N O LIMITA CONTADOR DA MEM RIA DE PROGRAMA EM 14 BITS CHAMA ROTINA
128. 1K i UN TPV 1 A 1 Da NANA A NANA 1 hdhdh i H i BC337 BC337 BC337 BC337 la la ha ba 5V 5V 4 7K 4 7K 4 7K 4 7K RESET u MEI EN mar vol RAO vss EL 40 etd vend 39 z ELE as A m Ah ss 1 2 30 zi CJ2 A 5 1 2 9 9 22 3 l 21 2 3 26 5 E 5 PIC16F877A gt 220R LIN4 SA13 SA14 SA15 SA16 COL1 COL2 COL3 COL4 10K gt 10K 10K gt 10 2 CJ3 Coluna 1 RBO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 73 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA l Os PRESCALER TMRO gt 1 4 HABILITA INTERRUP O DE TMRO HABILITA DISPLAY DA UNIDADE E LINHA 4 DO TECLADO MATRICIAL CARREGA INTENSIDADE COM VALOR M NIMO RECARREGA FILTRO DE DEBOUNCE BOT O 1 PRESS 76 FIM FILTRO DEBOUNCE FIM FILTRO DEBOUNCE INTENSIDADE MAXIMO INTENSIDADE MINIMO INCREMENTA INTENSIDADE DECREMENTA INTENSI
129. 2 oko de Ok oko e X CONSTANTES ko ko koe Ok Xe cde DEFINI O DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN EQU 0 MAX EQU A5 T FILTRO EQU 220 000008 RAEE ck ETE O amp O Ok Xe Ck SE DEFINI O DE TODOS OS PINOS QUE VALOR M NIMO PARA O INTENSIDADE VALOR M XIMO PARA O INTENSIDADE FILTRO PARA BOT O X6 TE A OMS o E AAA X A ENTRADAS ck ck ok k k k k k XxX k k xk k XxX Xx SER O UTILIZADOS COMO ENTRADA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 SDEFINE 1 PORTB 0 SDEFINE 301702 1 0X X ES lt lt E deo C k ke gt Xo DEFINI O DE TODOS OS PINOS QUE PORTA DO BOT O 1 PRESSIONADO 0 gt LIBERADO PORTA DO BOT O 1 gt PRESSIONADO 0 gt LIBERADO 0 E 0 xe cS Nes oo OX ks gk SA DAS we oe dec AB os cc e 6 3 SER O UTILIZADOS COMO SA DA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 SDEFINE DSP UNIDADE PORTB 7 SDEFINE LINHA 4 PORTB 7 SDEFINE LAMPADA PORTC 5 EE OW E
130. 201 SWAPF ANDLW MOVWF MOVLW SUBWF MOVLW BTFSC MOVLW ADDWF CALL OVF OVWF OVLW SUBWF OVLW BTFSC OVLW ADDWF CALL Q lt O gt 5 gt oO VALOR_DADOS W B 00001111 AUX 0X0A AUX W 0x30 STATUS C 0X37 AUX W ESCREVE VALOR_DADOS W B 00001111 AUX 0X0A AUX W 0X30 STATUS C 0X37 AUX W ESCREVE th ESCREVE EZ TIPO_MEMORIA ESCREVE ESCREVE ESCREVE ESCREVE TIPO_MEMORIA ESCREVE VALOR_PROG_HIGH W B 00001111 AUX 0X0A AUX W 0x30 STATUS C 0X37 AUX W ESCREVE VALOR_PROG_HIGH W B 00001111 AUX 0X0A AUX W 0X30 STATUS C 0X37 INVERTE NIBLE DO VALOR_DADOS MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII ENVIA CARACTER AO DISPLAY LCD CARREGA WORK COM VALOR_DADOS MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII ENVIA CARACTER AO DISPLAY LCD ESCREVE h NO DISPLAY EST UTILIZANDO A MEM RIA DE DADOS N O ESCREVE ESPACO EM BRANCO SIM ESCREVE NO DISPLAY
131. 7k ck X E E Y Oo e wo de o ko Ck X eode ko ck X OBRIGAT RIO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 27 Dicas e Coment rios O tempo do debounce pode ser calculado pelo tempo de execuc o da varredura da tecla multiplicado pelo valor inicial da vari vel de filtro No exemplo estudado o tempo de debounce de 1 15ms e foi calculado seguindo a equac o abaixo Tempo de Debounce ciclo de m quina X n mero de ciclos de m quina na varredura da tecla X valor inicial da vari vel FILTRO Tempo de Debounce 1us x 5 x 230 Tempo de Debounce 1150us 1 15ms N o existe uma regra para calcular o tempo ideal que deva ser utilizado no debounce de teclas Isso ir depender do projeto do tipo de tecla em utiliza o do ambiente de trabalho onde o sistema ir operar etc Na pr tica tempos longos da ordem de grandeza de dezenas de milisegundos podem ser necess rios Exerc cios Propostos 1 Alterar os limites da contagem 2 Retirar o tratamento de debounce do software e verificar os efeitos pr ticos 28 Cap tulo 5 Experi ncia 3 Pisca Pisca Objetivo O objetivo desta experi ncia ensinar ao aluno com criar rotinas de delays al m de apresentar uma t cnica simples utilizada para inverter o estado de um bit Descri o O software desta experi ncia utiliza um dos displays de 7 segmentos p
132. A A A A AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMA O E Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 285 FUTURAS ALTERA ES DO HARDWARE SDEFINE DEFINE DEFINE DEFINE BOTAO 0 BOTAO 1 BOTAO 2 BOTAO 3 PORTB 0 PORTB 1 PORTB 2 PORTB 3 ESTADO DO BOT O 0 0 gt LIBERADO gt PRESSIONADO ESTADO DO BOT O 1 O gt LIBERADO PRESSIONADO ESTADO DO BOT O 2 0 LIBERADO PRESSIONADO ESTADO DO BOT O 3 0 LIBERADO PRESSIONADO ESTE PROGRAMA UTILIZA UMA ENTRADA P O CONVERSOR A D TRADA N O PRECISA SER DECLARADA POIS O SOFTWARE NUNCA FAZ REFER NCIA A ELA DE FORMA DIRETA POIS O CANAL A D A SER CONVERTIDO SELECIONADO NO REGISTRADOS ADCONO DE FORMA BIN RIA E N O ATRAV S DE ESTA ENT DEFINES ESTA ENT HDEF INE RADA NORMALMENTE CAD_TEMP PORTA 1 POR M PARA FACILITAR O ENTENDIMENTO DO HARDWARE VAMOS DECLARAR ENTRADA A D PARA TEMPERATURA AL M DA ENTRADA DO CONVERSOR A D TEMOS A ENTRADA DA USART RECEP O NOVAMENTE ESTA ENTRADA N O NECESSITA SER DECLARADA POR M PARA FACILITAR O ENTENDIMENTO DO HARDWARE VAMOS DECLARAR ESTA ENTRADA NORMALMENTE HDEF INE m RXUSART PORTC 7 Je C
133. A ROTINA ESCREVE MOVWF DISPLAY ATUALIZA DISPLAY PORTD NOP PERDE 1US PARA ESTABILIZA O BSF ENABLE ENVIA UM PULSO DE ENABLE AO DISPLAY GOTO 41 r BCF ENABLE 0 MOVLW sub CALL DELAY MS DELAY DE 1MS RETURN RETORNA X E 7 ode 0e E TE CK E E RE E CONFIGURAC ES INICIAIS DE HARDWARE E SOFTWARE E OO ES HEM E OX Co X GC 7 Ode Xo ck NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO MICROCONTROLADOR E AS CONFIGURAC ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA AS VARI VEIS DE RAM E AGUARDA O ESTOURO DO WDT CONFIG CLRF PORTA LIMPA O PORTA CLRF PORTB LIMPA O PORTB CLRF PORTC LIMPA O PORTC CLRF PORTD LIMPA O PORTD CLRF PORTE LIMPA O PORTE BANK1 ALTERA PARA O BANCO 1 DA RAM OVLW 00101111 OVWF TRISA CONFIGURA I O DO PORTA OVLW B 00001111 OVWF TRISB CONFIGURA I O DO PORTB OVLW B 10011000 OVWF TRISC CONFIGURA I O DO PORTC OVLW B 00000000 OVWF TRISD CONFIGURA I O DO PORTD OVLW B 00000000 OVWF TRISE CONFIGURA I O DO PORTE OVLW B 11011111 OVWE OPTION REG CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 1 128 TIMER 1 1 OVLW B 00000111 OVWE CMCON DESLIGA OS COMPARADORES OVLW B 00000000 OVWF
134. ADs Y HABILITA LEDS ATIVA LINHA 4 DO TECLADO MATRICIAL BOT O PRESS Sim ACENDE LED A LED Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 15 O MARA x xk E ANE EXEMPLO DE C DIGO PARA UTILIZA O COM MCMASTER jp EXPERI NCIA 1 LEITURA DE UMA TECLA E ACIONAMENTO DE UM LED ad 0 de I TEN PE VERS O 1 0 DATA 14 04 2003 xk e ue de Ce de Ao eo we KO ko X Kk CK ko ko ok Ke c X odes de 000 Xe X o EN DESCRIC O GERAL de co DE eoe X X E ode de Xe sow 3 ke c X SISTEMA MUITO SIMPLES PARA REPRESENTAR O ESTADO DE UM BOT O ATRAV S DE UM LED COM O BOT O DA COLUNA 1 LINHA 4 PRESSIONADO O LED LIGADO AO PINO RDO PERMANECE LIGADO SE O BOT O FOR SOLTO O LED APAGA c E ko 0 A kx kk xk oe ck ko kx ku k Xx Xx ko A ko ko kk ko Xx X ko po CONFIGURA ES PARA GRAVA O de ck AA de o ko Ck A E A A E A ko ko SR CON
135. AGUARDA I2C LIVRE i TESTA ACK ENVIA DADO A SER GRAVADO xxxxxxxxb gt SSPBUF ENVIA STOP BIT SSPCON2 PEN 1 E AGUARDA LIVRE gt RETURN 220 ENVIA STOP BIT SSPCON2 PEN 1 Y ESCREVE Err NO DISPLAY LCD DELAY DE 1s RESTAURA VALOR ORIGIANL DO LCD RETURN Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 221 O S ks E E E DATA o Oe Xe X Oo E E TETE C Ak Ck E EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER EXPERI NCIA 16 MASTER I2C A 00 06 ko E X UK e ko dede VERS O 1 0 14 04 2003 de Xe A O 8 A AE cde ARE ER de deo E de CK ode co ooo We UE 9 odes cde Moo DESCRI O GERAL 6 6 ko eoe we E E OK oko ES 8 ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DA NA MEM RIA E2PROM SERIAL EXTERNA UTILIZANDO O MASTER 12C OS BOT ES DAS COLUNAS 1 E 2 S O PARA INCREMENTAR E DECREMENTAR O VALOR MOSTRADO NO DISPLAY O BOT O DA COLUNA 3 SALVA O VALOR DO DISPLAY NA MEM RIA SERIAL EN
136. AQUECEDOR INTENSIDADE AQUE W FAZ O AJUSTE DECIMAL DA INTENSIDADE AJUSTE_DECIMAL DO PWM DO AQUECEDOR TEC MATRICIAL DESATIVA TODAS AS LINHAS DO TECLADO RS SELECIONA O DISPLAY P COMANDOS O0XC1 COMANDO PARA POSICIONAR O CURSOR ESCREVE LINHA 1 COLUNA 1 RS SELECIONA O DISPLAY P DADOS CENTENA W 0x30 FAZ AJUSTE ASCII DA CENTENA ESCREVE ESCREVE VALOR NO LCD DEZENA W 0X30 FAZ AJUSTE ASCII DA DEZENA ESCREVE ESCREVE VALOR NO LCD UNIDADE W 0x30 FAZ AJUSTE ASCII DA UNIDADE ESCREVE ESCREVE VALOR NO LCD DISPLAY LIMPA BARRAMENTO DE DADOS VARRE VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 2 TRATA BOTAO 2 DECFSZ GOTO DECFSZ GOTO OVLW OVWF OVLW XORWF BTFSS INCF MOVF MOVW MOVLW MOVWF CALL SWAPF FILTRO BOTOES F FIM DO FILTRO RUIDO VARRE N O VOLTA P VARRE SIM BOT O PRESSIONADO TEMPO TURBO F FIM DO TEMPO DE TURBO VARRE N O VOLTA P VARRE SIM TURBO TECLA TEMPO TURBO RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS 100 INTENSIDADE VENT W STATUS Z PODE INCREMENTAR PWM DO VENTILADOR INTENSIDADE VENT F SIM INCREMENTA INTENSIDADE VENT N O INTENSIDADE VENT W CARREGA INTENSIDADE VENT NO WORK mulpl
137. ASCII ENVIA CARACTER AO DISPLAY LCD INVERTE NIBLE DO VALOR_PROG_LOW MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII ENVIA CARACTER AO DISPLAY LCD CARREGA WORK COM VALOR_PROG_LOW MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII ENVIA CARACTER AO DISPLAY LCD ESCREVE h NO DISPLAY EST UTILIZANDO A MEM RIA DE PROGRAMA N O ESCREVE ESPA O EM BRANCO SIM ESCREVE lt NO DISPLAY LIMPA BARRAMENTO DE DADOS E ck E A A e Ck ko X ok k kk kk ook o X NA MEM RIA DE DADOS Xe XA ke Ch Ck Se NA MEM RIA DE DADOS E2PROM O DADO A SER GRAVADO DEVE SER PASSADO PELO REGISTRADOR DADO LOW 00 O REGISTRADOR DADO HIGH 00 N O UTILIZADO POIS A MEM RIA DE 8 BITS O ENDERECO DEVE SER PASSADO PELO REGISTRADOR ENDERECO LOW O REGISTRADOR ENDERECO HIGH N O DATA EEPROM WRITE MOVF DADO LOW 00 W BANKSEL EEDATA MOVWF EEDATA 0 0 0 BANKSEL ENDERECO_LOW MOVF ENDERECO LOW W BANKSEL EEADR MOVWF EEADR BANKSEL EECON1
138. ATIVADA OVLW 4 SIM CARREGA W COM 4 N O BTFSC LINHA3 A LINHA 3 EST ATIVADA OVLW 3 SIM CARREGA W COM 3 N O BTFSC LINHA2 A LINHA 2 EST ATIVADA OVLW 2 SIM CARREGA W COM 2 N O BTFSC LINHA1 A LINHA 1 EST ATIVADA OVLW z4 SIM CARREGA W COM 1 N O OVWF NUM LINHA SALVA O N MERO DA LINHA EM QUE EXISTE ALGUM TECLA PRESSIONADA OVLW CARREGA W CO l BTFSC COLUNA1 ALGUM BOT O DA COLUNA 1 PRESSIONADO GOTO TRATA_COLUNAS SIM PULA P TRATA COLUNAS N O MOVLW 22 CARREGA W COM 2 BTFSC COLUNA2 ALGUM BOT O DA COLUNA 2 PRESSIONADO GOTO TRATA COLUNAS SIM PULA P TRATA COLUNAS N O MOVLW 3 CARREGA W COM 3 BTFSC COLUNA3 ALGUM BOT O DA COLUNA 3 PRESSIONADO GOTO TRATA COLUNAS SIM PULA P TRATA COLUNAS N O MOVLW 4 CARREGA W CO 4 BTFSC COLUNA4 ALGUM BOT O DA COLUNA 4 PRESSIONADO GOTO TRATA COLUNAS SIM PULA P TRATA COLUNAS N O NENHUMA TECLA EST PRESSIONADA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 259 MOVLW 100 MOVWF FILTRO RECARREGA FILTRO CLRF PORTB DESATIVA TODOS OS DISPLAYS DE 7 SEGMENTOS BCF RS SELECIONA O DISPLAY P COMANDOS OVLW 6 CALL ESCREVE POSICIONA O CURSOR BSF RS SELECIONA O DISPLAY P DADOS OVLW pv CALL ESCREVE APAGA O CARACTER DO N MERO DA LINHA BCF RS SELECIONA O DISPLAY P COMANDOS OVLW OXCF CALL ESCREVE POSICIONA O C
139. ATIVAR LINHA 4 0 gt LINHA 4 ATIVADA LINHA 4 DESATIVADA TECLADO MATRICIAL 4c e E eska oko su desc EH x VETOR DE RESET DO MICROCONTROLADOR 2 dC RR 3k Ou E POSI O INICIAL PARA EXECU O DO ORG GOTO 0000 CONFIG ck Gk de ko E ko E AA E ko X o Tae ROTINA DE lt lt lt deo A E A XA X oo PROGRAMA ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGI O DESTINADA AS ROTINAS SEGUINTES A oso deo HH e DELAY DE 1MS AT 256MS xk k XxX k k xk XxX Xx ESTA UMA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS X O VALOR PASSADO EM WORK W Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 127 DELAY OVW OVW OVLW S F y CLRW GOTO GOTO DT DECFSZ DECFSZ RETURN POl 0 PO0 s PO0 F PO1 F lt DE TO TD AT 8 WX ROTINA DE ESCRITA CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS LIMPA WDT PERDE TEMPO FIM DE TEMPOO VOLTA 2 INSTRU ES SIM PASSOU SE 1MS FIM DE TEMPO1 VOLTA 6 INSTRU ES SIM RETORNA 000
140. BARRAMENTO DE DADOS MOVF LINHA ATIVA W MOVWF PORTB CARREGA PORTB COM VALOR DE LINHA ATIVA ATIVA A LINHA CORRESPONDENTE GOTO LOOP VOLTA AO LOOP vo ORAL QE CESUMS E Ku exe es EE DK Oen s PRA FIM DO PROGRAMA e X X X oko CK do Td 0 s X deo Ck de oko END FIM DO PROGRAMA 260 Dicas e Coment rios Notar que ao habilitar uma linha do teclado matricial tamb m se habilita um dos displays de 7 segmentos ou seja foram utilizados os mesmos pinos do microcontrolador para habilitar as linhas e os displays Esta uma forma econ mica de varrer os displays e ao mesmo tempo varrer o teclado Veja que com apenas 16 1 05 do microcontrolador foi poss vel ligar 4 displays de 7 segmentos e 16 teclas Foram utilizados 8 l Os para segmentos mais o ponto decimal 4 I Os de sele o linhas e displays e 4 I Os de colunas Exerc cios Propostos 1 Alterar o mapeamento do software invertendo a numerac o das linhas e colunas 2 Mostrar no display LCD o n mero da tecla pressionada e n o o n mero da linha e da coluna 3 Sem utilizar o display LCD fazer um software que utilize a varredura do teclado e dos displays ao mesmo tempo mostrando o n mero da tecla pressionada nos displays Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 261 Cap tulo 21 Exp
141. CFO E X6 A DE UM CARACTER NO DISPLAY ck Xo AE A c EE CE de Oo oe e A ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK ESCREVE MOVWF NOP BSF GOTO BCF MOVLW CALL RETURN DISPLAY ENABLE 5 1 1 DELAY_MS de ck U x o 00 06 de c X ROTINA DE ESCRITA W ANTES DE CHAMAR A ROTINA ATUALIZA DISPLAY PORTD PERDE 1US PARA ESTABILIZACAO ENVIA UM PULSO DE ENABLE AO DISPLAY DELAY DE 1MS RETORNA 0 des 3A ck ok DA TELA PRINCIPAL dede RH de X eoe we dk X E E Xo oo e Xo X oe Xo odes de AR e RA ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES Sistema Didatico LINHA 1 LINHA 2 MCMASTER 0 MOSTRA_TELA PRINCIPAL TELA_PRINCIPAL H BCF CLRF BCF MOVLW CALL MOVLW CALL BSF QEQGEQEQEQGEQEQEQEQE SESESESESESESESES lt lt 0 lt lt 0 lt 0 lt 0 lt 0 lt 0 lt 0 lt 0 lt 0 lt Q E E LW LW LW LW LW LW LW LW LW LW TEC_MATRICIAL RS 0x0 1 ESCREVE 1 DELAY MS r RS ESC Yet ESC us ESC rt ESC e ESC ESC
142. CK Ao ko oo ko AA A oA e o ARE A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM ESTE PROGRAMA UTILIZA NENHUM FLAG DE USU RIO RE X oA ERA RM ok ck ck OREA oko OA A e x ko X ENTRADAS Ok ck ck k Xx Xx k ku k k Xk XxX Ko k X k k k Xx X AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAC O E FUTURAS ALTERAC ES DO HARDWARE HDEF INE HDEF INE CAD PINO AD 0 PORTA 0 ae OO ho SK 7 HM FR AS SA DAS DEVEM SER ASSOCIADAS A FUTURAS ALTERAC ES DO HARDWARE SDEFINE SDEFINE HDEF INE DISPLAY PORTD RS PORTE O ENABLE PORTE 1 de eoe A eo er ck TE t ak VETOR DE RESET DO MICROCONTROLADOR ko e Ao Us 000 Ok DO Xo deo cA KE ook ME oko e oe dX eoe wo ok de 48 POSI O INICIAL PARA EXECU O DO PROGRAMA ORG GOTO 0x000 CONFIG E oko M X Ck ok Xo X X ROTINA DE DELAY DE 1MS AT 256MS o ko o AE Ck A RA e A A ESTA U EM WORK W DELAY MS OVWF TE OVLW 25 OVWF
143. COMPARA O PONTEIRO COM A LT POS 1 J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM Je c de Ao eoo oe e ke X X Ok E A ook e Xo Jk oko ko oe We ecd e 0 Ck ko CONFIGURA ES INICIAIS DO DISPLAY de de Ao Oeo oe gee X 8 X Uk X owe o oce s X oc ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS BCF OVLW OVLW OVLW OVLW OVLW OVLW OVLW OVLW BSF INICIALIZACAO DISPLAY RS 0x30 ESCREVE 3 DELAY_MS 0x30 ESCREVE 0x30 ESCREVE B 00111000 ESCREVE B 00000001 ESCREVE gili DELAY_MS B 00001100 ESCREVE B 00000110 ESCREVE RS gt AX X MX de 8 CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS ESCREVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA SELECIONA O DISPLAY P DADOS hoo ko ode Ok INICIALIZA O DA RAM lt
144. DA LINHA 1 ATUALI BCF MOV CAL BSF Q Q Q gt O gt O gt O gt O gt Q O lt RELOGIO ZA TELA LINHA 1 LW SESESES SE E de LW E E LW LW Li LW RS 0x82 ESCREVE RS ESCREVE Vat ESCREVE YL t ESCREVE en ESCREVE Yt ESCREVE F ER RTC SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS ESCREVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA Ok 0 k LINHA 1 DO LCD Ok k k k k TELA PRINCIPAL DO LCD COM A FRASE SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 2 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE RELOGIO RTC Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 273 CALL ESCREVE OVLW on CALL ESCREVE OVLW CALL ESCREVE OVLW PERS CALL ESCREVE OVLW n CALL ESCREVE OVLW Mon CALL ESCREVE ESTA ROTINA LE O RELOGIO RTC EXTERNO E MOS
145. DE DEBOUNCE BOT O PRESS DECREMENTA FILTRO Sim 22 DECREMENTA CONTADOR CONTADOR lt M N INCREMENTA CONTADOR Sim N o INCREMENTA CONTADOR DECREMENTA CONTADOR SENTIDO 0 SENTIDO 1 5 ATUALIZA LEDS BOT O LIBERADO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 23 e O Td A ge 7 3E xou EXEMPLO DE C DIGO PARA UTILIZA O COM O MCMASTER EXPERI NCIA 2 CONTADOR SIMPLIFICADO r x xk x PE VERS O 1 0 por DATA 14 04 2003 Je x o x 5 x x x xk x DESCRI O GERAL 7 ku ck co ks oko A X ko E oko ok A ok SISTEMA MUITO SIMPLES PARA INCREMENTAR UM CONTADOR AT UM DETERMINADO VALOR MAX E DEPOIS DECREMENTAR AT OUTRO MIN O VALOR DO CONTADOR MOSTRADO NOS 8 LEDS LIGADOS AO PORTD DEVE SE UTILIZAR O PRIMEIRO BOT O DA LINHA 4 PARA INCREMENTAR E DECREMENTAR O VALOR DO CONTADOR DE odes DE o
146. E VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 CONFIGURA REGISTRADOR ADCON1 1 COMO ENTRADAS ANAL GICAS RA2 RA4 E RA5 COMO I Os DIGITAIS PORTE COMO I O DIGITAL 8 BITS ADRESH E 2 BITS ADRESL Vref VDD 5V Vref GND 0V 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 CONFIGURA REGISTRADOR ADCONO M DULO A D LIGADO FREQU NCIA Fosc 8 MUX SELECIONADO P CANAL1 RA1 TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO y INICIALIZA DISPLAY A PREPARA TELA PRINCIPAL A D Int RAO Volts 138 LIMPA WDT INICIA CONVERS O ADCONO GO 1 Aguarda que o FIM bit GO do CONVERS O registrador ADCONO seja O FUNDO DE ESCALA 5 0V ESTAO SENDO CONSIDERADOS APENAS 1 1 MULTIPLICA VALOR DA 1 I OS 8 BITS MAIS 1 1 1 1 1 1 1 CONVERSAO POR 50d SIGNIFICATIVOS DA DIVIDE RESULTADO CONVERSAO A D POR 255d ADRESH POSICIONA CURSOR DO LCD paar diee CONVERTE DEZENA EM ASCII y ENVIA DEZENA AO DISPLAY ENVIA AO DISPLAY GO NENNT CONVERTE UNIDADE EM ASCII y ENVIA UNIDADE AO DISPLAY
147. E DM o X c DEFINI O DAS VARI VEIS INTERNAS DO PIC 2 o A de C 0 O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITA O P16F877A INC MICROCONTROLADOR UTILIZADO 1 TE AEREA A RRA oko A ke ck AE A RA 09 e ge X kc DEFINIC O DOS BANCOS DE RAM E X A E oe AECA Ck o 0k o eo oko ck e E ck Ck o Xo ck de ck ko OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM KE XA e o EA oko ok E A A ko ko E ko d ko Xo Xx X d x FLAGS INTERNOS XA E A A XA AX ce k AA e A ko e ck X de XA o o Se Se DEFINI O DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 33 Xo ARA AX E E EX A AA EXA 0X X deo AA oko CH po CONSTANTES Bo o AA des E Kk OE gt o ck RA A
148. E de oo k we KORR Xe FIM DO PROGRAMA 2 EL C MED NER MEE NC MES MEE SEE FIM DO PROGRAMA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 211 Dicas e Coment rios Note que a rotina que grava o dado na mem ria de programa na realidade grava o valor de 4 words Por m o software da experi ncia altera o valor de apenas uma dessas words O problema que a grava o de informa es na mem ria de programa no caso do PIC16F877A sempre deve ser realizada de 4 em 4 words Desta forma n o poss vel gravar apenas um valor ou uma word Sempre a gravac o ser de 4 words no m nimo Portanto sempre que se desejar gravar menos do que 4 words mantendo as outras intactas Deve se inicialmente realizar uma leitura de todas as 4 words alterar as que se desejarem e regravas todas de uma nica vez Exerc cios Propostos 1 Crie um novo sistema onde do lado esquerdo voc continua informando o dado para a E PROM no centro voc escolhe a posi o de 0 a 255 e do lado direito informada o tipo de operac o E para escrita e L para leitura O bot o da coluna 1 continua alterando entre os par metros a serem ajustados e os bot es das colunas 2 e 3 alteram o par metro atual O bot o da coluna 4 efetua a operac o de escrita ou leitura dependendo da selec o ajustada no LCD 2 Repita o exerc cio
149. ESTA ROTINA L UM DADO 8 BIT S DA MEM RIA DE DADOS E2PROM O DADO A SER LIDO RETORNADO NO REGISTRADOR DADO LOW 00 O REGISTRADOR DADO HIGH 00 N O UTILIZADO POIS A MEM RIA DE 8 BITS O ENDERECO DEVE SER PASSADO PELO REGISTRADOR ENDERECO LOW O REGISTRADOR ENDERECO HIGH N O UTILIZADO POIS A MEM RIA TEM 256 ENDER DATA EEPROM READ FLASH CARREGA NO WO ALTERA P BAN O ENDERE O DE DESTINO K DO REGISTRADOR EEADR SALVA ENDERECO EM EEADR CARREGA ENDE RECO NO REGISTRADOR CORRETO DO BANCO 2 DA RAM A PARTIR DO REGISTRADO NO BANCO 0 DA R DE USU RIO MAPEADO RAM MOVF ENDERECO LOW W BANKSEL EEADR MOVWF EEADR BANKSEL 001 BCF EECON1 EEPGD BSF EECON1 RD BANKSEL EEDATA MOVF EEDATA W BANKSEL DADO LOW 00 MOVWF DADO LOW 00 RETURN KK ks k k k k xk x ROTINA DE ESC k ok ok Ck o A ESCRITA NA ME OBRIGATORIAMENTE O ENDERECO x RITA xk DEVE O ENDERECO INICIAL DEVER SEMPRE TER OS LTIMOS DOIS BITS EM 00 ALTERA P BANK DO REGISTRADOR EECON1 APONTA P MEM RIA DE DADOS HABILITA LEITURA ALTERA P BANK DO REGISTRADOR EEDATA SALVA DADO LIDO NO WORK ALTERA P BANK DO REGIST DADO LOW 00 SALVA DADO LIDO EM DADO LOW 00 SALVA DADO LIDO NO REGISTRADOR DE USU RIO MAPEADO NO BANCO 0 DA RAM A PARTIR DO REGISTRADOR UTILIZADO PELO MICROCONTROLADOR MAPEADO NO BANCO 2 DA RAM
150. I Eu p d 9 o o 330R ANA Dp Dp Dp Dp 1 14 AMA gt 6 220R a DEN 330R BC337 BC337 BC337 BC337 La E 5V 5V 4 7K 4 7K 4 7K 4 7K RESET 10K as A en eo 4 o LIMCLR vpp 2 RA0 vss B 3 RAi RB7 vv nao 6 k z 5 pas res 5 Pe A NA NANA NANA NAN RA4 RB4 d 5 res 45V REO RB2 ES MINI NN IRE 5 q 5 rez 2 NI 5 1 11 30 DD RD7 dud vss RD6 a 1 108 RD5 2 E a ts 29 1 1osc2 RD4 Z 899 RCO RD3 3 4MHz RCI RD2 Vince RD1 RC3 RDO 3 S nca Rc7 5 5 Rce 2 PIC16F877A 220R LIN4 SA13 SA14 SA15 SA16 COL1 COL2 COL3 COL4 10K Z10K S10K 3 2 CJ3 Coluna 1 RBO o o mn X 3 102 Fluxograma VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO y INICIALIZA VARI VEIS LIGA AS INTERRUPC ES LIMPA WDT TRATA BOT O UP TRATA BOT O DOWN TRATA BOT O START STOP START STOP PRESS N o RECARREGA FILTRO E TURBO P TECLAS Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 103 INTERRUPC ES SALVA CONTEXTO RECARREGA C
151. LIMPAR DISPLAY w POSICIONA CURSOR NA LINHA 1 COLUNA 0 A SELECIONA DISPLAY PARA DADOS wa E ESCREVE TECLA 2 NO DISPLAY LIMPA BARRAMENTO DE DADOS SETA FLAG PARA MOSTRAR TELA PRINCIPAL TRATA BOT O 3 AC O J FOI EXEC Sim FILTRO TERMINOU MATRICIAL ENVIA COMANDO P LIMPAR DISPLAY POSICIONA CURSOR NA LINHA 1 COLUNA 8 DESABILITA TECLADO SELECIONA DISPLAY PARA DADOS ESCREVE TECLA 3 NO DISPLAY LIMPA BARRAMENTO DE DADOS SETA FLAG PARA MOSTRAR TELA PRINCIPAL 724 MOSTRA TELA PRINCIPAL LIMPA FLAG DE MOSTRAR TELA PRINCIPAL O ENVIA COMANDO P LIMPAR DISPLAY D SELECIONA DISPLAY PARA DADOS ESCREVE Sistema Didatico SELECIONA DISPLAY PARA COMANDOS TEE POSICIONA CURSOR NA LINHA 1 COLUNA 6 MM SELECIONA DISPLAY PARA DADOS GE ESCREVE MCMASTER LIMPA BARRAMENTO DE DADOS RETURN ESCREVE CARREGA ARGUMENTO PASSADO PELO Work NO BARRAMENTO DE DADOS DO DISPLAY Y ENVIA PULSO DE ENABLE AO LCD DELAY DE 1ms RETURN DELAY MS CARREGA ARGUMENTO PASSADO PELO Work EM TEMPO 1 i INICIALIZA TEMPOO COM 250d NOP 1us FIM DO TEMPOO
152. MCMASTER 121 E LIMPA WDT y HABILITA LINHA 4 BOT O 0 Sim PRESS BOT O 1 Sim PRESS N o BOT O 2 Sim PRESS N o Sim TRATA BOT O 0 TRATA BOT O 1 TRATA BOT O 2 BOT O 3 PRESS TRATA BOT O 3 N o DESABILITA LINHA 4 RECARREGA FILTRO MOSTRAR TELA PRINCIPAL MOSTRA TELA PRINCIPAL 122 TRATA BOT O 0 AC O J FOI EXEC Sim FILTRO TERMINOU DESABILITA TECLADO MATRICIAL ENVIA COMANDO P LIMPAR DISPLAY POSICIONA CURSOR NA LINHA 0 COLUNA 0 SELECIONA DISPLAY PARA DADOS ESCREVE TECLA 0 NO DISPLAY LIMPA BARRAMENTO DE DADOS SETA FLAG PARA MOSTRAR TELA PRINCIPAL TRATA BOT O 1 AC O J FOI EXEC Sim FILTRO TERMINOU DESABILITA TECLADO MATRICIAL ENVIA COMANDO P LIMPAR DISPLAY POSICIONA CURSOR NA LINHA O COLUNA 8 SELECIONA DISPLAY PARA DADOS NO DISPLAY LIMPA BARRAMENTO DE DADOS ESCREVE TECLA 1 SETA FLAG PARA MOSTRAR TELA PRINCIPAL Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 123 TRATA BOT O 2 AC O J FOI EXEC Sim FILTRO TERMINOU DESABILITA TECLADO MATRICIAL E ENVIA COMANDO P
153. NI CM Mo NE E NE NE ME PUE DECLARAC O DOS FLAGs DE SOFTWARE d ck ko ook db ck E A gt o ck ck Hb ko k o X A Ao oko AA A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM ESTE PROGRAMA N O UTILIZA NENHUM FLAG DE USU RIO Soc ck Kk o AA ck E o ANA AREA ENTRADAS de A Ok X Ck ck 4 oko ck ck ok c A ko CH AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMA O E FUTURAS ALTERA ES DO HARDWARE ESTE PROGRAMA UTILIZA UMA ENTRADA P O CONVERSOR A D ESTA ENTRADA N O PRECISA SER DECLARADA POIS O SOFTWARE NUNCA FAZ REFER NCIA A ELA DE FORMA DIRETA POIS O CANAL A D A SER CONVERTIDO SELECIONADO NO REGISTRADOS ADCONO DE FORMA BIN RIA E N O ATRAV S DE DEFINES POR M PARA FACILITAR O ENTENDIMENTO DO HARDWARE VAMOS DECLARAR ESTA ENTRADA NORMALMENTE SDEFINE CAD PORTA 0 ENTRADA A D DO POTENCI METRO AL M DA ENTRADA DO CONVERSOR A D TEMOS A ENTRADA DA USART RECEP O NOVAMENTE ESTA ENTRADA N O NECESSITA SER DECLARADA POR M PARA FACILITAR O ENTENDIMENTO DO HARDWARE VAMOS DECLARAR ESTA ENTRADA NORMALMENTE DEFINE RXUSART PORTC 7 de E lt lt
154. OS COMPARADORES CONFIGURA CONVERSOR A D CONFIGURA PORTA E PORTE COM 1 0 DIGITAL SELECIONA BANCO 0 DA RAM QUE O PROGRAMA TRAVE QUANDO HOUVER UM DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT E COME A NOVAMENTE BTF GOT SC ISTO EVITA PROBLEMAS NO START UP DO PIC STATUS NOT_TO 6 cook E E A ko oko ox 036 INICIALIZA O DA RAM d OX 08 ck C X oe o go 0 o deo ck ko e 0 Te ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM D E d EE LI E 6 JE A NEM INDO DE 0X20 A OXTF EM SEGUIDA AS VARI VEIS DE RAM DO PROGRAMA S O INICIALIZADAS MOV MOV CLR INC MOV XOR BTF GOT BSF LW WF F F F LW SS 0 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA RAM TELA PRINCIPAL H OK oko X o Ck TR ER X CONFIGURA ES INICIAIS DO DISPLAY X oko e A ck ok o ck ko ko A ok ck Ck ko o X AX 0 oko ko e A ko X ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS INICIALIZACAO DISPLAY BCF LW LW LW LW RS 0x30 ESCREVE DELAY_MS 0x30 ESCREVE 0x30 ESCREVE B 00111000 ESCREVE B 00000001 ESCREV
155. PROGRAMA HIGH e LOW FLASH PROGRAM READ y SALVA DADO LIDO NA VARI VEL CORRETA HIGH e LOW CARREGA ENDERE O A SER LIDO DA MEM RIA DE DADOS LOW DATA EEPROM READ D Y SALVA DADO LIDO NA VARIAVEL CORRETA LOW MONTA TELA PRINCIPAL DO LCD TRAVA O PROGRAMA AGUARDA ESTOURO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 193 S LIMPA WDT BOT O 0 PRESS BOT O 1 Sim PRESS BOT O 2 Sim PRESS BOT O 3 PRESS TRATA BOT O 0 Y INVERTE FLAG P ALTERAR O TIPO DE MEMORIA PROG lt gt DADOS ATUALIZA LCD TRATA BOT O 0 TRATA BOT O 1 TRATA BOT O 2 TRATA 3 gt 194 TRATA BOT O 1 TRATA BOT O 2 INCREMENTA VALOR DA MEMORIA DE DADOS ATUALIZA LCD ATUALIZA LCD INCREMENTA VALOR DA DECREMENTA VALOR DA MEMORIA DE PROGRAMA MEMORIA DE PROGRAMA DECREMENTA VALOR DA MEMORIA DE DADOS ATUALIZA LCD ATUALIZA LCD TRATA BOT O 3 CARREGA ENDERE O ONDE O DADO SER SALVO NA MEM DE PROGRAMA HIGH E LOW CARREGA DADO A SER SALVO NA MEM DE PROGRAMA HIGH E LOW FLASH PROGRAM WRITE CARREGA ENDEREGO ONDE O DADO SERA SALVO NA MEM DE DADOS LOW CARREGA DADO A SER SALVO NA MEM DE DADOS LOW CDATA EEPROM WRITE Manual do Usu rio Sistema de Tre
156. QUAL ROTINA DESVIAR FOI INTERRUP O DE TMRO SIM PULA P INT TMRO N O ENT O FOI TMR2 E JL JE XE NO UE De INTERRUPCAO DE TIMER 2 09 0 des dec X o de Ce ROTINA PARA TRATAMENTO DA INTERRUP O DE TIMER 2 INVERTE O ESTADO DO PINO DO BUZZER INT TMR2 BCF BTFSS GOTO BCF GOTO PIR1 TMR2IF BUZZER LIGA_BUZZER BUZZER SAI_INT LIGA_BUZZER BSF GOTO TRATAMENTO DA INT BUZZER SAI INT LIMPA FLAG DA INTERRUPCAO BUZZER LIGADO N O ENT O LIGA SIM DESLIGA O BUZZER SAI DA INTERRUP O LIGA O BUZZER SAI DA INTERRUPCAO E ck EC A A A de ck oko o Ck ck AA oko ko Ck ok E ko ko ko Xx ok ko TRATAMENTO DA INTERRUP O DE TIMER O DOS BOT ES EM ENTRADA TEMPOR RIA CONVERTER NOVAMEN INT TMRO BCF TESTA TESTA_BTO BTFSS GOTO DECFSZ GOTO BSF GOTO BTO_LIB INTCON TOIF BOTAO_0 BTO_LIB FILTRO_BTO F TESTA_BT1 STATUS_BOTOES 0 TESTA_BT1 TERRUPCAO DE 1 lt lt lt Xx e AH E xk ko ko o A Xx k ko ck ok Ck Xx Xx Xx ko ko ck Y Mk ko TIMER 0 RESPONS VEL POR CONVERTER OS PINOS SALVAR A SITUA O DOS MESMOS NUMA VARI VEL TE OS P
157. RECONFIGURA O VALOR DO BANK1 MOVLW MOVWF BANKO X Ao Xo ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 EM SEGUIDA AS VARI VEIS DE RAM DO PROGRAMA S O INICIALIZADAS MOVLW MOVWF LIMPA_RAM CLRF INCF MOVF XORLW BTFSS GOTO MOVLW MOVWF MOVW MOVW MOVW x XL CURE k xk kx STATUS NOT_TO B 11000010 OPTION REG 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA_RAM LTRO_BOTAO LTRO_BTO TRO_BT1 LTRO_BT2 LTRO_BT3 dana E ISTO EVITA PROBLEMAS NO START UP DO PIC RESET POR ESTOURO DE WDT N O AGUARDA ESTOURO DO WDT SIM OPTION REG PARA ACERTAR O PRESCALE k k xk SELECIONA BANCO 1 DA RAM RECONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCR PELO CICLO DE M QUINA WDT cadet TIMERO 1 8 SELECIONA BANCO 0 DA RAM ck k k xk xk Xx XxX XxX X INICIALIZA O DA RAM lt lt lt XA ko eo ko X 0 0k oko Kd oko RT INDO DE 0X20 A OXTF APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSIC O DA RAM LIMPA A POSI O INCREMENTA PONTEIRO P A PR X POS COMPARA PONTEIRO COM A LT J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM POS 1 INICIALIZA OS FILTROS DOS BOT ES
158. Re CLRF MOVLW MOVWF GOTO ck c MAIN MOVLW MOVWF MOVWF CHECA_BT1 BTFSS GOTO DECFSZ GOTO BTFSS GOTO GOTO BTl LIB BCF CHECA BT2 BTFSS GOTO DECFSZ GOTO BTFSS GOTO GOTO BT2 LIB BCF GOTO DEC BSF MOVF XORLW BTFSC GOTO DECF GOTO INC BSF A xe DSP_UNIDADE kx k xk Ok kx ok k FLAGS MIN CONTADOR ATUALIZA ok k xk x X X FILTRO 1 LTRO2 5 BOTAO1 BT1_LIB FILTROL CHECA_BT1 ST_BT1 DEC CHECA_BT2 ST_BT1 BOTAO2 BT2_LIB FILTRO2 F CHECA_BT2 ST_BT2 INC MAIN ST_BT2 ST_BT1 CONTADOR W MIN STATUS Z MAIN CONTADOR F ATUALIZA ST_BT2 ode Ck oko oe ok o 0 E do X XA INICIALIZA O DO HARDWARE e KO Mo AAA RE ck AA ATIVA DISPLAY DA UNIDADE ESTE PINO TAMB M UTILIZADO PARA ATIVAR A LINHA 4 DO TECLADO MATRICIAL do ecce ooo ck 3k DECT DM E Xo INICIALIZAC O DAS VARI VEIS de o ck 3 MTE ck Gb Ck 0 ko X o Y LIMPA TODOS OS FLAGS INICIA CONTADOR MIN ATUALIZA O DISPLAY INICIALMENTE TF X Uk E Xo Ok OW OX Ko de OX ER 40 0 ROTINA PRINCIPAL E E ECH MIT REE OK 8 INICI
159. TELA PRINCIPAL USART 9600 8 n 1 TX d hRX Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 237 INICIA CONVERS O ADCONO GO 1 LIMPA WDT Aguarda que o bit GO do registrador ADCONO seja O FIM CONVERS O Testa bit RCIF do registrador PIR1 ALGUM DADO RECEBIDO MOSTRA O VALOR DA CONVERS O A D EM DECIMAL E HEXADECIMAL NO DISPLAY LCD MOSTRA O DADO RECEBIDO NO DISPLAY LCD Testa bit TRMT E do registrador TXSTA BUFFER DE TX ESTA VAZIO TRANSMITE VALOR DA CONVERSAO A D PELA USART y INICIA UMA NOVA CONVERS O ADCONO GO 1 238 e O PWRTE ON amp _WDT_ON amp XT OSC EE NE NS 5 E EE XE DD a DE Se EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER e EXPERI NCIA 17 COMUNICAC O SERIAL RS232 VIA USART X lt lt e ko de dde ko E eo oko X lt lt Ck oko ck gt de 2 X XO x VERS O 1 0 DATA 14 04 2003 eco ck des de o cde ck ko E E 0X ko ko ko d AO 0X EE EE E A E E AA A koX X dede ko ck e ku se E E ko e ko o ko ko E OX oko dd DESCRI O GERAL X ck k Ok k Xk kk kk k kk k k k kk k k k k kk ok ESTE EXE
160. UNIDADE O N MERO BCD CORRESPOND NTE AO PAR METRO PASSADO AJUSTE DECIMAL MOVWF AUX SALVA VALOR A CONVERTER EM AUX CLRF UNIDADE CLRF DEZENA RESETA REGISTRADORES MOVF AUX F BTFSC STATUS Z VALOR A CONVERTER 0 RETURN SIM RETORNA N O INCF UNIDADE F INCREMENTA UNIDADE MOVE UNIDADE W XORLW BTFSS STATUS Z UNIDADE 10d GOTO S 3 N O SIM CLRF UNIDADE RESETA UNIDADE INCF DEZENA F INCREMENTA DEZENA DECFSZ AUX F FIM DA CONVERSAO GOTO 8 N O VOLTA P CONTINUAR CONVERSAO RETURN SIM PEER OK UK eo ceo RAE Ch OO Ge Us OK Oo CK RRE aes oe OK HIE ROTINA DE DIVISAO Hals dc P EC E E DR M M M Rd E M IM EM E uM E CS d KU ose Double Precision Division Division ACCb 16 bits ACCa 16 bits gt ACCb 16 bits with Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 143 Remainder in ACCc 16 bits Load the Denominator in location ACCaHI ACCaLO 16 bits Load the Numerator in location ACCbHI ACCbLO 16 bits CALL D divF The 16 bit result is in location ACCbHI ACCbLO The 16 bit Remainder is in locations ACCcHI amp ACCCLO
161. UTILIZAREMOS SOMENTE A INTERRU O DE TMRO 15 SEG A A AR X co A o E 1 3e ok OR A Xv xs ok E 1 TECLADO kk kk k k kk ENDERECO INICIAL DE PROCESSAMENTO ck c ck o H ck c oe X MAS EFETUAREMOS O TESTE PARA TERMOS CERTEZA DE QUE NENHUM PROBLEMA ACONTECEU NECESS RIO SALVAR E RECUPERAR OS VALOR DE W E STATUS ORG 0x04 ENDERE O INICIAL DA INTERRUP O MOVWF W_TEMP SALVA W EM W_TEMP SWAPF STATUS W MOVWF STATUS TEMP SALVA STATUS EM STATUS TEMP BTFSS INTCON TOIF INTERRUP O DE TMRO GOTO SAI_INT N O SAI SE AC O SIM 56 x SAI_INT SWAPF MOVWF SWAPF SWAPF RETFIE a io eV CONVERTE MOVF ANDLW ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW de ck de de 3 lt lt A ook X o ose E de ck ck ok ko koX X X TRATAMENTO DA INTERRUP O DE TMRO a TEMPO SER DECREMENTADA 1 SEGUNDO 64us PRESCALER BCF INTCON TOIF OVLW 256 125 OVWFE TMRO DECFSZ TEMP1 F GOTO SAI_INT OVLW 125 OVWE TEMP1 BTFSC F FIM GOTO SAI INT DECFSZ TEMPO F GOTO SAI INT BSF F FIM GOTO SAI INT doo E NO ss E Xo X X X
162. Uma vez terminada a convers o descarta se os 2 bits menos significativos e considera se somente o resultado armazenado em ADRESH Com isso j se est executando uma esp cie de filtragem evitando assim que o valor final fique oscilando Aplica se ent o uma regra de 3 para converter o valor do A D para a unidade desejada Volts Considerando se que quando o A D resulta em O zero a entrada possui 0 0V e quando o A D resulta em 255 a entrada equivalente a 5 0V aplica se a regra de 3 mostra se o valor da tens o j em Volts no LCD Para a execu o da regra de 3 foram utilizadas rotinas de multiplica o de 8x8 e divis o de 16x16 retiradas de Aplication Notes da pr pria Microchip 136 Esquema El trico 5V 10K LM358 K 330R RAO 1uF 5V RESET lt 10K MC1 vss RB7 20 2 res E RB4 37 5 RB2 5 RB1 gt RBO RD7 RD6 RD5 VDD 5V AM Nui RD4 RD3 RD2 H2 5V gt 10K 25 PIC16F877A VDD 2 080 vo s DB2 VSS 4 DB3 E DB4 RS 085 ps DB6EN gt EN DB7 s b LCD Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 137 Fluxograma IN CIO Chh tete p
163. VDD 10K 10K 2 A 5V vss St RB7 ero 2 RB5 RB4 Z RB3 RB2 5 RB1 2 RBO RD7 RD6 gt lt RD5 RDA 22 RD3 RD2 RD1 H2 2 06 PIC16F877A VvDDH VO 5 pp vss 1 DB3 DB4 RS DB RS c DB6 EN EN DB7 RW b 5V 10K 120 Fluxograma INICIO VETOR DE RESET PULA P INICIO DO PROGRAMA CONFIGURA ES INICIAS PORTAS TIMERS INTERRUP ES OPTION ADS TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO INICIALIZA VARI VEIS T INICIALIZA O DISPLAY I ENVIA COMANDO 0x30 P DISPLAY RE DELAY DE 4ms INICIALIZA O 4 VIAS DE DADOS ENVIA COMANDO 0x30 P DISPLAY ENVIA COMANDO 0x30 P DISPLAY l nut S pM INICIALIZA DISPLAY ENVIA COMANDO 0x38 P DISPLAY P 8 VIAS DE DADOS r 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC
164. Xe CAO ko ESTA ROTINA IR RETORNAR EM W O SIMBOLO CORRETO QUE DEVE SER MOSTRADO NO DISPLAY PARA CADA VALOR DE CONTADOR O RETORNO J EST FORMATADO PARA AS CONDI ES DE LIGA O DO DISPLAY AO PORTD COLOCA TEMPO EM W MASCARA VALOR DE TEMPO CONSIDERAR SOMENTE AT 15 POSI O CORRETA DOS SEGMENTOS 00 RETORNA S MBOLO CORRETO 0 01 RETORNA S MBOLO CORRETO 1 02 RETORNA S MBOLO CORRETO 2 03 RETORNA S MBOLO CORRETO 3 04 RETORNA S MBOLO CORRETO 4 05 RETORNA S MBOLO CORRETO 5 06 RETORNA S MBOLO CORRETO 6 07 RETORNA S MBOLO CORRETO 7 08 RETORNA S MBOLO CORRETO 8 09 RETORNA S MBOLO CORRETO 9 10 RETORNA S MBOLO CORRETO A 11 RETORNA S MBOLO CORRETO b Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 57 RETLW RETLW RETLW RETLW ESTA ROTINA CONVERTE O VALOR DE E ATUALIZA O PORTB PARA ACENDER B 00111001 B 01011110 B 01111001 B 01110001 E SP A 0X X ATUALIZA CALL MOVWF RETURN CONVERTE PORTD ROTINA DE ck OC O X X WX ROTINA DE 12 Tots 14 Ts x s s s s RETORNA RETORNA RETORNA RETORNA XK k k k k ATUALIZA O DO ck EXA E EA ok ok TEMPO O DISP CONVE k k xk k ATRAV S DA DISPLAY ATUALIZA O PORTD PAR
165. a Aeris a cid n uiia fos 212 EXERC CIOS PROPOSTOS cinta Ro ete eere teni epe E Su ove Ete EDO ec eee inta 212 CAP TULO 18 EXPERI NCIA 16 MASTER C I 213 OBJETIVO ee rer 213 DESGRIGAO i recte AS SR a Aa 213 ESQUEMA XR s S deese ed efie M 215 ELUXOGRAMA e detal 216 C DIGO 221 0 E E E E E EA E 0 222 DICAS E COMENT RIOS E E E EEEE E EE 234 EXERCICIOS PROPOSTOS te e Neg 234 CAP TULO 19 EXPERI NCIA 17 COMUNICA O SERIAL RS232 VIA 235 235 DESCRICAO a EDS i ee deb 235 S u iaa a ti 236 237 CODIGO li o a al lib a a 239 DICAS E COMENT RIOS EE Enn E Re i aa 247 EXERGICIOS PROPOSTOS c5 s dee uir Leser cda 247 CAP TULO 20 EXPERI NCIA 18 TECLADO MATRICIAL 4X4A 248 OBJETIVO rr 248 DESCRI O C M E 248 ESQUEMA ELETRICO ELLE 249 FLUXOGRAMA 0 E TCI 250 GODIGO 7 52 ETE 254 201 EXERG GIOS PROPOSTOS uen feto Det CE e araea aae 261 CAP TULO 21 EXPERI NCIA 19 REL GIO DE TEMPO REAL RTC a u 262 Manual do Usu rio Desenvolvimento de Sistemas com Microcontroladores PIC MCMASTER OBJETIVO umu asta de ee 050
166. a coleta de dados ou a visualizac o gr fica de informac es a interligac o entre o kit e o computador um recurso que n o poderia ser deixado de lado Optou se pela comunicac o serial padr o RS 232 atrav s de um conector DB 9 A interface e ajuste de tens es necess rias a este padr o em relac o operac o do PIC TTL feita por um Cl dedicado Internamente as vias de TX e RX podem ser ligadas aos pinos da USART do PIC possibilitando o uso deste recurso Para habilitar este recurso necess rio que os jumpers apropriados estejam na posic o ON A ligac o ao microcontrolador segue a tabela abaixo PIC COM RC6 TX sa da RC7 RX entrada Como a porta de comunicac o compartilhada com o gravador necess rio tamb m selecionar a serial para o PIC atrav s do bot o de modo de utilizac o Faz parte tamb m do m dulo de comunicac o serial o conector DB9 f mea que segue a pinagem abaixo Pino Func o 1 TX sa da RX entrada Terra GND CTS utilizado apenas pelo gravador RTS utilizado apenas pelo gravador I OIN Convers o anal gica digital AID verdade que estamos considerando o mundo cada vez mais digital principalmente nos dias de hoje onde vemos bilh es de informac es trafegando por fibras pticas e imagens de computador recriando o mundo real Mas n o podemos esquecer que a natureza completamente an
167. estourar ser novamente carregado com 131 Desta forma podemos calcular o tempo entre interrup es seguindo a equa o abaixo Tempo TMRO 256 valor com que carregado prescaler ciclo de m quina Tempo TMRO 256 131 64 5 Tempo TMRO 8ms Portanto a interrup o ir ocorrer a cada 8ms A fim de criar a base de tempo de 1 segundo foi acrescentado um contador auxiliar que conta o n mero de ocorr ncias da interrupc o de TMRO Com este contador auxiliar pode se estender a base de tempo sempre em m ltiplos de 8ms Caso este contador auxiliar seja configurado para contar 125 interrup es de TMRO pode se obter a base de tempo de 1 segundo fundamental para a criac o do timer da experi ncia 50 Esquema El trico 220R DS2 DS3 DS4 Centena Unidade A AAA a ANNA TP A NINA AN NAPA MA INIA 220R BC337 BC337 BC337 BC337 5V 5V 4 7K 4 7K 4 7K 4 7K RESET lt 10K 1 1 voD 22 vss Et paz A A i RB6 2 hith res 5 res Ez VAN NAN NA NANA ei RB3 25 viva 5 Dy RB1 5 RBo
168. inicial em 1 segundo Decrementa o valor inicial em 1 segundo BIO N Inicia e paralisa o temporizador Para a contagem do tempo utilizou se a interrup o de TMR1 configurada conforme a tabela a seguir Ciclo de Maq Prescale Conta TMR1 Auxiliar Per odo Freq ncia 1 hs 8 62500 2 1 000 000 hs 1 Hz Configurou se o prescale do TMR1 em 1 8 e o contador foi inicializado com o valor total menos o desejado para a contagem 65 536 62 500 Desta maneira a interrup o ocorre a cada 0 5 segundo A fim de criar a base de tempo de 1 segundo foi utilizada uma vari vel auxiliar que decrementada a cada ocorr ncia da interrup o Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 101 Esquema El trico AA N 330R 4 SA o a ON 330R e P eo UN 330R 1 14 2 45V x gt Z 330R 4 7K e We Z 3 r ik BC337 4 330R 1 WE 220R MN WP gt AAN DS1 DS2 DS3 DS4 E B AAA d Milhar Centena Dezena Unidade OS 330R ANN Lb c pm S 1 1 ENYA d b gt gt b eun AM A HA HAS ELE Pa dV 4 842 540 40 ro ut DN
169. ke de ees a TRATAMENTO DA INTERRUPCAO DE TIMER 2 NEIN SE E JL MEI NEL NE 0 5 4 de ce c A E sk Ok ok ok A INTERRUPC O DE TMR2 UTILIZADA PARA FORNECER A BASE DE TEMPO PARA AS MEDIDAS DAS ROTAQ ES POR SEGUNDO DO VENTILADOR E DA TEMPERATURA DO DIODO AL M DISSO ELA SETA OS FLAGS PARA QUE ESTES SEJAM ATUALIZADOS NO LCD O TMR2 EST CONFIGURADO PARA POSTSCALE DE 1 10 E PORTANTO A CADA 10ms A INTERRUP O GERADA O CONVERSOR A D LIDO A CADA INTERRUP O OU SEJA A CADA 10ms A CADA 100 INTERRUP ES OU SEJA A CADA 1 SEGUNDO O VALOR DO CONTADOR DO TMR1 SALVO NA VARI VEL CONT VENT HIGH E LOW DESTA FORMA O VALOR DE CONT VENT O N MERO DE ROTA ES DO VENTILADOR POR SEGUNDO NA VERDADE ESTE VALOR ENCONTRA SE MULTIPLICADO PELO N MERO DE PALHETAS DO VENTILADOR INT TMR2 PIR1 TMR2IF LIMPA FLAG DA INTERRUP O DECFSZ TEMPO 1S F FIM DO 1 SEGUNDO GOTO INT TMR2 2 N O PULA P INT TMR2 2 SIM OVLW 100 OVWF TEMPO 1S RECARREGA TEMPORIZADOR DE 1 SEGUNDO BCF T1CON TMR1ON PARALIZA CONTADOR DO TMR1 OVF TMR1H W OVWF CONT VENT HIGH OVF TMR1L W OVWF CONT VENT LOW SALVA VALOR DO TMR1 EM CONT VENT CLRF TMR1H CLRF TMR1L RESETA CONTADORES BSF T1CON TMR1ON LIBERA CONTADORES DO TMR1 BSF MOS
170. kk k kk kk k k k k k k k k kk k k kk k k k kk kk PISCA PISCA VARI VEL PARA DEMONSTRAR A IMPLEMENTA O DE DELAYS E A INVERS O DE PORTAS APENAS OS BOT ES DA LINHA 4 EST O ATIVADOS SENDO QUE O DA COLUNA 1 UTILIZADO PARA INCREMENTAR O TEMPO ENTRE AS PISCADAS O BOT O DA COLUNA 2 UTILIZADO PARA DIMINUIR O TEMPO ENTRE AS PISCADAS 0 8 E 0 lt lt ce 8 cock oe X DE Ck ck oA ko Ko CONFIGURA ES PARA GRAVA O d ow MARX 0008 RO BM DE ER RRA ERA CONFIG OFF _CPD_OFF 8 _DEBUG_OFF amp _LVP_OFF amp _WRT_OFF amp _BODEN_OFF ARS deo EA e A e G de VARI VEIS E AE 3k de de o ERA wo AE CCA A E AA ARRE DEFINI O DOS NOMES E ENDERE OS DE TODAS AS VARI VEIS UTILIZADAS PELO SISTEMA CBLOCK 0x20 ENDERECO INICIAL DA MEM RIA DE USU RIO W_TEMP REGISTRADORES TEMPOR RIOS PARA STATUS_TEMP INTERRUP ES ESTAS VARI VEIS NEM SER O UTI LIZADAS CONTADOR BASE DE TEMPO PARA A PISCADA TEMPO1 REGISTRADORES AUXILIARES DE TEMPO TEMPO2 TEMPO3 ENDC FIM DO BLOCO DE MEM RIA lt koc de ecc ke de oe Ck e ow x CE ko IO es
171. ko ok AAA Me MR OE 9 P DEFINIC O DOS BANCOS DE RAM E dk ICH e o ck o o Sk e RR OX S coe OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM KO ko ko k X X Xk Xx k k Xx X pO CONSTANTES INTERNAS KO ck ck Xk ko gt Xk k k k XxX oO k xk k Xx x A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O FILTRO_TECLA EQU 200 FILTRO P EVITAR RUIDOS DOS BOT ES e Ck Ck ok Ck e e ck ok o e Ck ko e ck o XX koe HR e DECLARA O DOS FLAGs DE SOFTWARE Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 181 de ck EXA oe oko Y ko Xx X X A DEFINI O DE FLAGs AJUDA NA PR ESTE PROGRAMA UTILIZA NENHUM NEL ONE NI NE NC SE NE SEL AME NE NE NE 5 eo RA AS ENTRADAS DEVEM SER ASSOCIADAS FUTURAS ALTERAC ES DO HARDWARE SDEFINE BOTAO 0 PORTB O DE
172. ko A ko X 3 DESCRI O GERAL 7 k k k xk OK K ck ks ck ok k k Xx PARA EXPLICAR O FUNCIONAMENTO DE UM TIPO DE NO TEMPO DE CARGA DE UM CAPACITOR O TEMPO DE CARGA DO CAPACITOR MOSTRADO NO LCD E INVERSAMENTE PROPORCIONAL TENS O APLICADA ATRV S DO POTENCI METRO A Xo oc on 00000 80 X A ck CK CONFIG _CP_OFF amp _CPD_OFF CONFIGURA ES PARA GRAVA O 8 ERRE RRA ERA 0 0 RO BM DE ooo 3 DEBUG OFF 8 _LVP_OFF amp _WRT_OFF amp BODEN OFF 6 OSC de A E EA E X FT ESA e ko X o A ode ck DEFINIC O DAS VARI VEIS INTERNAS DO PIC 0 oe oko e DE oe Ko OK E Xe Ko deo O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITA O P16F877A INC 1 MICROCONTROLADOR UTILIZADO ARRE de Oo AXE ko x e CX 0 e X oko Kk Oe oko Ko de Xo ko A DEFINIC O DAS VARI VEIS E E ce RE de d ko A o ke RA mpu Ko RAR ko eo X AX ESTE BLOCO DE VARI VEIS EST L
173. macro End of macro move the multiplicand to W reg Clear carry bit in the status Reg RETORNA E e Ceo eo A deo X A de A Xe 3 DELAY DE 1MS AT 256MS FERRE CA wb ok X EA e A XS ke A AX ESTA UMA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 289 DELAY MS EM WORK OVWF OVLW OVWF CLRWDT DECFSZ GOTO DECFSZ GOTO RETURN W TEMPO1 TEMPO0 TEMPO0 F TEMPO1 F E Co ROTINA DE ESCRITA AA E C 0 ck E EA AE 4 ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK ESCREVE MOVWF NOP BSF GOTO BCF MOVLW CALL RETURN k DISPLAY ENABLE 5 1 zl DELAY MS A AA AR W HEX o ok 9 ESTA ROTINA RECEBE AJUSTE_DECIMAL MOVWF CLRF CLRF CLRF MOVF BTFSC RETURN INCF MOVF XORLW BTFSS GOTO XORLW BTFSS GOTO CLRF INCF DECFSZ GOTO RETURN AUX UNIDADE DEZENA CENTENA AUX F ST
174. mais 255 vezes e desta forma obt m se um delay de 256ms A proposta da rotina de delay foi gerar um delay fundamental em 1ms por m a mesma id ia pode ser utilizada para criar rotinas com delays fundamentais diferentes Exerc cios Propostos 1 Alterar a rotina de delay para gerar um delay fundamental de 100us 2 Alterar a rotina de delay para gerar um delay fundamental de 10ms 3 Incluir o tratamento de debounce nas teclas 38 Cap tulo 6 Experi ncia 4 Convers o BCD para displays de 7 segmentos Objetivo O objetivo desta experi ncia ensinar ao aluno como criar um decodificar BCD para displays de 7 segmentos Descric o Os displays utilizados no MCMASTER s o conhecidos como displays de leds de 7 segmentos pois os n meros s o compostos por 7 tracos Estes componentes possuem ainda o ponto decimal e s o considerados displays num ricos por n o possu rem tracos suficientes para a exibic o de todas as letras do nosso alfabeto Para facilitar a vida do projetista o mercado padronizou uma nomenclatura para todos os tracos do display possibilitando que tratemos cada um deles individualmente G A E B Comum Comum E E 6 0 D O Dp Desta forma temos um pino para controlar cada um dos segmentos A G e mais o ponto decimal Dp Os dois pinos adicionais s o os comuns que podem ser ligados a todos os catodos ou anodos dos leds internos Por causa disso estes displays s o fornecidos e
175. navegac o 4 A comunicac o com o LCD paralela com 8 vias de dados Al m destas mais duas vias s o utilizadas para controlar o LCD uma denominada de ENABLE e a outra de RS A comunicac o com o LCD somente de escrita desta forma o pino de R W do LCD est diretamente ligado ao terra GND n o permitindo a leitura do mesmo As 8 vias de dados do LCD est o ligadas ao PORTD do microcontrolador de RDO LSB at RD7 MSB O pino de ENABLE est conectado ao pino RE1 do PIC e o pino RS do LCD ao pino REO do microcontrolador Assim o esquema de ligac o segue a tabela abaixo PIC LCD RDO RD7 DO D7 REO RS RE1 ENABLE Terra GND R W Para maiores informa es a respeito do LCD pode se consultar o data sheet contido no CD que acompanha o MCMASTER Displays de leds com 7 segmentos Como j visto o LCD uma tima ferramenta de informac o ao usu rio por m muitas vezes ele ainda invi vel Pode se comentar alguns motivos desta inviabilidade custos capacidade de visualizac o iluminac o etc Por isso em muitos projetos os velhos e pr ticos displays de leds ainda s o a melhor alternativa No MCMASTER optou se pela utilizac o de displays de 7 segmentos que s o num ricos mas que permitem a visualizac o de diversas letras atrav s da combinac o espec fica destes segmentos Optou se tamb m por 4 d gitos todos com os segmentos interligados e os controles comum indepen
176. o filtro de debounce seja finalizado No fluxograma apresentado fica f cil de entender o conceito da varredura do teclado matricial O exemplo da experi ncia analisa o teclado e caso alguma tecla seja pressionada mostra a linha e coluna da mesma mostrado no display LCD 248 Esquema El trico LINT 220R SA1 SA2 SA3 SA4 5 o 5 o 5 6 220R LIN2 SA5 SA6 SA7 SA8 e e LIN3 220R Ll SA9 SA10 SA11 SA12 e o e o o o 220R 2 LIN4 SA13 SA14 SA15 SA16 e o eo o o e COL1 COL2 Na VIVA 2 1 45V 3 5 E oo 20 1 m CB RESET S10K MC1 o o 1 MCLR VDD an 2 RAO vss S RA RB7 A Ra RB6 E nas 5 MMM Ko 2 RA RB4 RS TRAS RB3 NANA 45V EN A REO RB2 1 RB1 5 RE2 RBO 72 VDD RD7 vss RD6 A osc RD5 ea 14 10502 RD4 151 RCO RD3 4MHz nci RD2 nce RD1 Rcs RDO 4 RC7 5 6 PIC16F877A 5V 10K Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 249 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA y CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs CONFIGURA FREQ
177. o o lt lt lt A i 5 o 6 5 Q I 1 lt 5 i 85 1 1 LH 1 I i 305 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER MICROCONTROLADOR 5V a a 7 o ux eS Ovy Re gt 8H LL 5 CJ5 5 4 E 5 6 H LU Piae 5 b SS c der o 5 8 0 8 8 U mm Q 99 lt lt lt lt lt lt 0000 CE r 22281 c c 9 al 98 1 qe SE HOZ 30001 E ss 5 So o x 5 8 vem seu 5 bl lLe 8 Y o vo to d E 5 6 E gt 9 rd o O u e e Se e e 25 28 CONECTOR DE EXPANSAO CN2 CN1 5V 12V RB7 RB5 RB3 GND ENO RB1 RD7 GNDA Y 1 mmm gt RB6 mam gt gt RB2 mamm 00 5 gt RD4 RC7 RC6 mmm RC5 LI RD3 wmm P RD2 306 FONTE 5V 7805 330R R49 E OH I3INH3A H3MOd 34001 Ue v ASC AnOL 919 to 1 gt N M 40001 gt e m 21 LLO ASZIANOL a NEL va E 429 3 x SS N 4C 4 219 o S
178. relacionada A rotina TABELA TEMP que se encontra no final do c digo apresentado neste cap tulo efetua a convers o entre a tens o lida unidades de A D e a temperatura real Nada mais que uma tabela de convers o lineariza o Esta tabela foi constru da com base na curva de resposta do diodo utilizado em fun o da temperatura Caso seja constru do um sensor de temperatura com outro tipo de componente que gere uma tens o vari vel basta refazer a tabela de convers o Uma vez convertida a temperatura ent o mostrada no LCD na unidade de Celsius lado direito O aquecimento O software possibilita que o usu rio aumente a temperatura sobre o diodo atrav s do controle manual da resist ncia existente na placa Isso feito por interm dio de um dos PWMs do PIC que se encontra ligado ao resistor Atrav s dos bot es das colunas 1 e 2 pode se aumentar e diminuir o duty cycle do PWM variando de O a 100 Mantendo se os bot es pressionados o incremento decremento autom tico O valor atual para o aquecimento mostrado no LCD lado esquerdo Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 277 O resfriamento Inversamente ao aquecimento o software possibilita tamb m o resfriamento do sistema atrav s do ventilador que controlado pelo outro canal de PWM do PIC Obviamente o sistema s capaz de obter temperaturas levemente abaixo do valor ambiente mas a intenc
179. reproduza o valor bin rio original A tabela criada utilizando se a instruc o RETLW O valor bin rio que se deseja converter adicionado ao PCL program counter de forma a desviar o fluxo do programa para a linha que cont m a combinac o de 0 e 1 que formar o o caractere no display O software utiliza as teclas da linha 4 colunas 1 e 2 para incrementar e decrementar o valor da vari vel CONTADOR Esta vari vel est limitada pelas constantes MIN e MAX A tabela de convers o foi utilizada a fim de visualizar o valor da vari vel CONTADOR no display de 7 segmentos 40 Esquema El trico 220R DS1 DS2 DS3 DS4 A A Milhar Centena Dezena Unidade E m BC337 BC337 BC337 BC337 5V 35v 4 7K 4 7K 4 7K 4 7K RESET ep MC1 o MGR vss EL 40 Turpe az EUM 34 PA 5 33 NANA ARA gt 1 2 3 E E CJ2 28 5 gt pz 299 22 3 x 21 2 Ha 3 es ls PIC16F877A 220R LIN4 SA13 SA14 SA15 SA16 o COL1 COL2 COL3 COL4 10K 10K 10K 10K 3 2 1 CJ3 Coluna 1 RBO o S 7 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTE
180. software deve se descarregar o capacitor colocando o pino do microcontrolador como sa da em n vel l gico O O capacitor se descarregar pelo resistor de 330R e Ap s o capacitor estar descarregado coloca se o pino do microcontrolador em entrada e comeca se a contar o tempo que o capacitor leva para se carregar atrav s do resistor de 4K7 ou seja quanto tempo o capacitor leva para atingir n vel l gico 1 e Como tempo de carga inversamente proporcional tens o aplicada pelo potenci metro sabendo se o tempo de carga pode se estimar a tens o aplicada Jumpers O sistema de jumpers est ligado ao pino RA5 do microcontrolador e segue o esquema el trico representado a seguir Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 9 5V ON OFF Posic o 1 JP1 22K 1 2 8 4 Posi o 2 2 2 33K i 2 8 Jumpers RA5 L Posi o 3 JP3 RA5 330R 47K 1 2 3 3 2 1 JP4 100nF 10K OAHloedeDJosIAIa oAHslsedJosIAIQ Se configurarmos o sistema para divisor resistivo basta ler com o conversor A D do PIC a tens o presente no pino RAS para estimar a posi o do jumper Se configurarmos o sistema para resistor capacitor devemos seguir a mesma metodologia explicada no caso do potenci metro ou seja e Inicialmente descarregar o capacitor atrav s do resistor de 330R colocando o pino do microcontrolador como sa da em n vel l gico 0 e Ap
181. total do PWM CCPRxL CCPxCON lt DCxB1 DCxBO gt x Tosc x Prescale do TMR2 T PR2 1 x 4 Tosc x Prescale do TMR2 to CCPRxL CCPxCON lt DCxB1 DCxB0 gt T PR2 1 X 4 Verifica se ent o que apesar do per odo e o do tempo de pulso dependerem do cristal Tosc e do ajuste do prescale do TMR2 o duty cycle depende nica e exclusivamente dos valores ajustados nos registradores PR2 CCPRxL e CCPxCON bits 5 e 4 Veja que o registrador PR2 8 bits que controla o per odo do PWM multiplicado por 4 para poder igualar se aos 10 bits que controlam o duty cycle E justamente este o problema da Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 175 resoluc o m xima atingida Se o registrador PR2 for ajustado com um valor menor que 8 bits ou seja menor do que 255 ser o necess rios menos do que 10 bits para atingir um PWM com 100 de duty cycle Portanto o n mero de pontos para ajuste do duty cycle 4 vezes maior do que o valor ajustado em PR2 1 Em termos de bits podemos dizer que a resoluc o do duty cycle 2 bits maior do que o n mero de bits que formam o valor ajustado em PR2 Repare tamb m que caso PR2 seja ajustado com 255 nunca ser atingido um duty cycle de 100 pois o per odo atingir o valor m ximo de 1024 PR2 1 x4 enquanto o tempo do pulso em n vel alto lt DCxB9 DCxB0 gt ser no m ximo 1023 No software da experi ncia ativou se a sa da do m dulo CCP
182. varredura Para isso interligam se todos os displays juntando todos os pinos de um mesmo segmento numa nica via de forma a criar um barramento de dados com as vias de A at Dp Em seguida utiliza se um pino para controlar o comum de cada um dos displays total de 4 pinos Assim quando se deseja escrever em um dos displays bastar informar os segmentos a serem acionados nas vias de dados e ligar o comum do display desejado Utilizando o hardware desta forma f cil notar que apenas um dos displays poder ser acionado de cada vez Por m se acionarmos os displays continuamente um ap s o outro e de forma r pida nossos olhos n o conseguiram perceber que apenas um display est acionado por vez dando a impress o de que todos os displays est o acionados o tempo todo PI Display 1 Display 2 Display 3 Display 4 Vias de Dados lt G Tm Assim empregando se a t cnica de varredura consegue se controlar os 4 displays utilizando apenas 12 pinos do microcontrolador O exemplo desenvolvido para esta experi ncia faz muito mais que simplesmente implementar a varredura dos displays Trata se de um contador regressivo de segundos ou seja um temporizador capaz de contar at 9 999 segundos As teclas habilitadas s o as da linha 4 e seguem as fun es descritas na tabela Coluna Descri o 100 nenhuma fun o Incrementa o valor
183. 01111 TRISA 00001111 TRISB L0011001 TRISC 00000000 TRISD 00000000 TRISE rB 7 eo We a o AS INTERRUP ES N O SER O A wes ko ok oo lt ERA X ko E A ok ox VETOR de ke 3 PORTA DO BOT O 1 PRESSIONADO 0 lt gt E IBERADO E X A A Ck e oe E e A A A x DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO ENTRADA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 ER AR ko XA dk o o0 RX SA DAS PORTA DO LED 0 APAGADO 1 ACESO PINO P 1 lt 1 0 L PINO P MATRI do waku ERA E ck do 0k ck ok ck DHT Kk AX DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO SA DA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 E 1 ARA ATIVAR GRUPO DE 8 LEDS EDS ATIVADOS EDS DESATIVADOS ARA ATIVAR LINHA 4 DO TECLADO CIAL 1 LINHA ATIVADA 0 LINHA DESATIVADA dE E SIE D MEE DE RESET DIE SE EL X ES NE JEN 6 IE E ME E 3 ENDERECO INICIAL DE PROCESSAMENTO deck CK 4 Xo ko ko o OX ce Xo o s ko X IN CIO DA INT
184. 1111 TRISB EQU EQU EQU PORTB 0 PORT TA 4 B 7 10 30 0 SOMANDO 1 SUBTRAINDO CONSTANTES 230 n AS INTERRUP ES N O SER O RA E e ck oe o AA DEFINI O DE TODOS OS PINOS QUE RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 UTILIZADAS 0X oA xoc ox X LIZADAS PELO SISTEMA RRA o de ck E ok oko AA ode de DEFINI O DE TODAS AS CONSTANTES UTII VALOR M NIMO PARA O CONTADOR VALOR M XIMO PARA O CONTADOR FILTRO PARA BOT O XK k xk k xk koX ENTRADAS lt ck odo 3H 005 ko XX je SER O UTILIZADOS COMO ENTRADA PORTA DO BOT O 1 PRESSIONADO 0 LIBERADO 0 EEE 0k oe OW ow REE SA DAS denk Ud ch Ao decode 5 UN E oe o4 E b O O E a EE O DEFINI O DE TODOS OS PINOS QUE SER O UTI RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 LIZADOS COMO SA DA PINO PARA ATIVAR GRUPO DE 8 1 gt LEDS ATIVADOS 0 LEDS DESATIVADOS PINO PARA ATIVAR LINHA 4 DO MATRICIAL 1 g
185. 2 FILTRO PARA BOTAO 2 FILTRO BT3 FILTRO PARA BOTAO 3 ENDC O E o 3k ok wk ko kl de e eS ke koe 0o DEFINI O DAS VARI VEIS INTERNAS DO PIC TEARS RRA 8 A MAA Jes MR 6 o MR ARQUIVO DE DEFINICOES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO INCLUDE P16F877A INC MICROCONTROLADOR UTILIZADO lt ks ck ck k ko k ck k k XxX XxX ok Xx XxX k Xx X DEFINI O DOS BANCOS DE RAM E Ok Ck k k Ok k Ck Ck X Ok Ck Ok OX Ck Ck Ok X Ok Ck Ck X Ok Ok Ck OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM o Se ko de ko A E de ko XX eo X EE ode oe ok o Ko e oc Ck E es pot CONSTANTES INTERNAS ds AXE E Ck e 0e Ck A Ck we de A e ko Ck o e Se A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O
186. 2 para controlar a rotac o do ventilador que est ligado ao pino RC1 O registrador PR2 foi ajustado com valor m ximo ou seja 255 e o prescale do timer foi configurado para 1 16 Com isso a frequ ncia do PWM ficou em 244 14Hz PWMerer odo 4 096ms considerando se que o microcontrolador do sistema MCMASTER est trabalhando a 4MHz As teclas da linha 4 foram habilitadas e receberam as seguintes fun es Coluna Duty Cycle 1 0 2 50 3 75 4 100 A fim de deixar o sistema mais interativo utilizou se o LCD para mostrar o valor atual ajustado para o PWM 176 Esquema El trico LIN4 220R SA13 SA14 SA15 SA16 5 COL1 COL2 COL3 COL4 h hhh 10K 10K 10K 10K 3 2 1 5 EN O O m 2 o e VDD 2 lt 10K 080 E A DB2 VSS 1 DB3 hh DB4 RS DB 5 177 086 EN DB7 RW b LCD 5V 5V 32 31 40 139 8 37 36 35 B Js Te Te 28 pERRE 26 PIC16F877A lt 1N4148 lt Ventilador x Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 177 Fluxograma VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs
187. 3 04 05 06 07 08 09 10 Tl Dues 13 14 19 DERA RETO RETO RETO RETO RETO RETO RETO RETO RETO RETO RETO RETO RETO RETO RETO RETO RNA RNA RNA RNA RNA RNA RNA RNA RNA RNA RNA RNA RNA RNA RNA RNA POSI O CORRETA s s s s s s s s s s s s s s s s RA VALOR DE CONTADOR R SOMENTE AT 15 DOS SEGMENTOS BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO BO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO LO CORRETO Hj Q P CO 0 D SEE EE E DL SED NE Nb EE ZEND MX E IE D NEM E DO PROGRAMA wok hee s EE LIMPA LIMPA LIMPA LIMPA LIMPA ALTERA CONF I CONF CONF CONF CONF DESL DESLI TODAS AS INTERRUP ES DESI PORTA PORTB PORTD PORTE PARA 1 0 1 0 1 0 1 0 1 0 BANCO 1 DA RAM DO PORTA DO PORTB DO PORTC DO PORTD DO PORTE GA COMPARADORES ANAL GICOS GA CONVERSORES A D S O PRESCALER 1 2 NO TMRO PULL UPS DESABILITADOS AS DEMAIS CONFG RETORNA PARA O BANCO 0 LEVANTES LIGADAS 46 ck CR S E RS ove
188. 5 5 6 o E 6 2 Hi rd 5 1 rd rs n lt 1 St er oa a o dn 8 x E 2 o E E da E 5 we 3 ro lt 5 1 Sr 3 I e 3 8 5 e E 0 5 lt no 2 A V 22008 a u 1 SP zu e 1 amp SE Y eT 2202 0 8626 gt LB Le EREE 9 6 e H N Q V 0 8 I Rd Il amp 1 H x i e 1 1 1 SE 1 n E H q S 200 H 1 A xo Sor 1 i TE 1 s EN i 0 1 F gt L 4 EE Zm 2 o I e 1 ON 1 lt 1 a g OFF E yv f e 1 gt t PL z o o 2 5 co 85 N z yA 2 5 55 En a 8 se Z PS s o HA PE s h NE o E 5 cg Nec Eo NOLAN ANITA 2 SS o JL ne 4 1 u 1 a E oo Baa VS L ul me 9 8 8 8 8 c a lt 2 c c DN E 4 5 x x m a 5 gt ASE ASE lt S NS 8 8 SSE wit a x z H q 1 SA gt M o i E e 1 8 88 o Y S 2 h 1 0 8 E E E lt Va 1 2 a 1 2l bs 1 i xa d ELS 1 1 E i i 1 L 1
189. A VISUA NO DISPLAY N O de ko oe x ok dX d X C RETORNA LAY CORRETAI BOLO CORRET BOLO CORRET BOLO CORRET PO PO PO BOLO CORRET DISPLAY ENTE DESLIGAR O TIMER PO ER A EA CX AXE AE R ESTA ROTINA EXECUTA AS AC ES NECESS RIAS PARA DESLIGAR O TIMER DESL TIMER B B CF CF RETURN LIGA TIMER B B B B x r TFSC RETURN OVLW OVWE OVLW OVWE SF SF RETURN kk k INICIO C 0 0 C C B LRF LRE LRE LRE LRE ANK1 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF INTCON GIE LED INTCON GIE INTCON TOIF 256 125 TMRO e 2 9 TEMP1 INTCON GIE LED PORTA PORTB PORTC PORTD PORTE B 00101111 TRISA 00001111 TRISB 10011000 TRISC 00000000 SD TR de Xo A A A RA AM ROTINA DE E lt X6 X X INICIO dX X 7 lt lt DESLIGA CHAVE GERAL DE INT APAGA O LED RETORNA 8 ae Ke LIGAR O TIMER RA LIGAR O TIMER TIMER J ESTA LIGADO SIM NAO LIMPA FLAG DE INT RETORNA DI INICIA TMRO COR RETO DE TMRO RETAMENTE INICIA TEMP1 CORRETAMENTE LIGA CHAVE GERAL DE INTERRUP ES ACENDE O
190. A DAS lt lt Ac coUe Ok oe K OW KUU s R A ko AS SA DAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMA O E FUTURAS ALTERA ES DO HARDWARE DEFINE DISPLAY PORTD BARRAMENTO DE DADOS DO DISPLAY DEFINE RS PORTE O INDICA P O DISPLAY UM DADO OU COMANDO 1 DADO 0 gt COMANDO DEFINE ENABLE PORTE 1 SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA DEFINE TEC MATRICIAL PORT DO MICROCONTROLADOR LIGADO AO TECLADO MATRICIAL lt RB4 RB7 gt LINHAS 1 gt ATIVADAS 0 gt DESATIVADAS lt RBO RB3 gt COLUNAS 1 gt TECLAS PRESSIONADAS 0 gt TECLAS LIBERADAS SDEFINE LINHA 4 PORTB 7 PINO P ATIVAR LINHA 4 TECLADO MATRICIAL O LINHA 4 ATIVADA 1 gt LINHA 4 DESATIVADA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 223 HDEF INE SCL PORTC 3 VIA DE CLOCK DA EEPROM Uk OU o oo co ck oc X ARE ENTRADAS SA DAS RRA O AR RRA X SR X oko ARA o NR SDEFINE SDA PORTC 4 VIA DE DADOS BIDIRECIONAL DA EEPROM ESTA UMA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS X O VALOR PASSADO EM WORK W DELAY MS OVWF TEMPO1 CARREGA TEMPO1 UNIDADES DE MS OVLW 250 OV
191. A 1 LINHA 2 TX d h RX T Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 243 MOV CAL BSF Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q POPOPOPOPOPOPOPOPOPOPOPOPOPOPOP Q BCF MOVI CALI BSF Q Q Q Q Q Q Q Q Q Q Q Q POPOPOPOPOPOPOPOPOPOPOPODP Q LW SESESESESESESESESESESESESESES SE LW LW LW LW LW LW LW LW LW LW LW LW LW LW LW LW SESESESESESESESESESESES lt LW LW LW LW LW LW LW LW LW LW LW LW LW E 0x80 ESCREVE RS vt ESC gt ESC UA ESC ESC ESC ESC 9 ESC 6 ESC vy ESC 0 ESC ESC 5 ESC tn ESC ESC 170 ESC RS OXCO ESC RS REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE REVE COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 0 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE USART 9600 8 n 1 SE LECIONA O DISPLAY P COMANDO COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 0 SE LECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE TX d h RX 244
192. A AA AA MEL CONTADOR_AD CAPACITOR CARREGOU Y a 2 22 D CONVERTE VALOR DO TEMPO DE CARGA EM ASCII E MOSTRA NO LCD 166 e O VERS O 1 0 E E SR OA AG NP E UTILIZADO CONFIG _CP OFF amp EXPERI NCIA 13 LEITURA DE JUMPERS VIA RC KK k ks xk xk xk k ko X XA ck ko 0k ER A de ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO CONVERSOR A D FUNDAMENTADO NO TEMPO DE CARGA DE UM CAPACITOR O TEMPO DE CARGA DO CAPACITOR MOSTRADO NO LCD E INVERSAMENTE PROPORCIONAL TENS O APLICADA O TEMPO DE CARGA PODE SER ALTERADO UTILIZANDO OS JUMPERS LIGADOS AO PINO RA5 COM S O TR S JUMPERS EXISTEM 8 COMBINA ES POSS VEIS QUE ALTERAM O TEMPO DE CARGA DO CAPACITOR O QUARTO JUMPER DEVE ESTAR SELECIONADO NA POSI O RESISTOR CAPACITOR PARA QUE O EXEMPLO POSSA SER DATA 14 04 2003 RR deco c ke de x CED_OFE CA AA ko ko o wes XXX RS AR x E DESCRI O GERAL dd E d A 0 DE EE DE c de CONFIGURA ES PARA GRAVA O A kso Oc TE Ch o AA TE CA e ok Ck
193. A BOT O 2 MARCA BOT O 1 COMO LIBERADO O BOT O 2 EST PRESSIONADO N O ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM BOT O J ESTAVA PRESSIONADO N S O EXECUTA A O DO BOT O VOLTA AO LOOPING Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER BT2_LIB BCF ST_BT2 MARCA BOT O 2 COMO LIBERADO GOTO MAIN RETORNA AO LOOPING ACAO_BT1 AC O PARA O BOT O 1 BSF ST_BT1 MARCA BOT O 1 COMO J PRESSIONADO CALL LIGA_TIMER LIGA O TIMER GOTO MAIN ACAO_BT2 AC O PARA O BOT O 2 BSF ST_BT2 MARCA BOT O 2 COMO J PRESSIONADO CALL DESL TIMER DESLIGA O TIMER GOTO MAIN N O VOLTA AO LOOP PRINCIPAL AER AE TDT A Red CX E FIM DO PROGRAMA A e OK ko Co UK A 8 E TO END OBRIGAT RIO 60 Dicas e Coment rios No exemplo desta experi ncia sempre que ocorre a interrupc o o valor do TMRO carregado com 131 de forma a obter uma contagem de 125 ciclos Por m o contador do TMRO n o ficou parado entre o instante em que a interrupc o ocorreu e o instante em que ele foi novamente carregado Por este motivo pode ocorrer que no instante em que o contador novamente carrega
194. A DIRETAMENTE EM BCD DECREMENTA TIMER DECF UNIDADE F INCREMENTA UNIDADE OVLW OXFF XORWF UNIDADE W 5 STATUS Z UNIDADE OXFF RETURN N O RETORNA SIM OVLW 9 OVWF UNIDADE CARREGA UNIDADE COM 9 DECF DEZENA F DECREMENTA A DEZENA OVLW OXFF Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 113 XORWF BTFSS RETURN OVLW OVWF DECF OVLW XORWF BTFSS RETURN OVLW OVWF DECF OVLW XORWF BTFSS RETURN OVLW OVWE RETURN de CX Us ok de NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO MICROCONTROLADOR E AS DEZENA W STATUS Z 9 DEZENA CENTENA F OXFF CENTENA W STATUS Z CENTENA MILHAR F OXFF MILHAR W STATUS Z MILHAR DEZENA OXFF N O RETORNA SIM CARREGA A DEZENA COM 9 DECREMENTA A CENTENA CENTENA OXFF N O RETORNA SIM CARREGA CENTENA COM 9 DECREMENTA O MILHAR MILHAR OXFF N O RETORNA SIM CARREGA O MILHAR COM 9 RETORNA Xo DE ko X ok ed 0000 o we A koe DER E MO Xe X RAR ko CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE owe ks ee de E ok X oe ko ck Ok o e des Ye 7A Xe A0 s X CAS koc CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A M QUINA E AGUARDA O ESTOURO DO WDT CONFIG CLRF LRE LRE LRE LRE
195. A ESTABILIZA O BSF ENABLE ENVIA UM PULSO DE ENABLE AO DISPLAY GOTO 41 r BCF ENABLE H MOVLW 1 CALL DELAY_MS DELAY DE 1MS RETURN RETORNA ATUALIZA TELA LINHA 1 o soc 0 RA AER ARRE ko ck MR CK oko X X RO SR ROTINA DE ESCRITA LINHA 1 DO LCD dk A dX Bd e ck TE wk oA ck ko UX ko oko KR ESTA ROTINA ESCREVE A LINHA 1 DA TELA PRINCIPAL DO LCD COM A FRASE LINHA 1 MASTER I2C 6 CLRF TEC_MATRICIAL DESATIVA TODAS AS LINHAS DO TECLADO BCF RS SELECIONA O DISPLAY P COMANDOS MOVLW 0x83 COMANDO PARA POSICIONAR O CURSOR CALL ESCREVE LINHA 0 COLUNA 3 BSF RS SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE MASTER I2C MOVLW M 224 Q gt SE LW Q SE LW a lt E LW Q SE LW e lt E LW SE LW Q SE LW Q SE LW lt E LW Q POPOPOPOPOPOPOPROPO Q E E CLRF RETURN Ye E xk ESCREVE VAS ESCREVE s ESCREVE E ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE MET ESCREVE NES ESCREVE DISPLAY LIMPA BARRAMENTO DE DADOS RETORNA do lt lt A ok Kok ok o de ko Ok 0 0 oo e Moo X Xe Ao X AO ko ROTINA DE ESCRITA LINHA 2 DO LCD eo we ck
196. A FREQU NCIA DO CLOCK DO BARRAMENTO PC EM 100kHz y HABILITA MODO MASTER TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM Y INICIALIZA DISPLAY CARREGA ENDEREGO A SER LIDO DA MEMORIA EEPROM C ESPROM READ Y SALVA DADO LIDO NA VARIAVEL CORRETA VALOR_DADOS MONTA TELA PRINCIPAL DO LCD 216 LIMPA WDT BOT O 0 sim PRESS BOT O 1 Sum PRESS BOT O 2 Sim PRESS BOT O 3 Sm PRESS TRATA BOT O 3 CARREGA ENDERECO E ONDE O DADO SER TRATA BOT O 2 LIDO DA E PROM CARREGA ENDERECO I C EEPROM READ ONDE O DADO SER SALVO NA E PROM ERRO DE LEITURA TRATA BOT O 0 TRATA BOT O 1 TRATA BOT O 2 TRATA BOT O 3 y CARREGA DADO A SER SALVO NA E PROM Sim lC EEPROM WRITE CARREGA DADO LIDO DA E PROM NA VARI VEL CORRETA VALOR DADO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 217 TRATA BOT O 0 INCREMENTA VALOR DADOS ATUALIZA LCD AGUARDA PC LIVRE B EVENTO IC EM ANDAMENTO TODOS OS EVENTO PC FINALIZADOS RETURN ACK OUT CARREGA ACK 0 SSPCON2 ACKDT 0 y ENVIA ACK SSPCON2 ACKEN 1 RETURN TRATA BOT O 1 DECREMENTA VALOR_DADOS ATUALIZA LCD 0 TESTA ACK RECEBEU ACK LIMPA FLAG
197. A NA E2PROM 4d lt lt oko Xe ko o 3 ok ck e E E E ESTA ROTINA ESCREVE O DADO PASSSADO EM W NO ENDERECO ACERTADO ANTERIORMENTE NA VARI VEL ENDERECO ESCR E2PROM BSF STATUS RP1 COMUTA PARA BANCO 2 DA RAM MOVWF EEDATA SALVA DADO PASSADO PELO W BCF STATUS RP1 VOLTA PARA BANCO 0 DA RAM Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 69 MOVF BSF MOVWF BSF BCF BSF MOVLW MOVWF MOVLW MOVWF BSF NOP BCF BTFSC GOTO BCF BCF RETURN ENDERECO W i STATUS RP1 EEADR STATUS RPO EECON1 EEPGD E EECON1 WREN 0X55 i EECON2 OXAA EECON2 EECON1 WR A EECON1 WREN EECON1 WR 1 STATUS RP1 STATUS RPO CARREGA EM W O ENDERECO COMUT TA PARA BANCO 2 DA RAM SALVA ENDERECO EM EEADR COMUT APONT TA PARA BANCO 3 TA PARA MEM RIA HABILITA ESCRITA NA INICI ALIZA O DA ESC INICIA ESCRITA NAO OPERA DA RAM DE DADOS EEPROM RITA DESABILITA ESCRITA NA EEPROM ACABOU ESCRITA N O AGUARDA VOLTA AO BANCO 0 DA RAM RETORNA Ce xe Ao eoo oe we ke de o E ok o se ode oce e A X X ROTINA DE LEITURA DO VALOR DO CONTADOR de o Wes e o eode oko c X ko Y Ck x de ko
198. AAA AE E E AA E HE E CONST ANTES INTERNAS x X4 cko 6 R o aku su RT OK o A DE A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O ESTE PROGRAMA N O UTILIZA NENHUMA CONSTANTE DECLARA O D de ck qh e Ao deo 0X Kk ok ok Ok 0 oo A A A AA X AS ke sk OS FLAGs DE SOFTWARE Ue oo E sh 8 E ko eode we ge e OX E 8 A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM ESTE PROGRAMA N O UTILIZA NENHUM FLAG DE USU RIO NES MED ED EL NE ND E LG Ee ND E LG WE E NE NE ILI MESE NX E JE E LE ENTRADAS E INI NE sk E E NEL EE DL NS UE D dE AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMA O E FUTURAS ALTERAC ES DO HARDWARE ESTE PROGRAMA UTILIZA APENAS UMA ENTRADA P O CONVERSOR A D ESTA ENT TRADA PRECISA SER DEC LARADA POIS O SOFTWARE NUNCA FAZ REFER NCIA A ELA DE FORMA DIRETA POIS O CANAL A D A SER CONVERTIDO SELECIONADO NO REGISTRADOS ADCONO DE FORMA BIN RIA E N O ATRAV S DE DEFINES POR M PARA FACILITAR O ESTA ENT SDEFINE RADA NORMALMENTE CAD PORTA 0 XX E
199. ADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT ISTO EVITA PROBLEMAS NO START UP DO PIC E COMECA NOVAMENTE BTFSC GOTO STATUS NOT TO o oe ok Xo A X gel E INICIALIZA O DA RAM lt lt ko Xv eo oe X X 8 0 ke Ko Ok oO K ko ck Xe dv Ck ko ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 EM SEGUIDA AS VARI VEIS DE RAM DO PROGRAMA S O INICI MOVLW 0X20 MOVWF FSR LIMPA RAM CLRF INDF INCF FSR F MOVF FSR W XORLW 0 80 BTFSS STATUS Z GOTO LIMPA RAM eoo deo E AXE ERA DE X ER oce X K LINHAS INICIALIZACAO DISPLAY BCF RS MOVLW 0x30 CALL ESCREVE MOVLW 3 CALL DELAY MS MOVLW 0x30 RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM D EE e EIE EE JL EE ME JE NE 3 INDO DE 0X20 A OXTF ALIZADAS APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSIC O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS COMPARA O PONTEIRO COM A LT POS 1 J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM de 00 o Wo gt CONFIGURA ES INICIAIS DO DISPLAY r DE ox 9 oko ce oko ko ko E X E lt lt 48 ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISP
200. ALIZA FILTRO1 T FILTRO INICIALIZA FILTRO2 T FILTRO O BOT O 1 EST PRESSIONADO N O ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM BOT O J ESTAVA PRESSIONADO N O EXECUTA A O DO BOT O SIM CHECA BOT O 2 MARCA BOT O 1 COMO LIBERADO O BOT O 2 EST PRESSIONADO N O ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM BOT O J ESTAVA PRESSIONADO N O EXECUTA A O DO BOT O SIM VOLTA AO LOOPING MARCA BOT O 2 COMO LIBERADO RETORNA AO LOOPING A O DE DECREMENTAR MARCA BOT O 1 COMO J PRESSIONADO COLOCA CONTADOR EM W APLICA XOR ENTRE CONTADOR E MIN PARA TESTAR IGUALDADE SE FOREM IGUAIS O RESULTADO SER ZERO RESULTOU EM ZERO SIM RETORNA SEM AFETAR CONT N O DECREMENTA O CONTADOR ATUALIZA O DISPLAY A O DE INCREMENTAR MARCA BOT O 2 COMO J PRESSIONADO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 47 MOVF CONTADOR W COLOCA CONTADOR EM W XORLW MAX APLICA XOR ENTRE CONTADOR E MAX PARA TESTAR IGUALDADE SE FOREM IGUAIS O RESULTADO SER ZERO BTFSC STATUS Z RESULTOU EM ZERO GOTO MAIN SIM RETORNA SEM AFETAR CONT N O INCF CONTADOR F INCREMENTA O CONTADOR GOTO ATUALIZA ATUALIZA O DISPLAY
201. ARA FACILITAR A PROGRAMA O E BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA SA DA P O VENTILADOR VENTILADOR LIGADO 0 VENTILADOR DESLIGADO PORT DO MICROCONTROLADOR LIGADO AO TECLADO MATRICIAL lt RB4 RB7 gt LINHAS gt ATIVADAS 0 gt DESATIVADAS lt RBO RB3 gt COLUNAS gt TECLAS PRESSIONADAS 0 gt TECLAS LIBERADAS PINO P ATIVAR LINHA 4 0 LINHA 4 ATIVADA LINHA 4 DESATIVADA TECLADO MATRICIAL 2 6 R e 82 TA T DO MICROCONTROLADOR ix de dd HR ko x dk X o ck Ck KH PROGRAMA ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGIAO DESTINADA AS ROTINAS SEGUINTES ea coo lt gt ko o oko Ck oc HE ROTINA DE DELAY DE 1MS AT 256MS E X AX 0 ce OK eo AE Ch oe kx ko OX ESTA UMA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO EM WORK W 182 DELAY_MS OVWF OVLW OVWF CLRWDT DECFSZ GOTO DECFSZ GOTO RETURN ESCREVE MOVWF NOP BSF GOTO BCF MOVLW CALL RETURN CONF IG CLRF LRP LRE LRE LRE BANK1 OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWE
202. ARI VEIS ab uo UE NE NL dE No LIMPA TODOS OS FLAGS INICIALIZA CONTADOR COM VALOR DA EEPROM ATUALIZA O DISPLAY INICIALMENTE LE mE di dE E E NEL EE E MED UE MESE aE MED NE XE E i ROTINA PRINCIPAL o odes SE ee INICIALIZA FILTRO1 T FILTRO INICIALIZA FILTRO2 T_FILTRO O BOT O 1 EST PRESSIONADO ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM BOT O J ESTAVA PRESSIONADO N O EXECUTA A O DO BOT O SIM CHECA BOT O 2 MARCA BOT O 1 COMO LIBERADO O BOT O 2 EST PRESSIONADO N O ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER GOTO BTFSS GOTO GOTO BT2 LIB BCF GOTO DEC BSF MOVF XORLW BTFSC GOTO DECF CALL GOTO INC BSF MOVF XORLW BTFSC GOTO INCF CALL ATUALIZA CALL MOVWF CHECA_BT2 ST BT2 INC MAIN ST BT2 ST BT1 CONTADOR W STATUS Z MAIN CONTADOR F ESCR_CONTA ATUALIZA ST_BT2 CONTADOR W MAX STATUS Z MAIN CONTADOR F ESCR_CONTA CONVERTE PORTD MAIN gt kA deo O es DE 3k FIM N O CONTINUA E SIM BOT O J SPERAND
203. ATRICIAL TE de X oko Ao ko X wk ko Wo o Xo X INICIALIZAC O DAS VARI VEIS k k xk E Ck AA ck X ok X SN ACENDE O VALOR CERTO NO DISPLAY INICIA CONTADOR COM VALOR MIN EA e o wk X ok o X A Ak ok W ROTINA PRINCIPAL X ER wx X lt lt xo X Wk ke PN W X 0 OX A Ck Ck oo ko INICIA COMTADOR DE MULTIPLICA O POIS OS TEMPOS GERADOS POR DELAY S O MUITO PEQUENOS GERANDO FREQ MUITO ALTAS PARA A VISUALIZA O COLOCA CONTADOR EM W PARA CHAMAR A ROTINA DE DELAY CHAMA ROTINA DE DELAY BOT O 1 PRESSIONADO SIM DEVE INCREMENTAR N O BOT O 2 PRESSIONADO SIM DEVE DECREMENTAR N O DECREMENTA CONTADOR DE MULT ACABOU N O CONTINUA AGUARDANDO SIM AP S TRANSCORRIDO O TEMPO IR INVERTER OS LEDS CORRETOS ATRAV S DA M SCARA DISPLAY E DA OPERA O XOR INVERTE LEDS PISCA COMECA NOVAMENTE DECREMENTA O CONTADOR EM STEP MOVE O VALOR M NIMO PARA W SUBTRAI O VALOR DE W MIN DE CONTADOR TESTA CARRY RESULTADO NEGATIVO N O ENT O CONTA gt MIN SIM ENT O CONTA MIN ACERTA CONTADOR NO M NIMO POIS PASSOU DO VALOR BOT O 2 CONTINUA PRESSIONADO SIM AGUARDA LIBERA O N O 36 GOTO INCREMENTA MOVLW ADDWF MOVLW SUBWF BTFSS GOTO MOVLW MOVWF BTFSS GOTO GOTO MAIN VOLTA AO LOOP PRINCIPAL STEP CONTADO
204. ATUS Z UNIDADE F UNIDADE W 0X0A STATUS Z 5 3 UNIDADE DEZENA F DEZENA W 0X0A STATUS Z 5 3 DEZENA CENTENA F AUX F 14 k kk AJUSTE DECIMAL CENTENA DEC DEZENA DEC UNIDADE DEC ko X ko x CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS LIMPA WDT PERDE TEMPO FIM DE TEMPOO N O VOLTA 2 INSTRU ES SIM PASSOU SE 1MS FIM DE TEMPO1 N O VOLTA 6 INSTRU ES SIM RETORNA oko 0o 00k ES e dd FE DE UM CARACTER NO DISPLAY x W ANTES DE CHAMAR A ROTINA ATUALIZA DISPLAY PORTD PERDE 1US PARA ESTABILIZA O ENVIA UM PULSO DE ENABLE AO DISPLAY DELAY DE 1MS RETORNA wok e NE Hb XI JE DE ME x E E s dese oe Mes UE UM ARGUMENTO PASSADO PELO WORK E RETORNA NAS VARI VEIS CENTENA DEZENA E UNIDADE O N MERO BCD CORRESPOND NTE AO PAR METRO PASSADO SALVA VALOR A CONVERTER EM AUX RESETA REGISTRADORES VALOR A CONVERTER 0 SIM RETORNA N O INCREMENTA UNIDADE UNIDADE 10d N O SIM RESETA UNIDADE INCREMENTA DEZENA DEZENA 10d N O SIM RESETA DEZENA INCREMENTA CENTENA FIM DA CONVERS O N O VOLTA P CONTINUAR CONVERS O SIM 290 AA OK ue RA E 0X
205. AY MASCARA O MINUTO ATUAL UNIDADE CONVERTE EM ASCII ESCREVE A UNIDADE DO MINUTO NO DISPLAY ENVIA AO LCD dd ERA o ck c o X ko koc o ok ck AA A ko WA A AER PROGRAMA PRINCIPAL RE CX OX REE AXE E SKU E 274 ANDLW ADDLW CALL MOVF ANDLW ADDLW CALL GOTO m END B 00001111 MASCARA O SEGUNDO DEZENA 0x30 CONVERTE EM ASCII ESCREVE ESCREVE A DEZENA DO SEGUNDO NO DISPLAY SEGUNDO W B 00001111 MASCARA O SEGUNDO UNIDADE 0x30 CONVERTE EM ASCII ESCREVE ESCREVE A UNIDADE DO SEGUNDO NO DISPLAY LOOP VOLTA AO LOOP c ROA 8 8 ck AR EXA ck RA E o oto X FIM DO PROGRAMA FIM DO PROGRAMA ck oko x ok Rd ook ck OK o ROM CAO RRA AE Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 275 Dicas e Coment rios Al m do rel gio RTC o componente PCF8583 da Philips apresenta tamb m uma regi o da mem ria que pode ser utilizada com uma RAM convencional por m com acesso via IC Como geralmente o rel gio sempre utilizado junto com uma bateria como no MCMASTER este recurso da RAM pode ser til para armazenar informacdes enquanto o microcontrolador n o es
206. BANKO VOLTA P BANCO 0 DA RAM Xs Gk CAO ni A Ok ERE e RR LOOP P ESPERAR CARGA DO CAPACITOR ck KE oo SRI ko ko e Ok oo e ok OX Ok X OM 0X RARA X O TEMPO CONTA O TEMPO QUE O CAPACITOR LEVA PARA ATINGIR UM N VEL DE TENS O SUFICIENTE PARA QUE O MICROCONTROLADOR ENTENDA N VEL L GICO 1 NA ENTRADA TTL DO PINO 1 CASO O CAPACITOR NUNCA SE DEMORE MAIS DO QUE 256 CICLOS DESTE LOOP A ROTINA DESVIA PARA UMA ROTINA DE SATURA O O LOOP DA ROTINA DE 50us CRISTAL DE 4MHz LOOP CAD NOP lus MOVLW 14 2us MOVWF AUX 3us CARREGA AUX COM 14d DECFSZ AUX F GOTO 1 4us 44us DELAY INCFSZ CONTADOR AD F INCREM CONTADOR E VERIFICA ESTOURO GOTO 42 N O HOUVE ESTOURO PULA 1 INSTRU O GOTO SATURACAO HOUVE ESTOURO PULA P SATURA O BTFSS CAD CAPACITOR J CARREGOU GOTO LOOP CAD VOLTA P LOOP CAD GOTO MOSTRA CONTADOR SIM MOSTRA TEMPO DE CARGA ck EX XA 0k o AE oko ko ko ck ok ok ck ok ko ck ok Ck ko k ok ko x MOSTRA O DE CARGA DO NO LCD E Ok oko Ck ok ck do Ck ko OW A ko E oko ko ESTA ROTINA MOSTRA O TEMPO DE CARGA DO CAPACITOR EM HAXADECIMAL NO LCD CASO O CAPACITOR N O TENHA SE CARREGADO
207. BCF ENABLE MOVLW eL CALL DELAY_MS RETURN AGUAR 2 E E ONU A e ko HF BAN W ANTES DE CHAMAR A ROTINA ATUALIZA DISPLAY PORTD PERDE 1US PARA ESTABILIZACAO ENVIA UM PULSO DE ENABLE AO DISPLAY DELAY DE 1MS RETORNA de ko E E A0 OK CW o o AA oko 0X 0X RA ROTINA DE CHECAGEM DE EVENTOS I2C LIBERADOS RT EIA EE AE E RA ALA E X ESTA ROTINA AGUARDA AT QUE TODOS OS EVENTOS DA 120 ESTEJAM LIBERADOS DA_12C_LIVRE K1 BTFSC SSPSTAT R W GOTO 1 MOVF SSPCON2 W LW B 00011111 BTFSS STATUS Z GOTO 3 BAN RET de Ck ook Xv A oec XA 8 URN NACK OUT BANK1 BSF BSF SSPCON2 ACKDT SSPCON2 ACKEN BANKO RETURN de ck Ck ko o eo o E HH ESTA ROTINA TES FACILITAR O REST ALTERA P BANK1 EST OCORRENDO ALGUM EVENTO I2C SIM ESPERA TERMINAR MASCARA SSPCON2 ATUALIZA FLAG ZERO BITS DE EVENTOS LIBERADOS N O AGUARDA SIM VOLTA P BANKO RETORNA D SE NE E NO UNE ES SIE NEM 2 NACK OUT e Weeks owe deo ck X owe kx Ck 00 oe e deo c 0 d Ok ESTA ROTINA ENVIA UM NACK OUT PARA O BARRAMENTO I2C ALTERA P BANK1 CARREGA NACK TRANSMITE VOLTA P BANKO RETORNA lt ks ck ck ok
208. BOTOES F BTFSC STATUS Z FILTRO J IGUAL A ZERO H FUN O JA FOI EXECUTADA GOTO VARRE SIM VOLTA P VARREDURA DO TECLADO N O DECFSZ FILTRO BOTOES F FIM DO FILTRO RUIDO GOTO VARRE 7 N O VOLTA P VARRE SIM BOT O PRESSIONADO OS COMANDOS A SEGUIR S O PARA ESCREVER A FRASE RELACIONADA AO BOT O 2 CLRF TEC_MATRICIAL DESATIVA TODAS AS LINHAS DO TECLADO BCF RS SELECIONA O DISPLAY P COMANDOS MOVLW 0x01 CALL ESCREVE COMANDO P LIMPAR A TELA MOVLW 41 CALL DELAY_MS DELAY DE 1MS MOVLW OXCO COMANDO PARA POSICIONAR O CURSOR CALL ESCREVE LINHA 1 COLUNA O BSF RS SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE TECLA 2 OVLW CALL ESCREVE OVLW CALL ESCREVE OVLW od CALL ESCREVE OVLW Ss CALL ESCREVE OVLW CALL ESCREVE OVLW n CALL ESCREVE OVLW 2 CALL ESCREVE CLRF DISPLAY LIMPA BARRAMENTO DE DADOS BSF TELA_PRINCIPAL SETA FLAG P MOSTRAR TELA PRINCIPAL GOTO VARRE VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 3 TRATA_BOTAO_3 MOVE FILTRO BOTOES F BTFSC STATUS Z FILTRO J IGUAL A ZERO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 133 FUN O JA FOI EXECU
209. CALL CALL VARRE CLRWDT BSF GOTO BIFSC GOTO BIFSC GOTO BTFSC GOTO BTFSC GOTO BCF MOVLW MOVWF MOVLW MOVWF GOTO DECFSZ GOTO DECFSZ de coke o de E e E N NESTE TRECHO DO PROGRAMA EST O TODOS OS TRA TRAJ EC KE de de A AAA e oe oU ROTINA DE ESCRITA DA TELA PRINCIPAL MASTER I2C xxh ATUALIZA TELA LINHA 1 ATUALIZA TELA LINHA 2 ARA ce c RA cS A Ao o X ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES ATUALIZA TELA ATUALIZA TELA oko W A Gk Ao o ko EA 0 oo de oc OEA 8 VARREDURA DOS BOT ES VERIFICA ALGUM VARRE_BOTOES LINHA_4 5 1 BOTAO_0 TRATA_BOTAO_0 BOTAO_1 TRATA_BOTAO_1 BOTAO_2 RATA_BOTAO_2 3 i BOTAO 3 RATA BOTAO 3 3 i LINHA 4 FILTRO TECLA FILTRO BOTOES 1 TEMPO_TURBO VARRE Oo e de A TRAI E EXE Ao A E o o ck o ko AO oko Uk ARA s A X ESTA ROTI
210. CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK W ANTES DE CHAMAR A ROTINA ESCREVE 156 NOP BSF BCF CAL BAN BAN MOV OV OVWF OVI OVWF OV OVWF OV OVWF OV OVWF OV OVWF OV OVWF OV OVWF OV OVWF MOVWF GOTO LW Ll RETURN CONFIG CLRF CLRF CLRF CLRF CLRF K1 LW LW KO BTFSC GOTO DISPLAY ENABLE 5 1 1 DELAY_MS X ERA E X A ATUALIZA DISPLAY PORTD PERDE 1US PARA ESTABILIZACAO ENVIA UM PULSO DE ENABLE AO DISPLAY DELAY DE 1MS RETORNA 8 8 Ok CO CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE PORTA PORTB PORTC PORTD PORTE 00101111 TRISA 00001111 TRISB 10011000 TRISC 00000000 TRISD 00000000 TRISE B 11011111 OPTION_REG B 00000111 CMCON B 00000000 INTCON B 00000111 ADCON1 E COMECA NOVAMENTE STATUS NOT TO oo E Se X ko X Bo ck o XO Ck ck ck ke ck Ck o A Ko de A oA AE NESTA ROTINA S O INICIALIZADAS AS PORTAS DE I O DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA AS VARI VEIS DE RAM E AGUARDA O ESTOUR
211. CARREGA TEMP1 COM 125d FIM DO TEMPO RECUPERA CONTEXTO SAI DA INTERRUP O 54 e O PWRTE_ON Xo ko de d dk x VERS O 1 0 DATA 14 04 2003 A E de ck o EE EE E A E E EXA A oko de dk EXPERI NCIA 5 TIMER DE SEGUNDOS E o Xe oco Ao o E oko ck o X cde oko ck AR ko ko ko ko e Ak Xo E 8 DL ND E EE ME ONE GL OMS JE ME ONE M EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER A A X oko 0X ok A A AR E RA o AA DESCRI O GERAL 4 ko X 0k TIMER DECRESCENTE EM SEGUNDOS AR ko ko A gt E RS O VALOR INICIAL DETERMINADO PELA CONSTANTE kk k xk V INICIO E PODE ESTAR ENTRE 1 E 15 SEGUNDOS OS BOT ES ATIVOS S O O DA LINHA 4 O BOT O DA COLUNA 1 DISPARA O TIMER MOSTRANDO O TEMPO RESTANTE NO DISPLAY O DA COLUANA 2 PARALIZA O TIMER O LED RCO ACESO RODANDO E APAGADO PARADO d c oo TE TE oko E 00000 88 X X ck OX ko X UTILIZADO PARA INDICAR O ESTADO ATUAL DO TIMER kx k kk k CONFIGURA ES PARA GRAVA O cde 8 sk ck A ok X SR C O
212. COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA KO Ok XxX XxX TELA PRINCIPAL DO PROGRAMA COM AS FRASES COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 0 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE AQUEC RPS TEMP 294 Q D Q Q Q Q Q Q Q Q Q Q POPOPOPOPOPOPOPOPOPOPOPRO Q BSF BCF BSF Q lt O gt O gt Q Q Q Q lt 6 gt 6 gt O gt O gt Q SESESESESESESESESESESE lt LW LW LW LW LW LW LW LW LW LW LW LW E OV LW CALI MOV CAL MOV CAL MOV CAL MOV CAL MOV LW LW LW LW CAL SE SESESE lt LW LW LW LW LW LW LW ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE ESCREVE RS 0XC1 ESCREVE RS OM ESCREVE 0 ESCREVE 0 ESCREVE 6 ESCREVE RS 0XC7 ESCREVE RS Yt ESCREVE o ESCREVE Y yt ESCREVE RS OXCB ESCREVE RS Vot ESCREVE Vot ESCREVE Vo ESCREVE OXDF ESCREVE Y cet ESCREVE SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 1 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE 000 SELEC
213. DA I2C LIVRE CALL TESTA ACK BTFSC F_ERRO GOTO I2C ERRO BANK1 BSF SSPCON2 RCEN BANKO CALL AGUARDA I2C LIVRE MOVF SSPBUF W MOVWF BUFFER CALL NACK OUT CALL AGUARDA I2C LIVRE BANK1 BSF SSPCON2 PEN BANKO CALL AGUARDA I2C LIVRE RETURN r r COM A MEM RIA SERIAL PRINCIPAL I2C ERRO BANK1 BSF SSPCON2 PEN BANKO RETURN de O ENDERECO DO RELOGIO A SER LIDO DEVE SER PREVIAMENTE ACERTADO NO REGISTRADOR ENDERECO O VALOR LIDO RETORNADO EM BUFFER CASO ALGUM ERRO DE LEITURA OCORRA A ROTINA DESVIA P I2C ERRO ALTERA P BANK1 INICIA START BIT VOLTA P BANKO AGUARDA FIM DO EVENTO CARREGA BYTE DE CONTROLE TRANSMITE CONTROLE AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O TRANSMITE ENDERECO AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O ALTERA P BANK1 REINICIA START BIT VOLTA P BANKO AGUARDA FIM DO EVENTO CARREGA BYTE DE CONTROLE TRANSMITE CONTROLE AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O ALTERA P BANK1 INICIA LEITURA DO BYTE VOLTA P BANKO AGUARDA FIM DO EVENTO SALVA DADO EM BUFFER ENVIA NACK FIM AGUARDA FIM DO EVENTO ALTERA P BANK1 INICIA STOP BIT VOLTA P BANKO AGUARDA FIM DO EVENTO RETORNA AAA
214. DA INTERRUPCAO DE TMRO E A X ck X A AER RA Ao ko KK Mo ho WX ANA RE ESTA ROTINA SER EXECUTADA A CADA lms ims 4us PRESCALER X 250us TMRO A INTERRUP O RESPONS VEL PELO PWM QUE MODULA A INTENSIDADE DA L MPADA BCF INTCON TOIF MOVLW 256 250 MOVWF 0 INCF TEMPO F MOVLW 16 i XORWF TEMPO W BTFSC STATUS 2 CLRF TEMPO MOVLW 15 i XORWF INTENSIDADE W BTFSC STATUS 2 GOTO LIGA LAMPADA MOVE INTENSIDADE W SUBWF TEMPO W BTFSS STATUS C GOTO LIGA LAMPADA BCF LAMPADA GOTO SAI INT LIGA LAMPADA BSF LAMPADA GOTO SAI INT ck o X AR X e oe ck oko FIM DA E RX Rd X ELA oko ode Ck ko X SAI INT SWAPF MOVWF SWAPF SWAPF RETFIE STATUS TEMP W STATUS W TEMP F W TEMP W ck oko M A 0k 0k 0k X MOSTRADO NO DISPLAY PARA CADA VALOR DE INTENSIDADE LIMPA FLAG DA INT SETA TIMER P lms REINICIA TMRO INCREMENTA TEMPO COLOCA 16 EM WORK COMPARA TEMPO COM 16 TESTA BIT Z DO REG STATUS ZERA TEMPO COLOCA 15 EM W COMPARA INTENSIDADE COM 15 TESTA BIT Z DO REG STATUS MOVE INTENSIDADE PARA W SUBTRAI TEMPO DE INTENSIDADE TESTA BIC C DO REG STATUS VERIFICA SE TEMPO E MENOR QUE INTENSIDADE DESLIGA L MPADA LIGA L MPADA SAI DA INTERRUPCAO k k Ok ok k
215. DA MULTIPLICA O EM ACCb PARA SER UTILIZADO NA ROTINA DE DIVIS O CARREGA ACCa COM 255d FUNDO DE ESCALA DO CONVERSOR A D EST O SENDO UTILIZADOS 8 BITS CHAMA ROTINA DE DIVIS O FAZ O AJUSTE MOSTRAR NO DISPLAY DECIMAL PARA LCD SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 3 SELECIONA O DISPLAY P DADOS CONVERTE BCD DA ENVIA AO LCD DEZENA EM ASCII ESCREVE UMA VIRGULA NO LCD CONVERTE ENVIA AO BCD DA LCD UNIDADE EM ASCII VOLTA PARA LOOP 4o ke des OX X ck FIM DO PROGRAMA x Ue DE E deo 008 ok Oo ko HM FIM DO PROGRAMA 148 Dicas e Coment rios Inicialmente notar que toda a estrutura e rotinas utilizadas para a escrita no LCD s o as mesmas j aplicadas na experi ncia anterior Observar tamb m que n o foi utilizada nenhuma interrup o neste programa Por isso o programa permanece parado em um pequeno loop enquanto a convers o n o termina Isto checado atrav s do bit ADCONO lt GO DONE gt Outra rotina bem interessante que aparece neste sistema a de convers o de um n mero qualquer limitado entre O e 99 em dois d gitos separados facilitando assim a escrita no LCD Esta rotina devolve os d gitos nas vari veis UNIDADE e DEZENA N o esquecer que antes de transmitir um valor decimal ao LCD de
216. DADE Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 77 INT TMRO SALVA CONTEXTO ume LIMPA FLAG DA INTERRUPCAO Y RECARREGA TMRO COM 6d per odo de 1ms 7 INCREMENTA TEMP0 INTENSIDADE gt TEMPO N o Y Y LIGA LAMPADA DESLIGA L MPADA A RECUPERA CONTEXTO SAI DA INTERRUP O 78 e O Xo ko ko de de dd ck ck oko x VERS O 1 0 DATA 14 04 2003 A dee de oe E cde E EE EE E A E E Ok ck k k XxX k k k k X EXPERI NCIA 7 DIMMER XK ok k xk xk xk ko xk o ok k xk ko A DESCRI O GERAL MX o A X de de SOFTWARE QUE UTILIZA DOIS BOT ES PARA INCREMENTAR E INTENSIDADE DA L MPADA A INTERRUPC O DE TMRO UTILIZADA PARA CONTROLAR O PWM QUE ACIONA A L MPADA A INTENSIDADE TAMB M MOSTRADA NO DISPLAY DA UNIDADE OS BOT ES ATIVOS S O O DA LINHA 4 ee SAO de E de E e dese 7 oko EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER 8 k k X A A A ok ks kk k k xk dd E x Td ks k k k k Xx x DECREMENTAR A
217. DO A SER SALVO EM EEDATA y CARREGA ENDEREGO ONDE O DADO SERA SALVO EM EEADR SELECIONA MEM RIA DE DADOS EECON1 EEPGD 0 HABILITA ESCRITA EECON1 WREN 1 y EECON2 0x55 EECON2 0xAA INICIA ESCRITA EECON1 WR 1 DESABILITA ESCRITA EECON1 WREN 0 C RETURN o lt Q L EEPROM gt CARREGA ENDERE O DE ONDE O DADO SERA LIDO EM EEADR SELECIONA MEM RIA DE DADOS EECON1 EEPGD 0 5 ESCRITA EECON1 y HABILITA LEITURA EECON1 RD 1 SALVA O DADO LIDO DA MEMORIA NA VARIAVEL DADO LOW C RETURN D 66 e O E E SR OA AG NP E 0 0 C UNIDADE E ARMAZENADO NA EEPROM PARA N O SE A Xo X eso 0 e c0 A X 0 c CONFIG CP OFF PWRTE ON amp WDT OFF amp XT OSC e dese o E ES 5 OK ke E E oe 0k ek EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER EXPERI NCIA 6 X E ox ke ck de dde VERS O 1 0 DATA 14 04 2003 E o dee de X ck Ao de Ck ok X ONTADOR QUE UTILIZA DOIS ONTROLADO PELA VARI VEL CONTADOR ONSTANTES MIN E MAX ACESSO MEM RIA DE DADOS E 8 Ska o ok des CX ck X co o A 0k
218. DO PORTC CONFIGURA I O DO PORTD CONFIGURA I O DO PORTE CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 145 TIMERO INCREM PELO CICLO DE M QUINA WDT 8 TIMER 1 1 MOVLW B 00000000 MOVWF INTCON CONFIGURA INTERRUP ES DESABILITA TODAS AS INTERRUP ES MOVLW B 00000111 MOVWF CMCON DESLIGA OS COMPARADORES MOVLW 00000100 MOVWF ADCON1 CONFIGURA CONVERSOR A D 1 E COMO ANAL GICO RA2 RA4 E RA5 COMO I O DIGITAL PORTE COMO I O DIGITAL JUSTIFICADO ESQUERDA 8 BITS EM ADRESH E 2 BITS EM ADRESL Vref VDD 5V Vref GND OV BANKO SELECIONA BANCO 0 DA RAM MOVLW B 01000001 MOVWF ADCONO CONFIGURA CONVERSOR A D VELOCIDADE Fosc 8 CANAL 0 M DULO LIGADO AS INSTRUCOES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT E COMECA NOVAMENTE ISTO EVITA PROBLEMAS NO START UP DO PIC BTFSC STATUS NOT TO RESET POR ESTOURO DE WATCHDOG TIMER GOTO N O AGUARDA ESTOURO DO WDT SIM Sk aR X odes 000 o X X E pa INICIALIZA O DA RAM RE ok
219. DOR DO TURBO DAS TECLAS DECREMENTA O VALOR DO TIMER VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO START 7 STOP TRATA BT START STOP MOVF FILTRO BOTOES F BTFSC STATUS Z GOTO VARRE DECFSZ FILTRO BOTOES F GOTO VARRE FILTRO J IGUAL A ZERO FUN O J FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO 116 BTFSS ESTADO TIMER TIMER ESTA LIGADO GOTO LIGA TIMER N O ENT O LIGA SIM ENT O DESLIGA DESLIGA TIMER BCF ESTADO TIMER DESLIGA LED E FLAG DO ESTADO DO TIMER BCF T1CON TMR ON PARA CONTADOR 1 GOTO VARRE VOLTA P VARREDURA DOS BOT ES LIGA TIMER MOVF UNIDADE F BTFSS STATUS Z UNIDADE EST ZERADA GOTO LIGA TIMER 2 N O PULA P LIGA TIMER 2 SIM TESTA DEZENA MOVF DEZENA F 55 STATUS Z DEZENA EST ZERADA GOTO LIGA TIMER 2 N O PULA P LIGA TIMER 2 SIM TESTA CENTENA MOVF CENTENA F 55 STATUS Z CENTENA EST ZERADA GOTO LIGA TIMER 2 N O PULA P LIGA TIMER 2 SIM TESTA MILHAR MOVF MILHAR F BTFSS STATUS Z MILHAR EST ZERADO GOTO LIGA TIMER 2 N O PULA P LIGA TIMER 2 GOTO VARRE SIM VOLTA P VARRER TECLADO SEM LIGAR O T
220. Desenvolvimento de Sistemas com Microcontroladores PIC LabTools Mosaico Didactic Division Indice CAP TULO 1 INTRODUCAO L 7 0 1 CAP TULO 2 MCMASTER DESENVOLVIMENTO DE SISTEMAS COM MICROCONTROLADORES 3 INTRODUCAO e ie a atta uiu usa sS uma m dn usa ph e 3 VIS O MACRO DO 3 MODULOS PADRAO Nro teer ect ii basto iii uu 4 AO is 4 LED AMAN UM TICO DTE 4 Displays de leds com 7 segmentos er esses etant 5 Eo Ic ncn 6 Teclado matrleladle coa st und crei ea a eius LER 6 BUZZ TEE 7 2 e e inue debetis erbe a 7 Rel gio de tempo real RIC i s o t o iE dee a ML d a de ER dt cds 7 Comunica o serial RS 282 ua e tene nO n t ER o aaa sumo RE 8 Convers o analogica digital A D eene nnn 8 PERIF RICOS ADICIONA Le intr cete E 20 EE SE data DO atas ev b CC TERRE THE DR cs 10 Placa de experi ncias EXPON L 10 GRAVADOR Em 12 CAP TULO 3 EXPERI NCIA 1 LEITURA DE UMA TECLA E ACIONAMENTO DE UM LED 13 OBJETIVO S hoic IC a T eU o Dee fud odia eu b beo eit hte 13 DESCRICAO c E 13 ESQUEMA ELETRICO Seu ee a 14 FLUXOGRAMA a ecd EE is ed da er Di oc ou 15 00 A ee 15 A A A 16 DICAS E COMENT
221. E APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSI O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS COMPARA O PONTEIRO COM A LT POS J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM 1 INICIALIZA MOSTRANDO TELA PRINCIPAL Ok XK ck ok k XxX XxX CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY 130 MOVLW CALL MOVLW CALL MOVLW CALL BSF 3 gt 1 DELAY_MS B 00001100 ESCREVE B 00000110 ESCREVE DISPLAY RS AA ko AAA ko ge E de oh ko e d A kx ck A 3 XA oko E A deo de A A DELAY DE 1MS ESCREVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA LIMPA BARRAMENTO DE DADOS SELECIONA O DISPLAY P DADOS VARREDURA DOS BOT ES LOOP PRINCIPAL x A ROTINA PRINCIPAL FICA CHECANDO O ESTADO DOS BOT ES CASO ALGUM SEJA PRESSIONADO A ROTINA DE TRA
222. E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM EEC AA de oko o ck AA ko oko ee 8 ko ko X e A ok Y R CONSTANTES INTERNAS c E JR A ok oko ok ok o ko ck oko Ck de Ck ck Ck ko E oko ko ck A ko X Y A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O FILTRO TECLA EQU 200 FILTRO P EVITAR RUIDOS DOS BOT ES TURBO TECLA EQU 70 TEMPERIZADOR P TURBO DO TECLADO heo Xo Ck ok OX oko SR O4 0 X A ko DECLARA O DOS FLAGs DE SOFTWARE dk ce ER E 4 o RA ERRE ck ck OK A ARE ER A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM SDEFINE MOSTRA RPS FLAG 0 FLAG PARA MOSTRAR A ROTA O NO LCD 1 DEVE MOSTRAR A ROTA O O NAO DEVE MOSTRAR A ROTA O HDEF INE MOSTRA TEMP FLAG 1 FLAG PARA MOSTRAR A TEMPERATURA NO LCD 1 gt DEVE MOSTRAR A TEMPERATURA O lt NAO DEVE MOSTRAR A TEMPERATURA X oko Uk ok de e oko UK 0 DE E ENTRADAS ES Ode AA E eo co XA x e oko Kk A AA o e
223. E 1 0 DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A M QUINA E AGUARDA O ESTOURO DO WDT LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO 1 DA RAM CONFIGURA I O DO PORTA CONFIGURA I O DO PORTB CONFIGURA I O DO PORTC CONFIGURA I O DO PORTD CONFIGURA I O DO PORTE CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 8 TIMER 1 CONFIGURA INTERRUP ES Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 183 OVLW B 00000111 OVWE CMCON OVLW B 00000111 OVWF ADCON1 OVLW 255 OVWFE PR2 BANKO MOVLW B 00000111 MOVWF T2CON MOVLW B 00001111 MOVWF CCP2CON CCPR2L AS INSTRU ES A SEGUIR FAZEM COM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESABILITADA TODAS AS INTERRUP ES DESLIGA OS COMPARADORES CONFIGURA CONVERSOR A D CONFIGURA PORTA E PORTE COMO 1 0 DIGITAL CONFIGURA PER ODO DO PWM T PR2 1 4 Tosc TMR2 Prescale T 255 1 4 250ns 16 T 4 096ms gt 244 12 SELECIONA BANCO 0 DA RAM CONFIGURA TMR2 TIMER 2 LIGADO PRESCALE 1 16 POSTSCALE 1 1 CONFIGURA CCP2CON PARA PWM PINO RC1 INICIA COM DUTY CYCLE EM ZERO QUE O PROGRAMA TRAVE QUANDO HOUVER UM DESTA FORMA SEMPRE QUE O PIC LIG
224. E DADOS E DE PROGRAMAS d A So X oe A ce U O oce E ko ode X CONFIGURA ES PARA GRAVA O lt EE A ARA TE oe o CK e CONFIG CP OFF CPD OFF amp DEBUG OFF amp _LVP_OFF amp _WRT_OFF kx k kk k XK BODEN OFF PWRTE ON amp ON amp XT OSC F X d ook 4e che b Uk Ck 8 de e ecc DEFINIC O DAS VARI VEIS lt X X AX A E Kv o E o X o p Ces ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0X20 LTRO_BOTOES PO TURBO 1 FLAG VA VA VA AUX EN EN DA DA DA DA DA DA LOR DADOS LOR PROG HIGH LOR PROG LOW DERECO HIGH DERECO LOW DO LOW 00 DO HIGH 00 DO LOW 01 DO HIGH 01 DO LOW 10 DO HIGH 10 POSI O INICIAL DA RAM FILTRO PARA RUIDOS TEMPORIZADOR P TURBO DAS TECLAS CONTADORES P DELAY FLAG DE USO GERAL VALOR ARMAZENADO NA MEM RIA DE DADOS 8 BITS VALOR ARMAZENADO NA MEM RIA DE PROGRAMAS 14 BITS REGISTRADOR AUXILIAR DE USO GERAL REG
225. E INTCON CONFIGURA INTERRUPC ES DESABILITADA TODAS AS INTERRUPC ES OVLW B 00000111 OVWE ADCON1 CONFIGURA CONVERSOR A D CONFIGURA PORTA COM 1 0 DIGITAL BANKO SELECIONA BANCO 0 DA RAM AS INTRUCOES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT E COMECA NOVAMENTE ISTO EVITA PROBLEMAS NO START UP DO PIC BTFSC STATUS NOT TO RESET POR ESTOURO DE WATCHDOG TIMER GOTO N O AGUARDA ESTOURO DO WDT Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 169 SIM d ko Ac CK A A koX Ko AAA oko AA X F INICIALIZA O DA RAM do RC ko A ck ck SR A Wo Uk X cx X ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 MOVLW 0x20 INDO DE 0X20 A MOVWF FSR APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSI O DA RAM LIMPA RAM CLRF INDF LIMPA A POSI O INCF FSR F INCREMENTA O PONTEIRO P A PR X POS MOVF FSR W XORLW 0 80 COMPARA O PONTEIRO COM A LT POS 1 BTFSS STATUS Z J LIMPOU TODAS AS POSI ES GOTO LIMPA RAM N O LIMPA A PR XIMA POSI O SIM E ARA 8
226. ECEDOR ks ck k ko k k k xk XxX XxX Xx Se VETOR DE RESET DO MICROCONTROLADOR 286 E XA o ck E E o ok ko E kk Xx RR ko POSI O INICIAL PARA EXECU O DO PROGRAMA ORG GOTO 0000 ENDERECO DO VETOR DE RESET CONFIG PULA PARA CONFIG DEVIDO A REGI O DESTINADA AS ROTINAS SEGUINTES re NE NE MI NE NE SE NE SEL ME EE NE NE ROS VETOR DE INTERRUPCAO lt E RRA A A o o co RA A AA AA ko AR ok POSI O DE DESVIO DO PROGRAMA QUANDO UMA INTERRUP O ACONTECE e ck ko A ko ok x 0X ORG 0X0004 ENDERE O DO VETOR DE INTERRUP AO MUITO IMPORTANTE QUE OS REGISTRADORES PRIORIT RIOS AO FUNCIONAMENTO DA M QUINA E QUE PODEM SER ALTERADOS TANTO DENTRO QUANTO FORA DAS INTS SEJAM SALVOS EM REGISTRADORES TEMPOR RIOS PARA PODEREM SER POSTERIORMENTE RECUPERADOS SALVA CONTEXTO MOVWF WORK TEMP SALVA REGISTRADOR DE TRABALHO E SWAPF STATUS W DE STATUS DURANTE O TRATAMENTO MOVWF STATUS TEMP DA INTERRUPCAO MOVF FSR W MOVWF FSR TEMP SALVA REGISTRADOR FSR MOVF PCLATH W MOVWF PCLATH TEMP SALVA REGISTRADOR PCLATH CLRF PCLATH LIMPA REGISTRADOR PCLATH SELECIONA P GINA 0 CLRF STATUS LIMPA REGISTRADOR STATUS SELECIONA BANCO 0
227. ECON1 RD 1 SALVA O DADO LIDO DA MEMORIA NA VARIAVEL DADO LOW C RETURN D Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 197 e O VERS O DATA EE EE E A E E x EXEMPLO DE EXPERI NCIA 15 XK X ko de X x Xx ok A 1 0 14 04 2003 X E Ke dee de X cde RR Ek xk de ko E oko d ck OX A ck ck ok o X e deo ko Koo X C DIGO PARA UTILIZA O COM O MCMASTER ACESSO S MEM RIAS DE DADOS E PROGRAMA CRE ck x e ko ko o OX ode A ko 65 c x NA en DE oko kc CO X 6 e ck XX e Ao RE DESCRI O GERAL TANTO NA MEM RIA DE DADOS QUANTO NA MEM RIA DE PROGRAMA APENAS OS BOT ES DA LINHA 4 EST O HABILITADOS O BOT O DA COLUNA 1 PODE SER UTILIZADO PARA ALTERAR ENTRE OS VALORES DAS MEM RIAS DE DADOS E PROGRAMAS OS BOT ES DAS COLUNAS 2 E 3 S O UTILIZADOS An ES E ko ES E E de RE DE Ro oec Xo Ro oc ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DA LEITURA ESCRI xo X Xo Xo X Hox PARA INCREMENTAR E DECREMENTAR OS VALORES O BOT O DA COLUNA 4 UTILIZADO PARA SALVAR OS VALORES NAS M MORIAS D
228. ENTENA F STATUS Z SAI_INT_TMR MILHAR F STATUS Z SAI INT TMR ESTADO_TIMER T1CON TMRION PIR1 TMR1IF d Ak Wok 0 X ER SA DA SIM RECARREGA CONTADOR DE 1SEG DECREMENTA O VALOR DO TIMER FINAL DA CONTAGEM TIMER 0 N O SAI DA INTERRUP O SIM DESLIGA LED DE TIMER OPERANDO PARALIZA CONTADOR DO TMR1 LIMPA FLAG DA INTERRUP O DE TMR1 D E Qe NO dE NE CE Jb EE D EM 3 DA INTERRUPCAO de o e c X c o KS e 0 CK ck e 0e deo ES pk oc ANTES DE SAIR DA INTERRUPC O O CONTEXTO SALVO NO IN CIO DEVE SER RECUPERADO PARA QUE O PROGRAMA N O SOFRA ALTERA ES INDESEJADAS SAI INT OVF OVWF OVF OVWF SWAPF OVWF SWAPF SWAPF RETFIE PCLATH TEMP W PCLATH FSR TEMP W FSR STATUS TEMP W STATUS WORK TEMP F WORK TEMP W ck EX A ck oko RECUPERA REG PCLATH PAGINA O RECUPERA REG FSR END INDIRETO RECUPERA REG STATUS RECUPERA REG WORK RETORNA DA INTERRUPCAO HABILITA GIE KO ks ck ck xk xk k ck xk XxX XxX TABELA PARA OS DISPLAYS DE 7 SEGMENTOS co EE AA o RT ko ck o cde Ck oko ko Ok gt CK oko ck ko ko We Ao X x X ROTINA PARA CONVERS O DO VALOR N M RICO DO D GITO EM RELA O AOS SEGMENTOS Q
229. ER AS LETRAS DE OFF LIMPA BARRAMENTO DE DADOS VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 1 FILTRO JA IGUAL A ZERO FUNCAO JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO CARREGA CCPR2L COM 0X80 LIMPA OS BITS 5 6 4 LSB DO DUTY CYCLE CCPR2L CCP2CON lt 5 4 gt Tosc TMR2 Prescale 512 2 0 250ns 16 48ms DUTY CYCLE 50 DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 8 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE 50 LIMPA BARRAMENTO DE DADOS VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 2 FILTRO JA IGUAL A ZERO FUN O JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 187 DECFSZ GOTO MOVLW MOVWF BCF BCF CLRF BCF MOVLW CALL BSF
230. ERA ok X o A ko ko ok AE ROTINA PARA INCREMENTAR O VALOR DO TIMER BCD ud MH Xo C ck AA Ko CEE Ok E AQ k Gk ROTINA UTILIZADA PARA INCREMENTAR O VALOR DOS REGISTRADORES UNIDADE DEZENA CENTENA E MILHAR QUE S O OS CONTADORES DO TIMER A CONTAGEM FEITA DIRETAMENTE EM BCD INCREMENTA TIMER INCF UNIDADE F INCREMENTA UNIDADE MOVLW 10 XORWF UNIDADE W BTFSS STATUS Z UNIDADE 10 RETURN N O RETORNA SIM CLRF UNIDADE ZERA A UNIDADE INCF DEZENA F INCREMENTA A DEZENA MOVLW 10 XORWF DEZENA W BTFSS STATUS Z DEZENA 10 RETURN N O RETORNA SIM CLRF DEZENA ZERA A DEZENA INCF CENTENA F INCREMENTA A CENTENA MOVLW 10 XORWF CENTENA W BTFSS STATUS Z CENTENA 10 RETURN N O RETORNA SIM CLRF CENTENA ZERA A CENTENA INCF MILHAR F INCREMENTA O MILHAR MOVLW LO XORWF MILHAR W BTFSC STATUS Z MILHAR 10 CLRF MILHAR SIM ZERA MILHAR RETURN N O RETORNA KO ko ck k Xk ko ck Xk 2 XxX k XxX XxX k ROTINA PARA DECREMENTAR O VALOR DO TIMER BCD ck lt lt Xx o kk o kk ok E oko ko ko ooo ck ko ko Wk ck ck Ck ko ok ko X ko k ok No ok ROTINA UTILIZADA PARA DECREMENTAR O VALOR DOS REGISTRADORES UNIDADE DEZENA CENTENA E MILHAR QUE S O OS CONTADORES DO TIMER A CONTAGEM FEIT
231. ERRUP O de Uk 8 08 O E 0 Oe es Skor ke E UTILIZADAS POR IS80 PODEMOS SUBSTITUIR TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ESTE SISTEMA N O OBRIGAT RIO MAS PODE EVITAR PROBLEMAS FUTUROS ENDERE O INICIAL DA INTERRUP O RETORNA DA INTERRUP O INICIO DO PROGRAMA LIMPA LIMPA LIMPA LIMPA LIMPA ALTERA CONFIG CONFIG CONFIG CONFIG CONFIG O PORTA O PORTB O PORTC O PORTD O PORTE PARA O URA I O URA I O URA I O URA I O URA I O BANCO DO DO DO DO DO PO PO PO PO PO RTB RTC RTD RTE A A ko ko Ck A ko ck Ck OOR X ko k ck ok Wk X ko ck c ck ok ok oe o ko Ck ko doo d EX ko k ko A o DA RAM RTA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 17 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF BANKO X dc k xk MAIN BTFSS GOTO GOTO BOTAO LIB BCF GOTO BOTAO PRES BSF GOTO B 00000111 CMCON B 00000111 ADCON1 B 10000000 OPTION REG B 00000000 INTCON X C 8 LINHA_4 XX HE A fe 28 lt lt kk BOTAO BOTAO_LIB BOTAO_PRES LED LED MA IN DESL
232. ESCREVE B 00111000 ESCREVE B 00000001 ESCREVE 1 DELAY_MS B 00001100 ESCREVE B 00000110 ESCREVE RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM lt ck ck ck ko xk k xk xk XxX Xx INDO DE 0X20 A 0X7F APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSIC O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS COMPARA O PONTEIRO COM A LT POS 1 J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM 2E HER UE E NE NE MEI E NEL D NEM E CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS ESCREVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA A eoo 7 RE MR Xo 0 0 6 ROTINA DE ESCRITA DA TELA PRINCIPAL de odo E e X oko 8 au ck Uk eo ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES USART 9600 8 n 1 LINH
233. ET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT E COMECA NOVAMENTE BTFSC GOTO STATUS NOT TO ISTO EVITA PROBLEMAS RESET POR ESTOURO NO START UP DO PIC DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM Ce shu Ao oe NT ko Kk HK kb o X Kk 0X X we ceo Ao eo X AS ko ak INICIALIZA O DA RAM de oes eo oo eoe o de E xe UK eode deco e koc ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 INDO DE 0X20 A OXTF EM SEGUIDA AS VARI VEIS DE RAM DO PROGRAMA S O INICIALIZADAS MOVLW MOVWF LIMPA_RAM CLRF INCF MOVF XORLW BTFSS GOTO BCF MOVLW MOVWF BSF VARRE CLRWDT BTFSC GOTO BTFSC GOTO BTFSC GOTO 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA RAM ESTADO TIMER 2 DIVISOR_TMR1 X A XA de e ck X 0k X deo ck E ok ok INTCON GIE BT UP TRATA BT UP BT DOWN TRATA BT DOWN BT START STOP TRATA BT START STOP APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSI O LIMPA A POSI O INCREMENTA O PONTE COMPARA O PONTEIRO J LIMPOU TODAS AS N O LIMPA A PR X SIM INICIA COM ESTADO E
234. F INE BOTAO_1 PORTB 1 SDEFINE BOTAO 2 PORTB 2 DEF INE BOTAO_3 PORTB 3 d ko Week E we eek coke X E oo Ak oko d eoe X AS SA DAS DEVEM SER ASSOCIADAS A FUTURAS ALTERAC ES DO HARDWARE HDEFINE DISPLAY PORTD HDEFINE RS PORTE 0 DEFINE ENABLE PORTE 1 7 HDEFINE VENTILADOR PORTC 1 HDEFINE TEC MATRICIAL PORTB 7 HDEFINE LINHA_4 PORTB 7 080 0080 gt eoe X VETOR DE RESE DES SEX NEM REL NE NEC EL D SES EE LL NA LES EL E POSI O INICIAL PARA EXECU O DO ORG GOTO 0 0000 CONFIG SR 0 A Xo e ck lt ks ck ck ko xk xk X XxX k X k XxX XxX Xx OGRAMA O E ECONOMIZA MEM RIA RAM FLAG DE USU RIO o ko d ENTRADAS Ok k k k Xx A NOMES PARA FACILITAR A PROGRAMAC O E ESTADO DO BOT O 0 0 LIBERADO PRESSIONADO ESTADO DO BOT O 1 0 LIBERADO PRESSIONADO ESTADO DO BOT O 2 0 LIBERADO PRESSIONADO ESTADO DO BOT O 3 0 LIBERADO PRESSIONADO DE SEE NE XE NO NE CLIE E JE 2 SA DAS E c NU NM ELI E O JOE JG XL IINE EJ NE 5 NOMES P
235. FI LTRO BOTOES F STATUS Z VA FI VA CC RRE LTRO BOTOES F RRE PR2L CCP2CON 5 CCP2CON 4 FILTRO J IGUAL A ZERO FUN O JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO ZERA CCPR2L ZERA OS BITS 5 e 4 LSB DO DUTY CYCLE Tp CCPR2L CCP2CON lt 5 4 gt Tosc TMR2 Prescale 0 250ns 16 0 WM DUTY CYCLE 0 gt OFF 186 CLRF BCF MOVLW CALL BSF MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL CLRF GOTO MOVF BTFSC GOTO DECFSZ GOTO MOVLW MOVWF BCF BCF CLRF BCF MOVLW CALL BSF MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL GOTO MOVF BTFSC GOTO TEC MATRICIAL RS 08 ESCREVE RS ESCREVE ESCREVE ESCREVE ESCREVE DISPLAY VARRE TRATA_BOTAO_1 FILTRO BOTOES F STATUS Z VARRE FILTRO BOTOES F VARRE 0x80 CCPR2L CCP2CON 5 CCP2CON 4 TEC MATRICIAL RS 08 ESCREVE RS ESCREVE Yt ESCREVE Vot ESCREVE 6 ESCREVE DISPLAY VARRE TRATA BOTAO 2 FILTRO BOTOES F STATUS Z VARRE Tp Tp Tp PWM DESATIVA TODAS AS LINHAS DO TECLADO SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 8 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREV
236. FIG CP OFF CPD OFF amp DEBUG OFF LVP OFF amp _ OFF amp BODEN OFF PWRTE ON amp WDT OFF amp XT OSC 2 K i Ki Kuu dee AS DAL T cl KL OE Je DRUCK OK s eios s O VARI VEIS Uo E E Gel E GE e OK cer Ko OK E DEFINI O DOS NOMES E ENDERE OS DE TODAS AS VARI VEIS UTILIZADAS PELO SISTEMA CBLOCK 0 ENDERECO INICIAL DA MEM RIA DE USU RIO W TEMP REGISTRADORES TEMPOR RIOS PARA STATUS TEMP INTERRUPC ES ESTAS VARI VEIS NEM SER O UTI LIZADAS ENDC FIM DO BLOCO DE MEM RIA RSS E UK E E O E DEFINIC O DAS VARI VEIS INTERNAS DO PIC e cA A R A O RR E O 6 A AA ko ok ARQUIVO DE DEFINICOES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO P16F877A INC MICROCONTROLADOR UTILIZADO 1 EAN AXE ko ok o ok ko CK Ck AAA ko o E o deo 8 P DEFINIC O DOS BANCOS DE RAM EE E E Gk oo A RRE IEA RRA OS PSEUDOS COMANDOS BANKO E BANK1 A
237. GA x50us Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 153 IA E SS ER RL CONTADOR_AD LIMPA WDT Y CONTADOR UTILIZADO ZERA CONTADOR AD PARA CONTAR O TEMPO DE CARGA DO CAPACITOR CONVERTE PINO EM SA DA EM 0 DESCARREGA O CAPACITOR DELAY P DESCARREGAR DELAY DE sms O CAPACITOR y CONVERTE PINO EM ENTRADA PERMITE A CARGA DO CAPACITOR LOOPING DE 50us DELAY DE 44us 4 INCREMENTA CONTADOR_AD FIM DO TEMPO P CARGA DO SATURA CAPACITOR CARREGOU CONVERTE VALOR DO TEMPO DE CARGA EM ASCII E MOSTRA NO LCD 154 e O PWRTE ON amp _WDT_ON amp _XT X ko de d ok dk A VERS O 1 0 DATA 14 04 2003 de E A ke de x EE EE E A E E X XA 0k ER oko de ESTE EXEMPLO FOI ELABORADO CONVERSOR A D FUNDAMENTADO EXPERI NCIA 12 CONVERS O A D VIA RC E E A Xo ck X UA ok k k k xk X LE E ND NE EI NL E OM E C GE EE ME ND Ge ONE GL MN EM E GE A EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER 8 ck k k k x 3 xo x Xo X E ck k 0 xk k k k oo oc ck Xo ck ko ook
238. GURA I O DO PO CONFIGURA OPTIONS PULL UPs DESABILITA 1 DA RAM RTA RTB RTC RTD RTE DOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO WDT 51 29 TIMER 1 1 CICLO DE M QUINA CONFIGURA INTERRUP ES DESABILITADA TODAS AS INTERRUP ES DESLIGA OS COMPARADORES CONFIGURA CONVERSOR CONFIGURA PORTA E PORTE COMO I O DIGITAL A D SELECIONA BANCO 0 DA RAM 206 AS INSTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT E COMECA NOVAMENTE BTFSC GOTO STATUS NOT TO ISTO EVITA PROBLEMAS NO START UP DO PIC RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM TA E RAEE oo ck X CAO oko AA AA AR INICIALIZA O DA RAM ok ck ck RE ku ck OK o ko oA ko oko eo ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 MOVLW MOVWF LIMPA_RAM CLRF INCF MOVF XORLW BTFSS GOTO 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA_RAM INDO DE 0X20 A APONTA O ENDERE AMENTO INDIRETO PARA A PRIMEIRA POSI O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS
239. HDEF HDEF HDEF HDEF HDEF DEF DEF DEF HDEF HDEF NE NE NE HDEF INE HDEF INE NE NE NE NE NE NE NE FILTRO_BOTAO EQU BOTAO_0 BOTAO_1 BOTAO_2 BOTAO 3 LINHA 4 LEDS LED BO LED 1 LED 1 0 1 _2 LED BO C LEDS BUZZER 3 20 FILTRO P EVITAR RUIDOS DOS BOT ES AR RA ko RA ok ox EE u c DECLARAC O DOS FLAGs DE SOFTWARE PORTB 0 PORTB 1 PORTB 2 PORTB 3 de Ao oe We UK ok c 90 lt lt lt e e Xo x ck ok X Ck oc AS SA DAS DEVEM SER ASSOCIADAS FUTURAS ALTERA ES DO HARDWARE PORTB 7 PORTD PORTD 0 PORTD 1 PORTD 2 PORTD 3 PORTA 4 PORTE 2 ENTRADAS ESTADO DO 0 LIBE ESTADO DO 0 LIBE ESTADO DO 0 LIBE ESTADO DO 0 LIBE SAIDAS ck o X ck o ck ck ook ck cU ko A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM ESTE PROGRAMA N O UTILIZA NENHUM FLAG DE USU RIO E cde ck oA Kk cook ck E oto A
240. IGA COMPARADORES ANAL GICOS DESLIGA CONVERSORES A D PRESCALER 1 2 NO TMRO PULL UPS DESABILITADOS AS DEMAIS CONFG S O IRRELEVANTES TODAS AS INTERRUP ES DESLIGADAS RETORNA PARA O BANCO 0 EE We RE Se INICIALIZA O DO HARDWARE CX Ka U U e Gd ATIVA LEDS LIGADOS AO PORTD ATIVA LINHA 4 DO TECLADO MATRICIAL e Fo 0X RAE RAS AA INICIALIZAC O DAS VARI VEIS lt lt dX oko o e o Ck 0 X A 3 5 See dese X o X E E 5 ROTINA PRINCIPAL odes e es Xo CAS ko E lt cA Ed ko E X FIM DO PROGRAMA co Td o ko RE 00 o ck ck dd E oko ko ko ko A Ck x X END O BOT O EST PRESSIONADO NAO EN TRA SIM ENT APAGA O RETORNA ACENDE O LED AO LOOP PRINCIPAL RETORNA TRA LED AO LOOP PRINCIPAL A BO A BO LIBERADO PRESSIONADO Ok ko xk roka Xk Xk xk XxX k Xx OBRIGAT RIO 18 Dicas e Coment rios Veja que os pinos do microcontrolador tanto os de entrada como os de sa da s o declarados a
241. IGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO E POSITIVO UMA LETRA SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII MOSTRA NO DISPLAY 172 OVF CONTADOR_AD W CARREGA NO WORK O CONTADOR_AD ANDLW B 00001111 MASCARA BITS MAIS SIGNIFICATIVOS OVWF AUX SALVA EM AUXILIAR OVLW SUBWF AUX W AUX 10d ATUALIZA FLAG DE CARRY OVLW 0 30 CARREGA WORK COM 30h BTFSC STATUS C RESULTADO E POSITIVO UMA LETRA OVLW 0X37 SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO ADDWF AUX W SOMA O WORK AO AUXILIAR CONVERS O ASCII CALL ESCREVE MOSTRA NO DISPLAY BCF RS SELECIONA O DISPLAY P COMANDOS GOTO DESCARGA_CAPACITOR VOLTA P DESCARREGAR O CAPACITOR amp ok ck AA 8 AAA E E AA ETERNO ROA i L Y FIM DO PROGRAMA ed A AE HER gt E E es ko ko EE amp END FIM DO PROGRAMA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 173 Dicas e Coment rios As dicas e coment rios desta experi ncia s o os mesmos da experi ncia anterior Exerc cios Propostos 1 Atrav s do conhecimento do tempo de carga do capacitor estime a real posi o dos jump
242. IM CARREGA WORK COM 37h N O WORK F CA COM 30h N MERO SOMA O WORK AO AUXILIAR CONVERS O ASCII ENVIA CARACTER AO DISPLAY LCD ESCREVE h NO DISPLAY LIMPA BARRAMENTO DE DADOS Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 225 AGUAR RETURN 8 oo oko ok o ko ck koX Xo oA koX XO AAA oko too A BANK1 BTFSC RETURN DA I2C LIVRE RETORNA ROTINA DE CHECAGEM DE EVENTOS I2C LIBERADOS E RAE ko RARA A ck AAA ERA Rd A AE ESTA ROTINA AGUARDA AT QUE TODOS OS EVENTOS DA 12C ESTEJAM LIBERADOS SSPSTAT R_W 1 SSPCON2 W B 00011111 7 STATUS Z H 3 oe Oo o oA e MT 0 ACK OUT ck EA E 0k o ELA o E ko ko x ALA Ck OK Ck ko ode X de ok e ko X ESTA ROTINA ENVIA UM ACK OUT PARA O BARRAMENTO I2C ACK OUT BANK1 BCF BSF BANKO RETURN Ce de Ao DE oe we UK de huku X X X oo NACK OUT BANK1 BSF BSF BANKO RETURN SSPCON2 ACKDT SSPCON2 ACKEN ALTERA P BANK1 EST OCORRENDO ALGUM EVENTO I2C SIM ESPERA TERMINAR MASCARA SSPCON2 ATUALIZA FLAG ZERO BITS DE EVENTOS LIBERADOS N O AGUARDA SIM VOLTA P BANKO RETORNA OX Hd A ck
243. IMER LIGA TIMER 2 BSF ESTADO_TIMER LIGA LED E FLAG DO ESTADO DO TIMER MOVLW TMR1 HIGH MOVWF TMR1H MOVLW TMR1_LOW MOVWF TMR1L INICIALIZA CONTADORES MOVLW 2 MOVWF DIVISOR_TMR1 INICIALIZA DIVISOR BSF T1CON TMR ON LIGA CONTAGEM 1 GOTO VARRE VOLTA P VARREDURA DOS BOT ES sd ck ko X x c X 0k o 0e des Ck ok de ck ck ko o o CK oko ko ok ko o xk X pom FIM DO PROGRAMA E E ok 7k ko de e Ao 0k Cko X E ko ok ko Ak SR END FIM DO PROGRAMA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 117 Dicas e Coment rios Observar que nesta experi ncia ao entrar no tratamento das interrup es a opera o de salvar contexto maior que nas experi ncias anteriores Isto por que agora salva se tamb m os valores de FSR e PCLATH pois os mesmos podem ser alterados dentro da interrup o Exerc cios Propostos 1 Implemente o quarto bot o para resetar o temporizador voltar a zero 2 Implemente uma segunda velocidade para os bot es de incremento e decremento de forma que facilite o ajuste de valores maiores 3 Em vez de fazer um timer somente de segundos utilize os dois d gitos da esquerda para mostrar o tempo em minutos e os da direita para mostrar o tempo em segundos O ponto do display da centena pode ser usado para mar
244. INHA 1 COLUNA 7 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE Volts Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 147 CALL ESCREVE MOVLW S CALL ESCREVE MOVLW 187 CALL ESCREVE o sk Xx X 0 Sho de ck oko de X Ok oko Re X ko LOOP PRINCIPAL 5 4 ko o o AR A ROTINA PRINCIPAL FICA CONVERTENDO O CANAL A D CALCULANDO O VALOR EM VOLTS E MOSTRANDO NO DISPLAY LOOP CLRWDT BSF ADCONO GO BTFSC ADCONO GO GOTO 1 OVF ADRESH W OVWE mulplr OVLW 50 OVWF mulcnd CALL mpy F OVF H byte W OVWF ACCbHI OVF L byte W OVWF ACCbLO CLRF ACCaHI OVLW 2395 OVWF ACCaLO CALL D divF MOVF ACCbLO W CALL AJUSTE DECIMAL RS MOVLW 0XC3 CALL ESCREVE BSF RS MOVF DEZENA W ADDLW 0x30 CALL ESCREVE MOVLW iot CALL ESCREVE MOVF UNIDADE W ADDLW 0x30 CALL ESCREVE GOTO LOOP O e Xe cA o Q i Ae de OA E E A Oo des END LIMPA WATCHDOG TIMER INICIA CONVERS O A D FIM DA CONVERSAO N O VOLTA 1 INSTRU O SIM SALVA VALOR DA CONVERS O NO WORK CARREGA WORK EM mulplr CARREGA 50d EM mulcnd CHAMA ROTINA DE MULTIPLICA O SALVA VALOR
245. INOS PARA SA DA E ATUALIZAR OS LEDS LIMPA FLAG DA INTERRUP O ESTADO DOS BOT ES BOTAO 0 PRESSIONADO N O TRATA BOT O COMO LIBERADO SIM DECREMENTA FILTRO DO BOT O ACABOU N O TESTA PR XIMO BOT O SIM MARCA BOT O COMO PRESSIONADO TESTA PR XIMO BOT O 94 MOVLW FILTRO BOTAO MOVWF FILTRO BCF STATUS BOTOES 0 TESTA BT1 BIFSS BOTAO 1 GOTO BT1_LIB DECFSZ FILTRO BT1 F GOTO TESTA BT2 BSF STATUS BOTOES 1 GOTO TESTA BT2 BT1_LIB MOVLW FILTRO BOTAO MOVWF FILTRO BT1 BCF STATUS BOTOES 1 TESTA BT2 BIFSS BOTAO 2 GOTO BT2 LIB DECFSZ FILTRO BT2 F GOTO TESTA BT3 BSF STATUS BOTOES 2 GOTO TESTA BT3 BT2 LIB MOVLW FILTRO BOTAO MOVWF FILTRO 2 BCF STATUS BOTOES 2 TESTA BT3 BIFSS BOTAO 3 GOTO BT3 LIB DECFSZ FILTRO BT3 F GOTO CONTINUA BSF STATUS BOTOES 3 GOTO CONTINUA BT3 LIB OVLW FILTRO BOTAO OVWF FILTRO BCF STATUS BOTOES 3 CONTINUA OVF STATUS BOTOES W OVWF LEDS OVF STATUS BOTOES F BTFSS STATUS Z GOTO MUDA FREQ BANK1 MOVLW 255 MOVWF PR2 BCF PIEL TMR2IE BANKO BCF BUZZER GOTO SAI_INT MUDA_FREO CALL ACERTA_FREO BANK1 MOVWF 2 BSF PIEL TMR2IE BANKO ecco X e wk FIM DA ROTINA REINICIALIZA FILTRO MARCA BOT O COMO LIBERADO BOT O 1 PRESSIONADO
246. IONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 7 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE 000 SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 7 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE 00090 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 295 CLRF DISPLAY LIMPA BARRAMENTO DE DADOS cc X Ok o AO ko E RR ck CK 8 RE AAA oko AR LOOP PRINCIPAL 5 de ERA REA EE XX oe ce X EE ROA A AE A ROTINA PRINCIPAL FICA AGUARDANDO O MOMENTO DE ESCREVER O VALOR DAS ROTA ES DO VENTILADOR E A TEMPERATURA NO LCD AL M DE VARRER O TECLADO PARA MANIPULAR O VALOR DO PWM BSF BSF VARRE CLRWDT BTFSC BTFSC CALL BSF GOTO BTFSC GOTO BTFSC GOTO BIESC GOTO BTFSC GOTO BCF MOVLW MOVWF MOVLW MOVWF GOTO ADCONO GO INTCON GIE MOSTRA_RPS MOSTRA_RPS_LCD MOSTRA_TEMP MOSTRA_TEMP_LCD LINHA_4 41 BOTAO 0 BOTAO 1 TRATA BOTAO 1 BOTAO 2 TRATA BOTAO 2 BOTAO 3 TRATA BOTAO 3 TRATA BOTAO 0 LINHA 4 FILTRO TECLA FILTRO BOTOES su TEMPO TURBO VARRE TRATA BOTAO 0 DECFSZ GOTO DECFSZ GOTO OVLW OVWE FI VA
247. IS O SALVA ACCb EM ACCd LIMPA ACCb LIMPA ACCc check if a gt c if equal then check 150 carry set if gt c a into c 288 DECFSZ GOTO RETURN ne me Ne Ne Ne Ne Ne e Ne Ne Ne Ne Ne e x STATUS C ACCCHI F ACCaHI W ACCCHI F STATUS C ACCbLO F ACCbHI F temp F DIV shift a 1 into b result FIM DA DIVISAO N O VOLTA P DIV SIM RETORNA x EO 0X Na ESE O PTE TE A E E RECHERCHE OG E ROTINA DE MULTIPLICA O A 8x8 Software Multiplier Fast Version The 16 bit result is stored in 2 bytes Before calling the subroutine mpy the multiplier should be loaded in location mulplr and the multiplicand in mult MACRO bit BTFSC mulplr bit ADDWF byte F RRE H byte F RRE L byte F ENDM ck ck ck ke ko ko ko Begin Multiplier Routine H mpy F CLRF H_byte CLRF L_byte MOVF mulcnd W BCF STATUS C mult 0 mult 1 mult 2 mult 3 mult 4 mult 5 mult 6 mult el RETURN Oeo AA TE ox oo o ROTINA DE c E CX A E OO E E RA
248. ISTRADORES DE ENDERE O PARA ACESSO MEM RIA DE DADOS E PROGRAMA MAPEADOS NO BANCO 0 DA RAM REGISTRADORES DE DADOS PARA ACESSO MEM RIA DE DADOS E PROGRAMA MAPEADOS NO BANCO 0 DA RAM REGISTRADORES DE DADOS PARA ACESSO MEM RIA DE DADOS E PROGRAMA MAPEADOS NO BANCO 0 DA RAM REGISTRADORES DE DADOS PARA ACESSO MEM RIA DE DADOS E PROGRAMA MAPEADOS NO BANCO 0 DA RAM 198 FI TU EN EN EN HD D D D DADO LOW 11 REGISTRADORES DE DADOS PARA DADO HIGH 11 ACESSO MEM RIA DE DADOS E PROGRAMA MAPEADOS NO BANCO 0 DA RAM ENDC de de E X ko e e o AE A WA Ko AAA Ku AA AA DEFINI O DAS VARI VEIS INTERNAS DO PIC o EC ME MED DEL NES NEL NC SEL NEA NET MEA AE ME NEC SED AE AER DD NC SEC wi NET WE NE UE NS XL ND EE Ne UA 0 O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITA O INCLUDE P16F877A INC MICROCONTROLADOR UTILIZADO A X E 0X0 XA A EE EE aku DEFINI O DOS BANCOS DE RAM Ck CE E Ck X Cs
249. J i A 5V 1 j i gt 3 1 SA13 SA14 SA15 SA16 lies i 1 I 220R Yar I 0 MN RC COL1 COL2 COL4 vY 01 NE 4 TACOMETRO Jv Bea M S i 1 E10k 3 2 5V 9 2 B G 9 pad 5 RESET 10 2 gt Me 45V o o LIMCLR 2 10K 2 RA0 vss 31 BAI RB7 2 dL 4 2 32 Aras res 3 il Eiras RB4 37 RAS 45V E HRE RB2 E HRE RE2 RBO VDD RD7 vss RD6 22 osc1 23 144 osc2 RDA 22 151 rco RD3 2 4MHz inci RD2 Rc P2 1 Rcs 5 21 Rc4 55 Rc gt PIC16F877A 0 5V CJ6 Ep enu Comunicag a RX 3 2 1 1K A 3 2 1 Aa tuF MAX 232 Comunicag o TX CONECTOR DB9 FEMEA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 279 Fluxograma IN CIO numi d near P VETOR DE RESET PULA P IN CIO DO PROGRAMA y CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION CONFIGURA REGISTRADORES ADCONO E ADCON1 PARA CONVERTER O CANAL 0 DO CONVERSOR A D SENSOR DE TEMPERATURA y CONFIGURA REGISTRADORES CCP1 E CCP2 Tpw 1ms PWMs DO VENTILADOR E AQUECEDOR CONFIGURA INTERRUP O DE TMR2 A CADA 10ms UTILIZANDO A BASE DE TEMPO DOS PWMs Y CONFIGURA USART P 9600bps Y C
250. K CALL ESCREVE ENVIA AO LCD AO LER O REGISTRADOR RCREG O BIT RCIF DA INTERRUP O LIMPO AUTOMATICAMENTE GOTO LOOP VOLTA P LOOP PRINCIPAL IIIJ FIM DO PROGRAMA d o e A RT Mock ko cook ck BRR o END FIM DO PROGRAMA 246 Dicas e Coment rios A rotina de convers o Hex gt gt gt Decimal deste exemplo mais completa do que nos casos anteriores pois trabalha com 3 d gitos CENTENA DEZENA e UNIDADE Desta forma ela pode converter todo o range do argumento de entrada W que vai de O a 255 O sistema de convers o A D o mesmo apresentado na experi ncia 11 onde utilizou se o conversor interno considerando apenas os 8 bits mais significativos Com isso o valor a ser transmitido j fica limitado a um byte Devido a simplicidade do sistema n o foi necess rio o uso das interrup es deixando as desabilitadas Para o caso da recep o o bit RCIF testando toda vez dentro do loop principal Quanto a transmiss o sempre que um novo valor foi convertido checa se se o buffer de sa da est vazio para poder escrever o novo valor Exerc cios Propostos 1 Ative o uso da interrup o de recebimento Quanto transmiss o em vez de deix la cont nua crie uma interrup o de timer como base de tempo Por exemplo transmita o valor atual convertido a cada 1 segundo 2 Crie um programa no PC que re
251. K 0 UNIDADE DEZENA CENTENA MILHAR LEDS STATUS_BOTOES FILTRO_BOTOES TEMPO_TURBO INDICE VARRE DISPLAY DIVISOR TMR1 ENDC O SEGUNDO BLOCO DE VARI VEIS EST FACILITANDO A OPERA O COM AS VAR CBLOCK 0X70 7 STATUS_TEMP WORK_TEMP FSR TEMP PCLATH TEMP ENDC POSI O INIC LSD MSD ARMAZENA O S FILTRO PARA TEMPORIZADOR INDEXADOR P CONTADOR AUX IAL DA RAM TATUS DOS BOTOES RUIDOS P TURBO DAS TECLAS VARREDURA DOS DISPLAYS ILIAR P SEGUNDOS LOCALIZADO NO FINAL DO BANCO 0 A PARTIR DO ENDERE O 0X70 POIS ESTA LOCALIZA O ACESSADA DE QUALQUER BANCO I VEIS AQUI REGI O COMUM REGISTRADOR REGISTRADOR REG DE ENDE REGISTRADOR LOCALIZADAS A TODOS OS BANCOS DE STATUS TEMPOR RIO DE TRABALHO TEMPOR RIO RECO INDIRETO TEMPOR RIO DE PAGINA O TEMPOR RIO 108 OK Uk A AR A A AR Aoc oko o X E ck ER ko ks DEFINI O DAS VARI VEIS INTERNAS DO PIC TE cA ow UU S ox Gh 76 XO 4 MAREA o ME RA AS Ko REE Ao X XX O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITA O lt 16 877 gt ARQUIVO DE DEFINI ES DO PIC ATUAL
252. LA VARI VEL CONTADOR ESTA VARI VEL EST LIMITADA PELAS CONSTANTES MIN E MAX O VALOR DO CONTADOR MOSTRADO NO DISPLAY DA amp EXPERI NCIA 4 CONVERS O BCD PARA DISPLAYS DE 7 SEGMENTOS X ke ko ode d 0 ck ck ok ko o odes X 0 de o de ko oko ko 0 ok e 0 OX e ko E EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER A A X kk k xk w VALOR OS BOT ES ATIVOS S O O DA LINHA 4 O BOT O DA COLUNA 2 PODE SER UTILIZADO k E lt ce ox OW BODEN OFF amp PWRTE ON amp _WDT_OFF amp XT OSC SE OX P oko X oe VARI VEIS PELO SISTEMA p amp DEFINIC O DAS VARI VEIS INTERNAS DO PIC DE REDIGITACAO P16F877A INC MICROCONTROLADOR UTILIZADO 1 po DEFINI O DOS BANCOS DE RAM ENTRE OS BANCOS DE MEM RIA P FLAGS INTERNOS CBLOCK 0x20 ENDERECO INICIAL DA MEM RIA DE USU RIO W TEMP REGISTRADORES TEMPOR RIOS PARA STATUS TEMP INTERRUP ES ESTAS VARI VEIS NEM SER O UTI LIZADAS CONTADOR ARMAZENA O VALOR DA CONTAGEM FLAGS ARMAZENA OS FLAGS DE CONTROLE FILTRO1 FILTRAGEM PARA O BOT O 1 FILTRO2 FILTRAGE
253. LAY PARA 2 CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA SELECIONA O DISPLAY P COMANDOS ESCREVE COMANDO 0X30 PARA INICIALIZA O DELAY DE 3MS EXIGIDO PELO DISPLAY ESCREVE COMANDO 0X30 PARA 184 INICIALIZA O ESCREVE COMANDO 0X30 PARA INICIALIZA O ESCREVE COMANDO PARA INTERFACE DE 8 VIAS DE DADOS ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY DELAY DE 1MS ESC REVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESC REVE COMANDO PARA INCREM AUTOM TICO DIREITA xk CAO do qe de ko DA TELA PRINCIPAL 0 04e E SMT ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES POSICIONA O CURSOR POSI O 4 LINHA 0 SELECIONA O DISPLAY P DADOS CALL ESCREVE OVLW 0x30 CALL ESCREVE OVLW 00111000 CALL ESCREVE OVLW B 00000001 CALL ESCREVE OVLW 1 CALL DELAY_MS OVLW 00001100 CALL ESCREVE OVLW B 00000110 CALL ESCREVE ck lt lt RT MT 0 ROTINA DE ESCRITA r LINHA 1 MCMASTER 4 LINHA 2 PWM OFF MOSTRA TELA PRINCIPAL MOVLW 0X84 CALL ESCREVE BSF RS OVLW tes CALL ESCREVE OVLW CALL ESCREVE OVLW T CALL ESCREVE OVLW 11 CALL ESCREVE OVLW CALL ESCREVE OVLW ng CALL ESCREVE OVLW rot CALL ESCREVE RS M
254. LIB FILTRO11 F CHECA_BT1 FILTRO12 F CHECA_BT1 ST BT1 DEC CHECA BT2 ST BT1 BOTAO2 BT2_LIB FILTRO21 F CHECA_BT2 FILTRO22 F CHECA_BT2 ST_BT2 INC MAIN ST_BT2 ST_BT1 INTENSIDADE W MIN STATUS Z MAIN INICIA INTENSIDADE MIN SETA TIMER P lms REINICIA TMRO ATUALIZA O DISPLAY INICIALMENTE E oko de ko INICIALIZA FILTRO1 T FILTRO INICIALIZA FILTRO2 T FILTRO O BOT O 1 EST PRESSIONADO N O ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM BOT O J ESTAVA PRESSIONADO N O EXECUTA A O DO BOT O SIM CHECA BOT O 2 MARCA BOT O 1 COMO LIBERADO O BOT O 2 EST PRESSIONADO N O ENT O TRATA COMO LIBERADO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM DECREMENTA O FILTRO DO BOT O TERMINOU N O CONTINUA ESPERANDO SIM BOT O J ESTAVA PRESSIONADO N O EXECUTA A O DO BOT O SIM VOLTA AO LOOPING ARCA BOT O 2 COMO LIBERADO RETORNA AO LOOPING A O DE DECREMENTAR BOT O 1 COMO J PRESSIONADO COLOCA INTENSIDADE EM W APLICA XOR ENTRE INTENSIDADE E MIN PARA TESTAR IGUALDADE SE FOREM IGUAIS O RESULTADO SER ZERO RESULTOU EM ZERO SIM RETORNA SEM AFETAR CONT Manual do Usu rio S
255. M DO FILTRO RUIDO 232 GOTO VARRE N O VOLTA P VARRE SIM BOT O PRESSIONADO TRECHO DO PROGRAMA PARA LER DADO DA MEM RIA E ATUALIZAR RAM LER_MEMORIA_EEPROM MOVLW END_EEPROM_H MOVWF ENDERECO H MOVLW END EEPROM L MOVWF ENDERECO L CARREGA ENDERECO DE LEITURA END 0x0000 PRIMEIRA POSI O DA EEPROM CALL I2C EEPROM READ CHAMA ROTINA DE LEITURA BTFSC F_ERRO GOTO 43 MOVF BUFFER W MOVWF VALOR DADOS ATUALIZA RAM COM O VALOR LIDO CALL ATUALIZA TELA LINHA 2 CHAMA ROTINA P ATUALIZAR LCD GOTO VARRE VOLTA P VARREDURA DOS BOT ES FE e 5 DEM ME M x M E E M O TR E I M E M D EK k O pac FIM DO PROGRAMA e Wo Wo 4 de wo ck co X ko M e ko deco de co ck se X 9 END FIM DO PROGRAMA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 233 Dicas e Coment rios As constantes END EEPROM e END EEPROM L representam a posi o a ser gravada lida da mem ria externa Note que este programa n o utiliza as interrup es de leitura e escrita relacionadas ao protocolo C Desta forma ele possui uma rotina AGUARDA 26 LIVRE para saber se o sistema est liberado para a pr xima ac o Ele tamb m testa o ACK e gera uma mensagem de erro caso alguma coisa saia fora do padr o Exerc cios Propostos 1 Fa a t
256. M PARA O BOT O 2 ENDC FIM DO BLOCO DE MEM RIA Xo lt lt lt Xe Oe oe X E CK ox ko ke ko Ck CX Cho We oo ko 0o A ARA ook X ck DEFINI O DOS NOMES E ENDERE OS DE TODAS AS VARI VEIS UTILIZADAS dk Ce eoo ok e ok e Ck ko de e ck CK ko Ae 8 wo E eo XS e de 26 AO We eoe o E e x Ok ck Ko ck o ok ko oko 38 o e OA dece AS Ce 0 ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE Ok ck k XxX k Xk xk k ck k k X XxX XxX xk k Xx XxX Xx X de ko k o AE E e oko ko Td RR OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM oko Ck de oe oe X 0 A AA A AA Xo ok E de ok XA AX we LTDA TREE o o ko oe X X ok oko de ok oko A e oc 44 SDEFINE DEFINI O DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA ST BT1 FLAGS 0 STATUS DO BOT O 1 SDEFINE ST BT2 FLAGS 1 STATUS DO BOT O 2
257. MCLR VDD 2 RAO vss S IRA RB7 do paz RB6 mas RB5 5 RA4 RB4 7 Z4 RAS RB3 RS 8 REO RB2 5V EN 9 4 RE1 RB1 10 RE2 RBO voo RD7 12 vss RD6 1140801 RD5 e 144 osc2 RD4 Elrco RD3 4MHz pci RD2 T Rc2 RD1 3 RDO 4 RC7 24 RC5 RC6 PIC16F877A 45V CJ6 i 6a RX tuF Comunicac s tuF 5 5 Y J 1 ci Cto 1uF 5 02 C 1K 13 TAIN TIOUT 14d R1OUT RIN LJ 2 CONECTOR DB9 FEMEA r 5V 5 T2IN T2OUT q R20UT R2IN H GND VCC MAX 232 4 6 3 2 1 uF o o x CJ7 Comunicag o TX 236 Fluxograma IN CIO Si VETOR DE RESET PULA P IN CIO DO PROGRAMA y CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs CONFIGURA REGISTRADOR TXSTA HABILITA TRANSMISS O MODO ASSINCRONO HIGH SPEED BAUD RATE CONFIGURA BAUD RATE SPBRG 25d gt 9600 bps CONFIGURA REGISTRADOR RCSTA HABILITA RECEP O RECEP O DE 8 BITS RECEP O CONT NUA DESABILITA ADDRESS DETECT I 1 1 l TRANSMISSAO DE 8 BITS 1 l 1 TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO y INICIALIZA DISPLAY PREPARA
258. MPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DA USART DO PIC O SOFTWARE CONVERTE O CANAL 0 DO CONVERSOR A D POTENCI METRO E MOSTRA NO DISPLAY O VALOR CONVERTIDO EM DECIMAL E HAXADECIMAL AL M DE MOSTRAR O VALOR NO DISPLAY O SOFTWARE TRANSMITE PELA USART O VALOR DA CONVERS O OS VALORES RECEBIDOS PELA USART TAMB M S O MOSTRADOS NO LCD COMO CARACTERES ASCII dk A X X E X o o 00 a BR DE 0k ck E ko Wo hook CONFIGURA ES PARA GRAVA O d E A oA E ook ERRO ko OK Do odo 8 CONFIG _CP_OFF _CPD_OFF amp _DEBUG_OFF amp _LVP_OFF amp _WRT_OFF amp _BODEN_OFF amp oko UE ok deo X de osx oe e e ko Kk Ck 3e ce Kc K 2 DEFINIC O DAS VARI VEIS ES 0X 8 RRA A es coke E EA OA o ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 0890008 0 POSI O INICIAL DA RAM TEMPOO TEMPOI TEMPORIZADORES P ROTINA DE DELAY AUX REGISTRADOR AUXILIAR DE USO GERAL UNIDADE ARMAZENA VALOR DA UNIDADE DEZENA ARMAZENA VALOR DA DEZENA CENTENA ARMAZENA VALOR DA CENTENA ENDC C e Aoc owe 2 CE ko OX we des 8 Xo X de DEFINI O DAS VARI
259. NA VALOR DADOS REGISTRADOR DE DADO PARA EEPROM SERIAL EXTERNA MAPEADO NO BANCO 0 DA RAM ENDC dk CX Ce eoe ok ok e Ck ck ode ko wk ko ck CE hk ke Aes wee oko E deo Oe 0 0 dk CX kl AC We eoe o e x ck o 8 Ok ko wo AR ck Xo ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO P16F877A INC MICROCONTROLADOR UTILIZADO 1 DEFINI O DOS BANCOS DE RAM d ck ke X o ok ko ck ok c de 0 A o 0 Aes Xe e X ye Ck OK de ko de ck ok oe ok 222 OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA HDEF INE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM ko ok XX ko ok o ck DM ok ck ck ko A ko KK Ko A A AA CONSTANTES INTERNAS 5 k e 0k ck o ck AXE A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O FILTR
260. NA VERIFICA SE ALGUM BOT O EST PRESSIONADO E CASO AFIRMATIVO DESVIA PARA O TRATAMENTO DO MESMO LIMPA WATCHDOG TIMER LINHA 1 DO LCD LINHA 2 DO LCD BOT O PRESSIONADO ATIVA LINHA 4 DO TECLADO MATRICIAL FILTRO P EVITAR RUIDOS DELAY PARA ESTABILIZACAO E LEITURA DO TECLADO O BOTAO 0 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 0 N O O BOT O 1 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 1 N O O BOT O 2 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 2 N O O BOT O 3 ESTA PRESSIONADO SIM PULA P TRATA BOTAO 3 N O DESATIVA A LINHA 4 DO TECLADO MATRICIAL CARREGA O VALOR DE FILTRO TECLA SALVA EM FILTRO BOTOES RECARREGA FILTRO P EVITAR RUIDOS NOS BOT ES CARREGA TEMPO COM 1 IGNORA DO TURBO DAS TECLAS O TURBO A PRIMEIRA VEZ QUE A TECLA PRESSIONADA VOLTA PARA VAR RER TECLADO dE AR TAMENTO DOS BO ooo k Ok OX Ok X X TOES E DE E NEN NU ES DEM SEC NEL S TRATA BOTAO 0 FILTRO BOTOES F VARRE TEMPO TURBO F FIM DO FILTRO
261. NANA NAN ha 4 7K ba 4 7K RB3 RB2 RB1 Tv S NN RBO RD7 RD6 RD5 RD4 RD3 RD2 RD1 RDO RC7 RC6 E z B Te ele Ta ls E Te je Je SA13 220R LIN4 SA14 SA15 SA16 COL1 COL2 COL3 COL4 pau Kejdsip NO CJ3 Coluna 1 RBO o z CJ2 ha 4 7K Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 63 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA Y CONFIGURAG ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs HABILITA DISPLAY DA UNIDADE E LINHA 4 DO TECLADO MATRICIAL L CONTADOR DA EEPROM RECARREGA FILTRO DE DEBOUNCE BOT O 1 PRESS N o BOT O 2 Sim PRESS N o 64 FIM FILTRO DEBOUNCE FIM FILTRO DEBOUNCE INCREMENTA CONTADOR DECREMENTA CONTADOR GRAVA CONTADOR GRAVA CONTADOR NA EEPROM NA EEPROM CONSULTA TABELA PARA ATUALIZAR DISPLAY DE 7 SEGMENTOS Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 65 GRAVA EEPROM CARREGA DA
262. NFIGURA ES PARA GRAVA O deo AR AXE ko o A o ko E RA de c CONFIG CP OFF CPD OFF amp DEBUG OFF LVP OFF amp WRT OFF amp BODEN OFF PWRTE ON amp WDT ON amp XT OSC X de e OX ok oko Ck o v X oko KK Ck o oko ko de ok A pos DEFINI O DAS VARI VEIS Xo Ces de ko woke A 46 8 Uk ok ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0X20 POSI O INICIAL DA RAM TEMPOO TEMPO1 TEMPORIZADORES P ROTINA DE DELAY AUX REGISTRADOR AUXILIAR DE USO GERAL UNIDADE ARMAZENA VALOR DA UNIDADE DEZENA ARMAZENA VALOR DA DEZENA CENTENA ARMAZENA VALOR DA CENTENA INTENSIDADE VENT INTENSIDADE DO VENTILADOR INTENSIDADE AQUE INTENSIDADE DO AQUECEDOR ACCaH l ACUMULADOR a DE 16 BITS UTILIZADO ACCaLO NA ROTINA DE DIVIS O ACCbH1 ACUMULADOR b DE 16 BITS UTILIZADO ACCbLO NA ROTINA DE DIVIS O ACUMULADOR c DE 16 BITS UTILIZADO ACCcLO NA ROTINA DE DIVIS O ACCdHI ACUMULADOR d DE 16 BITS UTILIZADO ACCdLO NA ROTINA DE DIVIS O temp CONTADOR TEMPOR RIO UTILIZADO NA ROTINA DE DIVIS O 284 H byte AC
263. NTO CARREGA BYTE DE CONTROLE TRANSMITE CONTROLE END HIGH Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 227 CALL AGUARDA_12C_LIVRE CALL TESTA_ACK BTFSC F_ERRO GOTO I2C ERRO MOVF ENDERECO_H W MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F_ERRO GOTO I2C ERRO MOVF ENDERECO L W MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F ERRO GOTO 120 ERRO MOVE BUFFER W MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F ERRO GOTO I2C ERRO BANK1 BSF SSPCON2 PEN BANKO CALL AGUARDA_12C_LIVRE RETURN de CK Ue de Ao Coo ode 0 de A E ox AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O TRANSMITE ENDERECO PARTE HIGH AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO NAO TRANSMITE ENDERECO PARTE LOW AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O GRAVA DADO AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO NAO ALTERA P BANK1 INICIA STOP BIT VOLTA P BANKO AGUARDA FIM DO EVENTO RETORNA DAE SUM EE LE E E NE SD ME MEME NE E g ROTINA P SINALIZAR ERRO NA I2C des de de de E deo ho ke X ko Ke CK
264. O A XO lt lt dE MTE 8 SR DE OK 0X To RS X CONFIG CP OFF _CPD_OFF amp DEBUG OFF LVP OFF amp _WRT OFF amp _BODEN_OFF PWRTE ON amp WDT amp XT OSC K AA E EXE ox ok E 5 ko Ck X ook o ck ko RD E POT DEFINIC O DAS VARI VEIS ES 0 A EE AA X o o RR oko ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0X20 POSI O INICIAL DA RAM TEMPO1 TEMPOO CONTADORES P DELAY FILTRO_BOTOES FILTRO PARA RUIDOS FLAG FLAG DE USO GERAL ENDC lt lt lt cA E oo Wo Ck ok ko Ck X ok o ko 0 oo ko de ER DEFINI O DAS VARI VEIS INTERNAS DO PIC d ce CO E e ko we ok de oko ko o Xo o 00 X kO ARQUIVO DE DEFINICOES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO INCLUDE lt 16 877 gt MICROCONTROLADOR UTILIZADO d Sw OA o o ko A PI DEFINI O DOS BANCOS DE RAM ve ce e e e X o
265. O ESTAVA PRESSIONADO N O EXECUTA A O DO BOT O SIM VOLTA AO LOOPING CO AP PA IG SI N AT EEPROM UAI AT AC O DE MARCA BOT CO AP PA IG RESUI IM S N BOT O 2 C RETORNA AO LOOP RA RESUL M 0 OMO LIBERADO ING A O DE DECREMENTAR BOT O 1 COMO J PRESSIONADO LOCA CONTADO LICA XOR ENT R EM W RE CONTADOR E MIN TESTAR IGUALDADE SE FOREM UAIS O RESULTADO SER ZERO TOU EM ZERO RETORNA SEM AFETAR CONT DECREMENTA O CONTADOR UAI LIZA O VALOR DE CONTADOR NA UAIS LIZA O DISPLAY INCREMENTAR T O 2 COMO J PRESSIONADO LOCA CONTADOR EM W LICA XOR ENTRE CONTADOR E MAX TESTAR IGUALDADE SE FOREM RETORNA SE O RESULTADO SER ZERO LTOU EM ZERO AFETAR CONT INCREMENTA O CONTADOR AT AT D AT UAI EEPROM UAI CONVE SP LIZA O VALO LIZA O DO LAY UAI VISUA LIZA O PORT NO DISPLAY N O VOLTA AO LOOP PRINCIPAL R DE CONTADOR NA DISPLAY RTE CONTADOR NO N MERO DO D PARA LIZARMOS O VALOR DE CONTADOR Xk k k X XxX DO PROGRAMA deo dk Ck ode de sk c e Ce ode gt lt ep ck Cko ko d ode OX eo sas OBRIGAT RIO 72 Dicas e Coment rios A mem ria EEPROM do microcontrolador PIC16F877A pode ser lida a qualquer mo
266. O DISPLAY P COMANDO COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 0 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE Linha Coluna 258 CALL ESCREVE MOVLW tu CALL ESCREVE MOVLW CALL ESCREVE MOVLW CALL ESCREVE MOVLW YT CALL ESCREVE Ok Ok X X Ck k Ck Ok Ok Ok k Ok Ok Ck Ck Ck Ok Ok Ok Ok X Ok Ok Ck Ck Ok ko ROS LOOP PRINCIPAL ck o o oko ok ck TRAE oko ck ck AEREA ko XX 9 A AA AE MOVLW B 00010000 MOVWF LINHA ATIVA INICIALIZA REGISTRADOR AUXILIAR PARA ATIVAR LINHAS LOOP CLRWDT LIMPA WATCHDOG TIMER MOVLW 100 XORWF FILTRO W BTFSS STATUS Z FILTRO 100 NENHUMA TECLA PRESSIONADA GOTO MANTEM_LINHA_ATUAL N O PULA E MANTEM A LINHA ATUAL ATIVA SIM ATIVA PR XIMA LINHA ATIVA PROXIMA LINHA BCF STATUS C RRF LINHA_ATIVA F RODA REGISTRADOR LINHA_ATIVA OVLW B 10000000 CARREGA W COM VALOR INICIAL DE LINHA_ATIVA BTFSC LINHA_ATIVA 3 VARREU TODAS AS LINHAS OVWF LINHA ATIVA SIM RECARREGA REGISTRADOR COM VALOR DO W N O OVF LINHA ATIVA W OVWF PORTB CARREGA PORTB COM VALOR DE LINHA ATIVA ATIVA A LINHA CORRESPONDENTE MANTEM LINHA ATUAL BTFSC LINHA4 A LINHA 4 EST
267. O DO WDT LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO 1 DA RAM CONFIGURA I O DO PORTA CONFIGURA I O DO PORTB CONFIGURA I O DO PORTC CONFIGURA I O DO PORTD CONFIGURA I O DO PORTE CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 1 128 TIMER 1 1 DESLIGA OS COMPARADORES CONFIGURA INTERRUP ES DESABILITADA TODAS AS INTERRUP ES CONFIGURA CONVERSOR A D CONFIGURA PORTA COM I O DIGITAL SELECIONA BANCO 0 DA RAM AS INTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT ISTO EVITA PROBLEMAS NO START UP DO PIC RESET POR ESTOURO DE WATCHDOG TIMER N O AGUARDA ESTOURO DO WDT SIM gt de e co A de AR AA c INICIALIZA O DA RAM Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 157 EXA ck E Ck o eo 00k e e ck desk de ck ko ko ko X o ESTA ROTINA IR LIMPAR TODA A MOVLW 0 MOVWF FSR LIMPA_RAM CLRF INDF INCF FSR F MOVF FSR W XORLW 0X80 BTFSS STATUS Z GOTO LIMPA RAM dede o ooo 8
268. O WDT CONFIG CLRF PORTA LIMPA O PORTA CLRF PORTB LIMPA O PORTB CLRF PORTC LIMPA O PORTC CLRF PORTD LIMPA O PORTD LIMPA O PORTE BANK1 ALTERA PARA O BANCO 1 DA RAM OVLW 00101111 OVWF TRISA CONFIGURA I O DO PORTA OVLW B 00001111 OVWE TRISB CONFIGURA I O DO PORTB OVLW B 10011000 OVWFE TRISC CONFIGURA 1 0 DO PORTC OVLW B 00000000 OVWE TRISD CONFIGURA 1 0 DO PORTD OVLW B 00000000 OVWF TRISE CONFIGURA I O DO PORTE OVLW B 11011111 OVWE OPTION REG CONFIGURA OPTIONS PULL UPs DESABILITADOS INTER NA BORDA DE SUBIDA DO RBO TIMERO INCREM PELO CICLO DE M QUINA WDT 1 128 TIMER 1 1 OVLW B 00000000 OVWE INTCON CONFIGURA INTERRUPC ES DESABILITADA TODAS AS INTERRUPC ES OVLW B 00000111 OVWE CMCON DESLIGA OS COMPARADORES OVLW B 00000111 OVWE ADCON1 CONFIGURA CONVERSOR A D CONFIGURA PORTA E PORTE COMO 1 0 DIGITAL OVLW B 00001001 OVWF SSPADD VELOCIDADE 100KHz 4MHz OVLW B 10000000 OVWFE SSPSTAT DESABILITA SLEW RATE CONTROL 100 KHz BANKO SELECIONA BANCO 0 DA RAM OVLW B 00101000 OVWFE SSPCON HABILITA I2C MASTER MODE CONFIGURA PINOS COMO DA I2C AS INSTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA
269. OBJETIVO uu SS AA A AS A E ba 50 DESCRICAO sato ia E ee 50 FLUXOGRAMA er oe M Orte te ium fe EO A c ede e e Et ua 52 ERREICHT 55 DICAS E COMENT RIOS aasan 61 EXERC CIOS PROPOSTOS ED ttes ect eoe Yau D ME Letto nt ecd de 00 Pes PLA 61 CAP TULO 8 EXPERI NCIA 6 ACESO MEM RIA DE DADOS 62 OBJETIVOS i orbi E p ec Deo pc c a Ae fene 62 DESCRICAO ls ia dao feat t cde Mo cA Put oboe a QE 62 ESQUEMM ELETRICO atoa ve I o Tt CREDO 63 FLUXOGRAMA m CLIE 64 ee eA de E EE A E EEE 67 DICASE GOMENTARIOS Es td ho Et do bl ren 73 EXERCICIOS PROPOSTOS aaa el AE tn ed tt 2 73 CAP TULO 9 EXPERI NCIA 7 DIMMER nene 74 OBJETIVO iiie mI EEUU E E io 74 DESCHIQAO 30 1 adi 74 ESQUEMA EL TRICO Ee ELA a e TD des e eode el its 75 FLUXOGRAMA sentem E SEA ER Aa AE O dl t S 76 GODIGO32 A er m ehe Rene he ie 79 DICAS E COMENTARIOS onec ohh eem mete e tore eerie bee bu beer ml pede echten tend 85 EXERC CIOS PROPOS TOS ee E ii eii 85 CAP TULO 10 EXPERI NCIA 8 BOT ES LEDS EBUZZER ree aaa ia 86 86 DESCRI O 86 7 MN E 88 92 DIGAS E nt a a 99 EXERC CIOS PROPOSTOS cial idad ls hapa
270. OCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0 TEMPOI TEMPOO FILTRO_BOTOES CONTADOR_AD AUX ENDC de AA AA A ko o o ok AAA O0 ko WA OA A cde oko 0o POS CONI FIL CONI C O INICIAL DA RAM P DELAY TRO PARA RUIDOS DOS BOT ES TADOR PARA CONVERSOR A D REGI STRADOR AUXILIAR DE USO GERAL DEFINICAO DOS BANCOS DE RAM E se dece Ck oe OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA HDEF INE BANK1 BSF SDEFINE BANKO BCF ko ck k ck Xk Xx k k k XxX X X XxX XxX XxX k k X FILTRO TECLA EQU STATUS RPO STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SELECIONA BANKO DA MEMORIA RAM CONSTANTES INTERNAS ECH A ok ck Ck e o ok o ko o ko ck E ko ko HR we CX A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O 200 FILTRO P EVITAR RUIDOS DOS BOT ES Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 155 E A XA oe A E ck e 0e cock A E A e E de ko ko ok x DECLARAC O DOS FLAGs DE SOFTWARE E ERA A MAR ko x c deo ko A E
271. OLTA P BANKO AGUARDA FIM DO EVENTO CARREGA BYTE DE CONTROLE IRANSMITE CONTROLE AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O TRANSMITE ENDERECO PARTE HIGH AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O TRANSMITE ENDERECO PARTE LOW AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P 12C_ERRO N O ALTERA P BANK1 REINICIA START BIT VOLTA P BANKO AGUARDA FIM DO EVENTO CARREGA BYTE DE CONTROLE IRANSMITE CONTROLE AGUARDA FIM DO EVENTO CHAMA ROTINA P TESTAR ACK OCORREU ERRO DE ACK SIM PULA P I2C ERRO N O ALTERA P BANK1 INICIA LEITURA DO BYTE VOLTA P BANKO AGUARDA FIM DO EVENTO SALVA DADO EM BUFFER ENVIA NACK lt FIM AGUARDA FIM DO EVENTO ALTERA P BANK1 INICIA STOP BIT VOLTA P BANKO AGUARDA FIM DO EVENTO RETORNA 2 Ce E deo ce oko Xo xoc EEPROM SERIAL EXTERNA E A de ESTA ROTINA GRAVA UM DADO NA MEM RIA SERIAL EXTERNA O ENDERECO DEVE SER O VALOR A SER GRAVADO DEVE SER PASSADO CASO ALGUM ERRO DE GRAVA O OCORRA A ROTINA DESVIA P I2C ERRO ALTERA P BANK1 INICIA START BIT VOLTA P BANKO AGUARDA FIM DO EVE
272. ONFIGURA TMR1 COMO CONTADOR EXTERNO TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO Y INICIALIZA DISPLAY E PREPARA TELA PRINCIPAL AQUEC RPS TEMP 000 000 000 C 280 INICIA UMA CONVERS O A D ADCONO GO 1 HABILITA FLAG GLOBAL DAS INTERRUP ES GIE 1 LIMPA WDT ATUALIZAR SIM RPS ATUALIZAR SIM TEMP BOT O 0 Sim PRESS BOT O 1 Sim PRESS BOT O 2 Sim PRESS BOT O 3 PRESS mn N o Sim MOSTRA_RPS_LCD MOSTRA_TEM P Lco TRATA BOT O 0 TRATA BOT O 1 TRATA BOT O 2 TRATA BOT O 3 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 281 TRATA BOT O 0 PODE INC INTENSIDADE INCREMENTA INTENSIDADE AQUE MULTIPLICA INTENSIDADE AQUE POR 10d E ATUALIZA PWM CCP1 FAZ AJUSTE DECIMAL DA INTENSIDADE EMOSTRA VALOR NO LCD TRATA BOT O 1 PODE DEC INTENSIDADE DECREMENTA INTENSIDADE_AQUE MULTIPLICA INTENSIDADE_AQUE POR 10d E ATUALIZA PWM CCP1 FAZ AJUSTE DECIMAL DA INTENSIDADE EMOSTRA VALOR NO LCD TRATA BOT O 2 PODE INC INTENSIDADE INCREMENTA INTENSIDADE_VENT MULTIPLICA INTENSIDADE_VENT POR 10d E ATUALIZA PWM CCP2 TRATA BOT O 3 PODE DEC INTENSIDADE
273. ONTADORES DO TMR1 INCREMENTA PONTEIRO PASSOU INDICE_VARRE_DISPLAY 1seg ACERTA PONTEIRO DO RECARREGA END INDIRETO FSR TEMPORIZADOR DE 1seg LIMPA TODOS OS SEGMENTOS BLANK EEN pun DESLIGA TODOS OS DISPLAYS y DECREMENTA TIMER CONSULTA TABELA E ACIONA DISPLAY CORRETO LIMPA FLAG DE TIMER LIGADO CONSULTA TABELA P LED DISPLAY DE 7 SEGMENTOS PARA CONTADOR ATUALIZA PORT LIGADO DO TIMER 1 AOS SEGMENTOS y LIMPA FLAG DA INTERRUPGAO DE TMRO LIMPA FLAG DA INTERRUPGAO DE TMR1 y RECUPERA CONTEXTO Y SAI DA INTERRUP O 104 TRATA BOT O UP TIMER LIGADO N o FILTRO TERMINOU FIM DO TEMPORIZADOR P TURBO 2 RECARREGA TEMPORIZADOR P TURBO INCREMENTA TIMER Gara BOT O Down TIMER LIGADO Sim N o FILTRO N o TERMINOU E TEMPORIZADOR P TURBO 2 Sim RECARREGA TEMPORIZADOR P TURBO DECREMENTA TIMER Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER TRATA BOT O START STOP AC O J FOI EXEC Sim FILTRO TERMINOU TIMER ZERADO SETA FLAG DE TIMER LIGADO LED CARREGA CONTADORES DO TIMER 1 CARREGA TEMPORIZADOR P CONTAGEM DE 1s LIGA CONTADOR DO
274. OVLW 0XC3 CALL ESCREVE BSF RS OVLW GPS CALL ESCREVE OVLW W CALL ESCREVE OVLW CALL ESCREVE OVLW E CALL ESCREVE OVLW te A CALL ESCREVE OVLW nct CALL ESCREVE OVLW CALL ESCREVE OVLW CALL ESCREVE OVLW pM CALL ESCREVE ESC REVE MCMASTER SELECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LIN HA 1 COLUNA 3 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LET RAS DE PWM OFF Manual do Usu rio Sistema de Treinamento Microcontroladores PIC MCMASTER 185 CLRF DISPLAY LIMPA BARRAMENTO DE DADOS VARREDURA DOS BOT ES de ode o RM CAO x ook oe OR ko OK o A AA e ESTA ROTINA VERIFICA SE ALGUM BOT O EST PRESSIONADO E CASO AFIRMATIVO DESVIA PARA O TRATAMENTO DO MESMO VARRE CLRWDT LIMPA WATCHDOG TIMER VERIFICA ALGUM BOTAO PRESSIONADO VARRE_BOTOES LINHA_4 BSF GOTO BTFSC GOTO BIFSC GOTO BIFSC GOTO BIFSC GOTO BCF 5 1 BOTAO 0 BOTAO 1 TRATA BOTAO 1 BOTAO 2 TRATA BOTAO 2 TRATA BOTAO 0 BOTAO 3 TRATA BOTAO 3 LINHA 4 ATIVA A LINHA 4 DO TECLADO MATRICIAL DELAY PARA ESTABILIZA
275. OVWF AUX SALVA EM AUXILIAR OVLW OXOA SUBWF AUX W AUX 10d ATUALIZA FLAG DE CARRY OVLW 0X30 CARREGA WORK COM 30h BTFSC STATUS C RESULTADO POSITIVO UMA LETRA OVLW 0X37 SIM CARREGA WORK COM 37h N O WORK FICA COM 30h N MERO ADDWF AUX W SOMA O WORK AO AUXILIAR CONVERS O ASCII CALL ESCREVE ENVIA CARACTER AO DISPLAY LCD Kee eee TRANSMITE VALOR DA CONVERS O A D PELA USART X4 X Xa ok MOVF ADRESH W CARREGA WORK COM O VALOR DO A D BANK1 ALTERA P BANCO 1 DA RAM 55 TXSTA TRMT O BUFFER DE TX EST VAZIO GOTO 1 N O AGUARDA ESVAZIAR BANKO SIM VOLTA P BANCO 0 DA RAM MOVWF TXREG SALVA WORK EM TXREG INICIA TX FRA KR RARA INICIA UMA NOVA CONVERS O x HAHAHAH BSF ADCONO GO PEDE UMA NOVA CONVERS O A D GOTO LOOP VOLTA PARA LOOP de lt es de lt lt E o A 0 E Ko ook o coe A E TE E ES essc s cv oc pow ROTINA DE RECEPC O DE DADOS NA USART lt lt de 4o eoo O de E 0 eo E ck de ok ce Xe X E X ESTA ROTINA EXECUTADA TODA VEZ QUE UM NOVO DADO RECEBIDO PELA USART DADO RECEBIDO MOSTRADO NO LCD EM ASCII DADO RECEBIDO BCF RS SELECIONA O DISPLAY P COMANDO MOVLW OXCF COMANDO PARA POSICIONAR O CURSOR CALL ESCREVE LINHA 1 COLUNA 15 BSF RS SELECIONA O DISPLAY P DADOS MOVF RCREG W CARREGA DADO RECEBIDO NO WOR
276. O_TECLA EQU 200 FILTRO P EVITAR RUIDOS DOS BOT ES TURBO TECLA EQU 60 TEMPORIZADOR P TURBO DAS TECLAS END EEPROM H EQU 0x00 ENDERE O P LEITURA E GRAVA O END EEPROM L EQU 0x00 NA MEM RIA EEPROM SERIAL ck lt lt FR ELE CX OK RE ER e oe DECLARA O DOS FLAGs DE SOFTWARE RR EA ok AA A DEFINI O DE FLAGs AJUDA NA PROGRAMA O E ECONOMIZA MEM RIA RAM HDEF INE F ERRO FLAG 0 1 ERRO NA LEITURA DA EEPROM SERIAL de Ok DE X UK c o X E des cec 0 Xo O ke o ENTRADAS de Uk o Ke ces UNE E AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAC O E FUTURAS ALTERAC ES DO HARDWARE DEF INE BOTAO_0 PORTB 0 ESTADO DO BOT O 0 O lt LIBERADO 1 gt PRESSIONADO DEF INE BOTAO_1 PORTB 1 ESTADO DO BOT O 1 O lt LIBERADO 1 lt PRESSIONADO DEF INE BOTAO_2 PORTB 2 ESTADO DO BOT O 2 O lt LIBERADO 1 gt PRESSIONADO DEF INE BOTAO_3 PORTB 3 ESTADO DO BOT O 3 0 LIBERADO 1 gt PRESSIONADO A v o e ode O X e Ck 9 X e X oc dx i S
277. P ATUALIZAR LCD VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 3 TRATA_BOTAO_3 MOVF FILTRO_BOTOES F BTFSC STATUS Z GOTO VARRE DECFSZ FILTRO BOTOES F GOTO VARRE XXXAXXXTRECHO DO PROGRAMA PARA GRAVA_MEMORIA_PROGRAMA OVLW END MEM PROG OVWF ENDERECO HIGH OVLW END MEM PROG L OVWF ENDERECO LOW OVF VALOR PROG HIGH W OVWF DADO HIGH 00 OVF VALOR_PROG_LOW W OVWF DADO_LOW_00 CALL FLASH_PROGRAM_WRITE GRAVA_MEMORIA_DADOS MOVLW END MEM DADO MOVWF ENDERECO LOW MOVE VALOR DADOS W MOVWF DADO LOW 00 FILTRO J IGUAL A ZERO FUN O JA FOI EXECUTADA SIM VOLTA P VARREDURA DO TECLADO N O FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO GRAVAR DADOS DA RAM NA MEM RIA CARREGA ENDERECO ONDE O DADO SER SALVO CARREGA DADO A SER SALVO EM DADO HIGH 00 E DADO LOW 00 CHAMA ROTINA DE GRAVA O CARREGA ENDERECO ONDE O DADO SER SALVO CARREGA DADO A SER SALVO EM DADO LOW 00 210 CALL GOTO KA Wok ko E ck o 003 ERA A END DATA_EEPROM_WRITE VARRE CHAMA ROTINA DE GRAVA O VOLTA P VARREDURA DOS BOT ES
278. QUANTO O BOT O DA COLUNA 4 UTILIZADOS PARA LER O VALOR SALVO NA MEM RIA SERIAL APENAS OS BOT ES DA LINHA 4 EST O ATIVOS CONFIGURA ES PARA GRAVA O ON amp XT OSC DEFINI O DAS VARI VEIS DEFINI O DAS VARI VEIS INTERNAS DO PIC AA A xo LEITURA ESCRITA c ER X A E A ck o ko oko e ck oko A ok o E ko RR lt lt XA oo A oko oko ko ko ko ck ck ck ko ko d ko ok ko X MK ok CONFIG CP OFF CPD OFF amp DEBUG OFF LVP OFF amp WRT OFF amp BODEN OFF PWRTE ON amp d c soo lt lt eo xx o 07 ko oko ck X ok dk dx lt e coo X XA oc ook ck Ck Ok oko koc ke o dk ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0X20 POSI O INICIAL DA RAM FILTRO BOTOES FILTRO PARA RUIDOS TEMPO TURBO TEMPORIZADOR P TURBO DAS TECLAS TEMPO1 TEMPOO CONTADORES P DELAY FLAG FLAG DE USO GERAL AUX REGISTRADOR AUXILIAR DE USO GERAL ENDERECO H REGISTRADORES DE ENDERE O PARA ENDERECO L ACESSO MEM RIA EEPROM SERIAL EXTERNA MAPEADO NO BANCO 0 DA RAM BUFFER REGISTRADOR PARA LEITURA GRAVA O NA EEPROM SERIAL EXTER
279. QUEMA ELETRICO ECT 152 ELUXOGRAMA 4 de dn htt OR 0 tie Mim m tS an peka D oo Ro Ur bere eb ados sin 153 0 M IRR D 155 DICAS E COMENTARIOS 162 EXERC CIOS PROPOSTOS 3 hii 5 ect Ou UE AGR si RS alas ertet DGE LI E E E 162 CAP TULO 15 EXPERI NCIA 13 LEITURA DE JUMPERS VIA RC 163 OBJETIVO co le o Put E A EA AR EAEE 163 DESCRICAO ce Sn E E i a asr usu 163 RUD LUI RM E ts p tM AF ta Lotto ua E Ya iom 164 FLUXOGRAMA NM E 165 0 D E1 22 a PN 167 DIGCAS EGOMENTARIOS2 Su 174 EXERGICIOS PROPOSTOS Ucet ecd VEN ete TEN cei a a eo te Ri re cit 174 CAP TULO 16 EXPERI NCIA 14 MODULO 175 OBJETIVO a o Deed RM n A ret P TR Rn 175 DIZO OERE A ME 175 ESQUEMA 177 FLUXOGRAMA C 178 0 AA t er moe hene he ert 181 DICAS ECGOMENTARIOS enit eee 190 EXERCICIOS PROPOS TOS uuu u eed ap So 190 CAP TULO 17 EXPERI NCIA 15 ACESSO S MEM RIAS DE DADOS E PROGRAMA 191 CH 191 DESCRI O 191 ESQUEMA ELETRICO 192 ELUXOGRAMA ose UR a 193 0 Eu 198 DIGAS E COMENT RIOS 2 u n
280. QUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM d Ce Ck oe e oo REE ck o ooo ok Ck o ko ko de oo o ko Ok CE oe Ck AA E eo A X cA AR E amp FLAGS INTERNOS FR e ke eo o X ck co GE ko e o ko ke ko A A We Ck ke R X AX ke 0e DEFINI O DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA de Seo ARA A ck oe s o ke GE Uk A A ko We OA 09 0 0 ke Xe CONSTANTES x X oe c X o Ok Ck CES es E Aes c e ge DEFINI O DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA dx CX che Cc we ecco X CES ck o ko ck CE hs oe dec ko X gt ENTRADAS E SDEFINE DEFINE DEFINE DEFINE ORG GOTO ORG INICIO CLRF LRE LRE LRE LRE BANK1 OVLW OVW 25 OVLW OVWF OVLW OVWF OVLW OVWE OVLW OVWF RETFIE BOTAO PORTB 0 LED PORT C LEDS PORT TD O TA 4 LINHA 4 PORT lt lt dd Sd e koX qe e ski M 0x00 INICIO lt lt eoe FE eo c oo se 0x04 PORTA PORTB PORTC PORTD PORTE B 001
281. R 41 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA y CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs HABILITA DISPLAY DA UNIDADE E LINHA 4 DO TECLADO MATRICIAL Y CARREGA CONTADOR COM VALOR MINIMO RECARREGA FILTRO DE DEBOUNCE Q 4 42 FIM FILTRO DEBOUNCE FIM FILTRO DEBOUNCE DECREMENTA CONTADOR INCREMENTA CONTADOR CONSULTA TABELA PARA ATUALIZAR DISPLAY DE 7 SEGMENTOS Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 43 e O VERS O 1 0 DATA 14 04 2003 XA EXE AX AAA AER AX Uoc o des de ARA E E SR OA AG NP E coke veo ooo ode ko Ck AE AA E 9 ko OX ok lt lt DESCRI O GERAL de ESE CE 0 AE oko OX SR DE ok ok UNIDADE PARA INCREMENTAR O VALOR E O DA COLUNA 1 PARA DECREMENTAR k k k 1 1 Pe CONFIGURA ES PARA GRAVA O d DE DE 8 deck RO AL MT E ER 000 E 3 CONFIG CP OFF amp _CPD_OFF amp DEBUG OFF LVP OFF amp OFF CONTADOR QUE UTILIZA DOIS BOT ES PARA INCREMENTAR E DECREMENTAR CONTROLADO PE
282. R F INCREMENTA O CONTADOR EM STEP MAX MOVE O VALOR M XIMO PARA W CONTADOR W SUBTRAI O VALOR DE W MIN DE CONTADOR STATUS C TESTA CARRY RESULTADO NEGATIVO MAIN SIM ENT O CONTA MAX N O ENT O CONTA gt MAX MAX CONTADOR ACERTA CONTADOR NO M XIMO POIS PASSOU DO VALOR BT1 BOT O 1 CONTINUA PRESSIONADO 1 SIM AGUARDA LIBERA O N O MAIN VOLTA AO LOOP PRINCIPAL ER A E ERE AA EEE lt lt FIM DO PROGRAMA Xe Oe Ge Ck ok CX Xo RE Ko e SO Oe E o ook lt lt ck END OBRIGAT RIO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 37 Dicas e Coment rios A rotina de delay recebe o argumento passado pelo WORK para determinar o delay que deve ser gerado no entanto o valor m ximo assumido pelo WORK 255 e conforme comentado o delay m ximo gerado de 256ms Como isto poss vel Acontece que a rotina foi escrita de forma que ela executada pelo menos uma vez Assim a rotina executa um delay de 1ms decrementa o argumento e quando este igual a zero retorna Por m quando o argumento passado pelo WORK zero ao primeiro decremento o argumento estoura e pula para 255 Como a condi o testada ap s o decremento e como ap s o decremento o valor do argumento 255 o delay continua a ser gerado por
283. RA DET E LEN LCD 45V RESET lt 10K ei 45V MC1 o o LIMCLR 2 RAO vss 21 rar RB7 fme RAS res 5 RA4 RB4 22 Linas RB3 5 45V 86 4 REO 35 Y REI 5 rez 2 VDD 20 vss RD6 22 AY osc1 RD5 E 141 osc2 RDA 27 Arco 2 4MHz ct RD2 7 RC2 RD 2 18 RC3 H2 29 Rc4 5V 655 PIC16F877A 5V 10K 10K AK 18 4 T 32768002 33pF _ 36V 2 I 2 1 1N4148 V 184148 9 9 9 m z z CJ4 CJ5 Clock 12C Data 2 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 263 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs x CONFIGURA FREQU NCIA DO CLOCK DO BARRAMENTO EM 100kHz HABILITA MODO MASTER N o TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT Sim LIMPA A RAM INICIALIZA DISPLAY Y MONTA TELA PRINCIPAL DO LCD 264 LIMPA WDT y CARREGA ENDEREGO DA LEITURA DA HORA l2C READ SALVA A HORA NA RAM CARREGA ENDEREGO DA LEITURA DOS MINUTOS l2C READ SALVA OS MINUTOS NA RAM CARREGA ENDEREGO DA LEITURA DOS SEGUNDOS l2C READ SALVA OS REGUNDOS NA RAM Y ATUALIZA A HORA NO DISPLAY LCD Manu
284. RA O BANCO 1 DA RAM CONFIGURA 1 0 DO PORTA CONFIGURA 1 0 DO PORTB CONFIGURA 1 0 DO PORTC CONFIGURA 1 0 DO PORTD CONFIGURA 1 0 DO PORTE DESLIGA COMPARADORES ANAL GICOS DESLIGA CONVERSORES A D PRESCALER 1 2 NO TMRO PULL UPS DESABILITADOS AS DEMAIS CONFG S O IRRELEVANTES TODAS AS INTERRUP ES DESLIGADAS RETORNA PARA O BANCO 0 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 35 BSF MOVLW MOVWF MOVLW MOVWF MAIN MOVLW MOVWF MAIN1 MOVF CALL BTFSC GOTO BTFSC GOTO DECFSZ GOTO MOVLW XORWF GOTO DECREMENTA MOVLW SUBWF MOVLW SUBWF BTFSC GOTO MOVLW MOVWF BTFSS GOTO r A DP RE EE ME NEL MC d MEE NE MI NE ES DSP UNIDADE HER E RA ER ERA ERA DISPLAY PORTD MIN CONTADOR E E ooo o ko X MULTIPLO TEMPO3 CONTADOR W DELAY BT1 INCREMENTA BT2 DECREMENTA TEMPO3 F MAIN1 DISPLAY PORTD F MAIN STEP CONTADOR F MIN CONTADOR W STATUS C MAIN MIN CONTADOR k k xk Ck Ko RR ko AE ok E INICIALIZA O DO HARDWARE ok k xk kx ck k xk x o ok Ok oko ko X ko doo d X A ATIVA DISPLAY DA UNIDADE ESTE PINO TAMB M UTILIZADO PARA ATIVAR A LINHA 4 DO TECLADO M
285. RATE ACERTA BAUD RATE 9600bps SELECIONA BANCO 0 DA RAM CONFIGURA USART HABILITA RX RECEPC O DE 8 BITS RECEPC O CONT NUA DESABILITA ADDRESS DETECT CONFIGURA CONVERSOR A D VELOCIDADE Fosc 8 242 CANAL 0 M DULO LIGADO AS INSTRU ES A SEGUIR FAZEM COM QUE O PROGRAMA TRAVE QUANDO HOUVER UM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT DESTA FORMA SEMPRE QUE O PIC LIGADO O PROGRAMA TRAVA AGUARDA UM ESTOURO DE WDT ISTO EVITA PROBLEMAS NO START UP DO PIC E COMECA NOVAMENTE BTFSC GOTO STATUS NOT TO ERA X RARE EXA AA INICIALIZA O DA RAM ck E RA AE A oe MH ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 MOVLW MOVWF LIMPA RAM CLRF INCF MOVF XORLW BTFSS GOTO 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA RAM 6 khoa ES A oko wo A gt 8 CONFIGURA ES INICIAIS DO DISPLAY ko oe de Xs ox 0 000008 o ES ox eoe ok ok oso A ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS BCF OVLW OVLW OVLW OVLW OVLW OVLW OVLW INICIALIZACAO DISPLAY RS 0x30 ESCREVE 3 DELAY MS 0x30 ESCREVE 0x30
286. RETORNA DA SUBROTINA ck AAA ko ko ko de E oko ko ok k ko ko NA MEM RIA DE DADOS DA MEM RIA DE PROGRAMA O DADO LIDO RETORNADO NOS REGISTRADORES DADO_HIGH_00 E DADO_LOW _00 O ENDERECO DEVE SER PASSADO PELOS REGIST ENDERECO_HIGH E ENDERECO_LOW MOVF BANKSEL MOVWF BANKSEL MOVF BANKSEL MOVWF BANKSEL BSF BSF PROGRAM_READ ENDERECO HIGH W EEADRH EEADRH ENDERECO LOW ENDERECO LOW W EEADR EEADR EECON1 EECON1 EEPGD EECON1 RD CARREGA NO WORK O ENDERE O DE DESTINO ALTERA P BANK DO REGISTRADOR EEADH SALVA ENDERECO EM EEADH ALTERA P BANK DO REGIST ENDERECO LOW CARREGA NO WORK O ENDERE O DE DESTINO ALTERA P BANK DO REGISTRADOR EEADR SALVA ENDERECO EM EEADR CARREGA ENDERE O NOS REGISTRADOS CORRETOS DO BANCO 2 DA RAM A PARTIR DOS REGISTRADORES DE USU RIO MAPEADOS NO BANCO 0 DA RAM ALTERA P BANK DO REGISTRADOR EECON1 APONTA P MEM RIA DE PROGRAMA HABILITA LEITURA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 205 NOP NOP OV OV RETURN e ck oe TF E E M QUINA E AGUARDA O ESTOURO DO WDT BANKSEL E BANKSEL OVWF BANKSEL E BANKSEL OVWF CONFIG CLR LR LR LR LR BAN OV OV OV OV OV OV OV OV OV BAN OVI OVI OVI OVI OVI OVI OVI O
287. RETORNO J EST FORMATADO PARA AS CONDI ES DE LIGA O DO DISPLAY AO PORTD a k zu g Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 45 e CONVERTE MOVF ANDLW ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW SF INICIO CLRF LRP LRP LRP LRP BANK1 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWE OVLW OVWE OVLW OVWE OVLW OVWF OVLW OVWF BANKO CONTADOR W B 00001111 PCL F FEDCBA 5 O O O non o o Ot o o o Ot O o o UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ UJ 0 0 0 0 0 0 deck ARA PORTA PORTB PORTC PORTD PORTE 00101111 TRISA 00001111 TRISB L0011001 TRISC 00000000 TRISD 00000000 TRISE 00000111 CMCON 00000111 DCON1 gt B 10000000 OPTION_REG B 00000000 INTCON TM e eo X A OR INICIO AX ko A A gt COLOCA CONTADOR EM W MASCA CONSI 00 UL 02 0
288. RF LRE LRE LRE LRE cl BANK1 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF PORTA PORTB PORTC PORTD PORTE 00101111 TRISA 00001111 TRISB L0011000 TRISC 00000000 TRISD 00000000 TRISE B 11011111 OPTION_REG LIMPA LIMPA LIMPA LIMPA LIMPA ALTERA CONFIG CONFIG CONFIG CONFIG CONFIG CONFIG PULL U 00000 U SFR A PORTA PORTB PORTC PORTD PORTE RA RA RA RA RA PARA O 1 0 1 0 1 0 1 0 1 0 E des E A ERA WA k ko SOFTWARE decode ko we Uk AR MICROCONTROLADOR E AS ROTINA INICIALIZA A BANCO 1 DA RAM DO DO DO DO DO RA OPTIONS Ps DESABILITA PO PO PO PO PO RTA RTB RTC RTD RTE DOS INTER NA BORDA DE SUBIDA DO RBO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 129 LIMPA RAM MOV MOV MOV MOV MOV MOV BAN KO B 00000000 INTCON B 00000111 CMCON B 00000111 ADCON1 AS INSTRUCOES A SEGUIR FAZEM COM RESET OU POWER UP MAS PASSE DIRETO SE O RESET FOR POR WDT TIMERO INCREM PELO CICLO DE M QUINA WDT 1 128 TIMER 1 1 CONFIGURA INTERRUP ES DESABILITADA TODAS AS INTERRUP ES DESLIGA
289. RIOS Er ER tte E RT c ER Y E 19 EXERC CIOS PROPOSTOS 1i s eile o tee tt eO eL E LEUR DOR E DEDE 19 CAP TULO 4 EXPERI NCIA 2 CONTADOR SIMPLIFICADO I u 20 OBJETIVO ss u ama EC 20 DESGRIGAO antec Te Nm IEEE EARN AM AE Me 20 ESQUEMA EL TRICO A e wd 21 FLUXOGRAMA codicia a E ds 22 CODIOO a DR TR 24 DICAS E GOMENTARIOS 5 tee 5 LEO LT On SS dai 28 EXERC CIOS PROPOSTOS sg eu eaa atti idet eet Let m ded me et 28 CAP TULO 5 EXPERI NCIA 3 PISCA tenente uu 29 OBJETIVO 2 5 li a Mc TEES 29 MUS UIS 29 ESQUEMA ELETRICO 5 5 beto D ates ete es tL pe e D ett te de E ei co DS 30 FLUXOGRAMA cota octets umi ed editt EP 31 CODIGO RIDERE ED 33 DICAS E COMENTARIOS cialis Geb ee eie ta HE Pete 38 EXERC CIOS PROPOSTOS xs ER S EO eee Rc REC EE edu e a ule ce RS o eU 38 CAP TULO 6 EXPERI NCIA 4 CONVERS O BCD PARA DISPLAYS DE 7 SEGMENTOS 39 OBJETIVO 2 ee ee 39 DESCRI O x7 rec A A s eie 39 ESQUEMA 41 FLUXOGRAMA 7 AOS 42 0 44 DICAS E COMENT RIOS mimi uc minus sassa lam us as sua a Sas sa 49 EXERC CIOS PROPOSTOS xs inn Eee op HE br D Dad lesser obe 49 CAP TULO 7 EXPERI NCIA 5 TIMER DE SEGUNDOS 7 7 7 50 Manual do Usu rio Desenvolvimento de Sistemas com Microcontroladores PIC MCMASTER I
290. S TD A c Ode x ck ode ooo DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO ENTRADA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 HDEFINE BOTAO1 PORTB 0 PORTA DO BOT O 1 gt PRESSIONADO 0 gt LIBERADO DEFINE BOTAO2 PORTB 1 PORTA DO BOT O 1 gt PRESSIONADO 0 gt LIBERADO e ERRE we AR AR A X A A SA DAS de Wu Eo e E 2 DEFINI O DE TODOS OS PINOS QUE SER O UTILIZADOS COMO SA DA RECOMENDAMOS TAMB M COMENTAR O SIGNIFICADO DE SEUS ESTADOS 0 a dE NE E RRA AR A RT HFDEFINE DSP UNIDADE PORTB 7 PINO DISPLAY DA UNIDADE 1 gt DISPLAY ATIVADO O gt DISPLAY DESATIVADO HFDEFINE LINHA 4 PORTB 7 PINO PARA ATIVAR LINHA 4 DO MATRICIAL 1 gt LINHA ATIVADA O LINHA DESATIVADA DEFINE LED PORTC O LED 0 DESLIGADO 1 gt LIGADO ck A eo 0k oko Ak X x VETOR SO 3k X ck 8 Hd 7k o0 DE RESET ks ks ks ck k k kx xk Xx ORG GOTO 0x00 INICIO d oou ce e E RO X X X Ck de OX oko 4 x IN CIO DA INTERRUP O de coke ko XO DE 000 DE TH de
291. S PODE DECREMENTAR PWM DO VENTILADOR SIM DECREMENTA INTENSIDADE VENT N O CARREGA INTENSIDADE VENT NO WORK CARREGA WORK EM mulplr CARREGA 50d EM mulcnd CHAMA ROTINA DE MULTIPLICA O ATUALIZA REGISTRADORES DO DUTY CYCLE DO M DULO CCP2 PWM DO VENTILADOR VOLTA P VARREDURA DOS BOTOES EORR O AO RU 2 AN ES TABELAS DE CONVERSAO P TEMPERATURA DO DIODO lt EE AA A cde ck o k ko ok Ck o ck co gt A A ko POSICIONA O INICIO DA TABELA EM 0X400 CONFIGURA RADIX EM DECIMAL ACERTA VALOR DO PCLATH CARREGA NO WORK PARTE BAIXA DO PC SOMA AO DESLOCAMENTO TEMPERATURA HOUVE ESTOURO SIM INCREMENTA PCLATH PARTE ALTA DO PC MOVE WORK P PCL PROVOCA UM SALTO DT 000 000 000 000 000 000 000 000 000 000 000 000 000 000 010 000 15 DT 000 000 000 000 000 000 000 000 000 000 000 000 000 000 001 001 31 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 299 002 002 003 003 004 004 005 005 006 006 007 007 008 008 009 009 010 010 011 011 012 012 013 013 014 014 015 015 016 016 017 017 018 018 019 019 020 020 021 021 022 022 023 023 023 024 024 025 025 026 026 027 027 028 028 029 029 030 030 031 031 032 032 033 033 034 034 035 035 036 036 037 037 038 038 039 039 040 040 041 041 042 042 043 043 044 044 045 045 046 046 047 047 048 048 049 049 050 050 051 051 052
292. SCREVE ESCREVE ESCREVE ESCREVE ESCREVE s ESCREVE Ux ESCREVE 6 ESCREVE ESCREVE est ESCREVE SE LECIONA O DISPLAY P COMANDOS COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 0 SE LECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE T CARGA x6us de gt lt che 0 0 ok ko BR X 7k koX oW 0 O x Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 171 DESCARGA CAPACITOR CLRWDT CLRF CONTADOR AD BANK1 BCF PINO_AD BANK0 BCF CAD MOVLW 3 CALL DELAY MS BANK1 BSF PINO_AD BANK0 co CAO A A X ESTE O A ck CX ck e X WX A ROTINA CONTA O TEMPO QUE O CAPAC LIMPA WATCHDOG TIMER ZERA O CONTADOR DE TEMPO DE CARGA DO CAPACITOR SELECIONA BANCO 1 DA RAM TRANSFORMA PINO EM SAIDA VOLTA P BANCO 0 DA RAM DESCARREGA O CAPACITOR CHAMA ROTINA DE DELAY 3ms TEMPO NECESS RIO P DESCARGA DO CAPACITOR SELECIONA BANCO 1 DA RAM TRANSFORMA PINO EM ENTRADA VOLTA P BANCO 0 DA RAM A o e OX Ok Ck oo oko ERA EA LOOP P ESPERAR CARGA DO CAPACITOR E Ch e EA C eo X E XA ck Ck ok A X 0k 3 ITOR LEVA PARA ATINGIR UM N VEL DE TENS O SUFICIENTE PARA QUE O MICROCONTROLADOR ENTENDA N VEL L GICO 1 NA ENTRADA TTL DO PINO RA5 CA
293. SCREVE ESCREVE VALOR NO LCD CLRF DISPLAY LIMPA BARRAMENTO DE DADOS GOTO VARRE VOLTA P VARREDURA DOS BOTOES TRATAMENTO DO BOTAO TRATA_BOTAO_1 DECFSZ FILTRO BOTOES F FIM DO FILTRO RUIDO GOTO VARRE N O VOLTA P VARRE SIM BOT O PRESSIONADO DECFSZ TEMPO TURBO F FIM DO TEMPO DE TURBO GOTO VARRE N O VOLTA P VARRE SIM OVLW TURBO TECLA OVWF TEMPO_TURBO RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS OVF INTENSIDADE_AQUE F BTESS STATUS Z PODE DECREMENTAR PWM DO AQUECEDOR DECF INTENSIDADE AQUE F SIM DECREMENTA INTENSIDADE AQUE N O OVF INTENSIDADE AQUE W CARREGA INTENSIDADE AQUE NO WORK Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 297 MOVWF MOVLW MOVWF CALL SWAPF ANDLW IORLW RRE RRE RRE OVW RRF OVW Tj 1 OVF CALL CLRF BCF MOVLW CALL BSF MOVF ADDLW CALL MOVF ADDLW CALL MOVF ADDLW CALL CLRF GOTO mulplr CARREGA WORK EM mulplr 0 mulcnd CARREGA 10d EM mulcnd mpy F CHAMA ROTINA DE MULTIPLICACAO L byte W B 00110000 B 00001111 H_byte F L_byte F H_byte F CCP1CON L byte W CCPR1L ATUALIZA REGISTRADORES DO DUTY CYCLE DO M DULO CCP1 PWM DO
294. SO O CAPACITOR DEMORE MAIS DO QUE 256 CICLOS DESTE LOOP PARA CARREGAR A ROTINA DESVIA PARA UMA O LOOP DA ROTINA DE 6us CRISTAL LOOP CAD INCFSZ CONTADOR AD F GOTO 42 GOTO SATURACAO BTFSS CAD LOOP_CAD GOTO MOSTRA_CONTADOR de Ck c Xe ok o we oA A oo de E X A Y ROTINA DE SATURA O DE 4MHz INCREM CONTADOR E VERIFICA ESTOURO N O HOUVE ESTOURO PULA 1 INSTRU O HOUVE ESTOURO PULA P SATURA O CAPACITOR J CARREGOU N O VOLTA P LOOP CAD SIM MOSTRA TEMPO DE CARGA De 2 A NE UE dL E MEE ME NM NE E IE MEME EE MOSTRA O TEMPO DE CARGA DO CAPACITOR NO LCD X de Ck ok RR e C ko o AO X 0 X ESTA ROTINA MOSTRA O TEMPO DE CARGA DO CAPACITOR HAXADECIMAL NO LCD CASO O CAPACITOR N O TENHA SE CARR UM VALOR M XIMO PARA O TEMPO DE CA SATURACAO MOVLW OXFF MOVWF CONTADOR_AD MOSTRA_CONTADOR MOVLW OXCA r CALL ESCREVE BSF RS CONTADOR AD W ANDLW B 00001111 r MOVWF AUX 0 MOVLW SUBWF AUX W MOVLW 0 BTFSC STATUS C MOVLW 0X37 ADDWF AUX W CALL ESCREVE EGADO A ROTINA DE SATURA O GARANTE RGA OxFF SATURA O CONTADOR CAPACITOR CARREGOU COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 10 SELECIONA O DISPLAY P DADOS INVERTE NIBLE DO CONTADOR AD MASCARA BITS MAIS S
295. TADA GOTO VARRE SIM VOLTA P VARREDURA DO TECLADO N O DECFSZ FILTRO BOTOES F FIM DO FILTRO RUIDO GOTO VARRE N O VOLTA P VARRE SIM BOT O PRESSIONADO OS COMANDOS A SEGUIR S O PARA ESCREVER A FRASE RELACIONADA AO BOT O 3 CLRF TEC_MATRICIAL DESATIVA TODAS AS LINHAS DO TECLADO BCF RS SELECIONA O DISPLAY P COMANDOS MOVLW 0x01 CALL ESCREVE COMANDO P LIMPAR A TELA MOVLW 1 CALL DELAY MS DELAY DE 1MS MOVLW 0xc8 COMANDO PARA POSICIONAR O CURSOR CALL ESCREVE LINHA 1 COLUNA 8 BSF RS SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE TECLA 3 OVLW TTS CALL ESCREVE OVLW ES CALL ESCREVE OVLW dod CALL ESCREVE OVLW pet CALL ESCREVE OVLW CALL ESCREVE OVLW ers CALL ESCREVE OVLW 37 CALL ESCREVE CLRF DISPLAY LIMPA BARRAMENTO DE DADOS BSF TELA PRINCIPAL SETA FLAG P MOSTRAR TELA PRINCIPAL GOTO VARRE VOLTA P VARREDURA DOS BOT ES RH X ck E CR oko xo X A ck ck LO FIM DO PROGRAMA E E EEC AA o 07k ok e 0k X ok o E ko ko ko ok Ck X END FIM DO PROGRAMA 134 Dicas e Coment rios Apesar da estrutura do sistema ficar muito simples com a implementac o da rotina ESCREVE nunca se deve esquecer de confirmar o estado da sa da RS define comando ou dado antes de utiliz la Notar que para
296. TAMENTO DO BOT O CHAMADA VARRE CLRWDT BSF GOTO BTFSC GOTO BTFSC GOTO BTFSC GOTO BTFSC GOTO BCF MOVLW MOVWF BTFSS GOTO CALL GOTO LINHA 4 5 1 BOTAO_0 TRATA_BOTAO_0 BOTAO_1 TRATA_BOTAO_1 BOTAO_2 TRATA BOTAO 2 BOTAO 3 TRATA BOTAO 3 LINHA 4 FILTRO TECLA FILTRO BOTOES TELA PRINCIPAL VARRE LIMPA WATCHDOG TIMER ATIVA BOT ES DA LINHA 4 DELAY PARA ESTABILIZA O E LEITURA DO TECLADO 0 BOT O 0 EST PRESSIONADO SIM PULA P TRATA BOTAO 0 N O 0 BOT O 1 EST PRESSIONADO SIM PULA P TRATA BOTAO 1 N O 0 BOT O 2 EST PRESSIONADO SIM PULA P TRATA BOTAO 2 N O O BOT O 3 EST PRESSIONADO SIM PULA P TRATA BOTAO 3 N O DESATIVA BOT ES DA LINHA 4 CARREGA NO WORK O VALOR DE FILTRO TECLA SALVA EM FILTRO BOTOES RECARREGA FILTRO P EVITAR RUIDOS DEVE MOSTRAR TELA PRINCIPAL N O VOLTA P VARRE SIM MOSTRA TELA PRINCIPAL VARRE VOLTA PARA VARRER TECLADO ko kn oe o de X oA ck X CK oko X X Ok 2R amp SU SE TRATAMENTO DOS BOT ES CK oko Xo AR RX TRATAMENTO DO BOTAO 0
297. TAR lt A ER 4 ck ck ok c A AE AS ENTRADAS DEVEM SER ASSOCIADAS A FUTURAS ALTERA ES DO HARDWARE OMES PARA FACILITAR A PROGRAMA O E BOT O 0 RADO PRESSIONADO BOT O 1 RADO PRESSIONADO BOT O 2 RADO PRESSIONADO BOT O 3 RADO PRESSIONADO EX A deo X ck ks ok de odes 0X A NOMES PARA FACILITAR A PROGRAMA O E PINO PARA ATIVAR LINHA 4 DO TECLADO MATRICIAL H 1 V LINHA ATIVADA 0 LINHA DESATIVADA PORT LIGADO AOS LEDS LED CORRESPONDENTE AO BOT O 0 lt LED 0 lt LED lt LED 0 lt LED lt LED 0 lt LED lt LED 0 lt LED lt LEDS 0 gt LEDS LIGADO DESLIGADO LED CORRESPONDENTE AO BOT O 1 LIGADO DESLIGADO LED CORRESPONDENTE AO BOT O 2 LIGADO DESLIGADO LED CORRESPONDENTE AO BOT O 3 LIGADO DESLIGADO PINO PARA ATIVAR GRUPO DE 8 LEDS ATIVADOS DESATIVADOS SA DA PARA BUZZER E E A FAR ck oe VETOR DE RESET DO MICROCONTROLADOR 2 A A 0k AE RA AA lt lt POSI O INICIAL PARA EXECU O DO PROGRAMA Manu
298. TE VA TU TE LTRO BOTOES F RRE PO TURBO F RRE RBO TECLA PO TURBO 6 NEL E NE WE MEN NEL DEL INICIA CONVERS O A D EXECUTADA APENAS UMA VEZ HABILITA FLAG GLOBAL DAS INTERRUPCOES LIMPA WATCHDOG TIMER DEVE MOSTRAR RPS NO LCD SIM CHAMA ROTINA P ATUALIZAR RPS N O DEVE MOSTRAR A TEMP NO LCD SIM CHAMA ROTINA P ATUALIZAR TEMP N O ATIVA LINHA 4 DO TECLADO MATRICIAL DELAY PARA ESTABILIZACAO E LEITURA DO TECLADO O BOT O 0 EST PRESSIONADO SIM PULA P TRATA_BOTAO_0 O BOT O 1 EST PRESSIONADO SIM PULA P TRATA BOTAO 1 O BOT O 2 EST PRESSIONADO SIM PULA P TRATA BOTAO 2 O BOT O 3 EST PRESSIONADO SIM PULA P TRATA BOTAO 3 DESATIVA LINHA 4 DO TECLADO MATRICIAL CARREGA NO WORK O VALOR DE FILTRO TECLA SALVA EM FILTRO BOTOES RECARREGA FILTRO P EVITAR RUIDOS CARREGA TEMPO DO TURBO DAS TECLAS COM 1 IGNORA O TURBO A PRIMEIRA VEZ QUE A TECLA PRESSIONADA VOLTA PARA VARRER TECLADO Kok ko ke dk oko FAR ck 0 TRATAMENTO DOS BOT ES 2 E A A ook BR OX TRATAMENTO DO BOTAO 0
299. TE CLRWDT DECFSZ TE GOTO 2 DECFSZ TE GOTO 6 RETURN 01 0 PO0 PO0 F PO1 F DE RT 7 8 Xo MT RB ROTINA DE ESCRITA PINO P LEITURA DO RC 0 FORCA A DESCARGA DO CAPACITOR 1 LIBERA A CARGA DO CAPACITOR PINO P LEITURA DO CONV A D 0 CAPACITOR DESCARREGADO 1 CAPACITOR CARREGADO Rd E A AX E ko A oo 0 A Re SA DAS Ck de E EX ck oe A E E 3 NOMES PARA FACILITAR A PROGRAMA O E BARRAMENTO DE DADOS DO DISPLAY INDICA P DISPLAY UM DADO OU COMANDO 1 DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE SUBIDA dee SAO O kel sk E 3 ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGI O DESTINADA AS ROTINAS SEGUINTES lt ks ck ok ck k k xk XxX xk Xx IA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS LIMPA WDT PERDE TEMPO FIM DE TEMPOO N O VOLTA 2 INSTRU ES SIM PASSOU SE 1MS FIM DE TEMPO1 N O VOLTA 6 INSTRU ES SIM RETORNA Ho ks 6 ee E Ce de E DE UM CARACTER NO DISPLAY cde des ces ce CO deo ecce ESTA ROTINA ENVIA UM
300. TMRO LIMPA FLAG DA INTERRUPGAO CHECA BOT O O BOT O PRESS REINICIA FILTRO 1 1 1 1 1 1 1 1 LIMPA FLAG DE i BOT O PRESSIONADO FILTRO i 1 1 1 1 1 1 1 1 1 1 1 TERMINOU MARCA FLAG DE BOT O PRESSIONADO CHECA BOT O 1 CHECA BOT O 2 CHECA BOT O 3 ATUALIZA LEDS CONFORME FLAGS DOS BOTOES INICIALIZA TMR2 COM 255d CONSULTA TABELA DE FREQ NCIA CONFORME BOTOES PRESSIONADOS DESLIGA INTERRUP O DE TMR2 INICIALIZA TIMER 2 Y DESLIGA SA DA LIGA INTERRUP O Ren DE TIMER 2 FIM INTERRUP O Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER e O ge e 3E x EXEMPLO DE C DIGO PARA UTILIZA O COM O MCMASTER EXPERI NCIA 8 BOT ES LEDS E BUZZER x x xk mS VERS O 1 0 por DATA 14 04 2003 x o x 5 x EC ko o A oko Ck ko oo ko Ck ck o Ck o ko ook E ko ko ko X Ex DESCRI O GERAL We Wees KU CAS DO Ok oko coe E oko Co e
301. TRA A HORA ATUAL NO LCD LOOP CLRWDT LE RELOGIO RTC OVLW END HORA OVWF ENDERECO CALL I2C READ BTFSC ERRO GOTO 3 OVF BUFFER W OVWI HORA 11 OVLW MINUTO OVWF ENDERECO CALL I2C READ BTFSC ERRO GOTO 3 OVF BUFFER W OVWF MINUTO OVLW SEGUNDO OVWF ENDERECO CALL I2C READ BTFSC F_ERRO GOTO 43 OVF BUFFER W OVWF SEGUNDO MOSTRA HORA NO LCD BCF RS OVLW 0xc4 CALL ESCREVE BSF RS SWAPF HORA W ANDLW B 00000011 ADDLW 0x30 CALL ESCREVE MOVF HORA W ANDLW B 00001111 ADDLW 0x30 CALL ESCREVE MOVLW E CALL ESCREVE SWAPF MINUTO W ANDLW B 00001111 ADDLW 0x30 CALL ESCREVE MOVF MINUTO W ANDLW B 00001111 ADDLW 0x30 CALL ESCREVE MOVLW d CALL ESCREVE SWAPF SEGUNDO W LIMPA WATCHDOG TIMER CARREGA ENDERECO DA HORA CHAMA ROTINA DE LEITURA ATUALIZA RAM COM O VALOR LIDO CARREGA ENDERECO DO MINUTO CHAMA ROTINA DE LEITURA ATUALIZA RAM COM O VALOR LIDO CARREGA ENDERECO DO SEGUNDO CHAMA ROTINA DE LEITURA ATUALIZA RAM COM O VALOR LIDO SELECIONA O DISPLAY P COMANDO POSICIONA O CURSOR SELECIONA O DISPLAY P DADOS MASCARA A HORA ATUAL DEZENA CONVERTE EM ASCII ESCREVE A DEZENA DA HORA NO DISPLAY MASCARA A HORA ATUAL UNIDADE CONVERTE EM ASCII ESCREVE A UNIDADE DA HORA NO DISPLAY ENVIA AO LCD MASCARA O MINUTO ATUAL DEZENA CONVERTE EM ASCII ESCREVE A DEZENA DO MINUTO NO DISPL
302. TRA_RPS SETA FLAG P MOSTRAR VALOR DAS RPS DO VENTILADOR INT_TMR2_2 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 287 MOVF MOVWF BSF BSF ADRE TEMP ADCO MOST SH W ERATURA NO GO RA_TEMP Bock ERA X ko ok d X X X ox X o0 SA DA SALVA VALOR DA CONVERS O A D NA VARI VEL TEMPERATURA INICIA UMA NOVA CONVERSAO SETA FLAG P ATUALIZAR VALOR DA TEMPERATURA NO LCD Geo ko ko ok d X ko X DA INTERRUPCAO Bow Ck gt 0k o ok o RA ck ck O amp O Uk Ao ke XO RARA AR ANTES DE SAIR DA INTERRUPC O O CONTEXTO SALVO NO IN CIO DEVE SER RECUPERADO PARA QUE O PROGRAMA N O SOFRA ALTERA ES INDESEJADAS SAI INT OVF OVWF OVF OVWF SWAPF OVWF SWAPF SWAPF RETFIE PCLA PCLA FSR _ FSR TH TEMP W TH TEMP W STATUS TEMP W STATUS WORK TEMP F WORK TEMP W d Ck Wok ku deo ko wok X X RECUPERA REG RECUPERA REG RECUPERA REG RECUPERA REG RETORNA DA INTERRUPCAO HABILITA GIE PCLATH PAGINA O FSR END INDIRETO STATUS WORK D dS dE E UE NE EC XR JEJE GE 96 IE NEM q ROTINA DE DIVIS O de ovo bo ko oe Ko deseo 00 E s X X oc
303. U 308 A il A ps A waw e O A A pa a qua la ln lo O A ia A A el sis wao pr a 5V SENSOR DE TEMPERATURA VENTILADOR iov 12V R2 1 r D g D2 X gt 1n4148 Y 9 t 1N4148 d T gt T 10k 330K xd R7 Bei zie I R9 BC337 E Er ik IK 8 1K y Pt 1 1 o RC1 ML 1 M 1K R18 Ru ple Q6 ES p 470R LM431 ADJ 2 Ala 1uF 16V 5 I E I 1 E AA PAO e a ha dd be AQUECEDOR Fev L MPADA 12V 10R R19 8 68R 5W o R5 LP1 lt i BC337 1K BC337 02 4 1K Da m RC5 R10 Q5 R16 Qt TAC METRO CONECTOR DE EXPANS O E 45V CN2 n i i gt b RB6 gt Q3 b 2 gt RB4 exp RA3 mmm gt RB3 R15 150R R1 E 8 W E mam gt RA4 mam RB2 12V 45V 220R ni mmm RAS mmm gt RB1 E RPT38PT3F AAA mamm REO mm RBO 1 m SN RE1 1 Y Tus mam RE2 2 _ RDZ 49 SIR3815B3F BC337 wmm gt RD6 x 1K m mam 5 R17 Q4 m RD4 mmm RCO SRC7 NU S RC1 gt RC6 GNDA GND mm RC3 mam RC4 E mm RDO mm RD3 mm gt HD1 wmm Pb RD2 Manual do
304. U NCIA DO CLOCK DO BARRAMENTO EM 100kHz Y HABILITA MODO MASTER TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT Sim LIMPA A RAM Y INICIALIZA DISPLAY Y MONTA TELA PRINCIPAL DO LCD TECLADO 4x4 LINHA COLUNA Y ATIVA UMA DAS LINHAS 250 LIMPA WDT Sim N o ATIVA A PR XIMA LINHA LINHA 1 sum ATIVA CARREGA N MERO DA LINHA NO WORK W 1 LINHA 2 pu ATIVA CARREGA N MERO DA LINHA NO WORK W 2 LINHA 3 Sim ATIVA LINHA 4 ATIVA Dooe CARREGA N MERO DA LINHA NO WORK W 3 CARREGA N MERO DA LINHA NO WORK W 4 SALVA O N EMRO DA LINHA ATIVA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER CARREGA WORK COM 2 ALGUM BOT O DA COLUNA 2 PRESS RECARREGA FILTRO DE DEBOUNCE Y ATUALIZA DISPLAY LCD 252 SALVA O N MERO DA COLUNA FIM DEBOUNCE DA TECLA ATUALIZA O N MERO DA LINHA E DA COLUNA NO DISPLAY LCD Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 253 e O We SAO ko DE ke Se E Xe dese ok DO EXEMPLO DE C DIGO PARA UTILIZAC O COM O MCMASTER 8 EXPERI NCIA 18 TECLADO MATRICIAL 4 X ke ko dde oe
305. UALIZA OS SEGMENTOS ESCREVENDO O VALOR DO D GITO CORRETO PORTD SAI INT TMRO BCF INTCON TOIF LIMPA FLAG DA INTERRUP O DE TMRO GOTO SAI INT PULA P SAI INT lt lt lt kk A E Ck kk Xx ko ck ok e oko ko ok XxX Xx X ROT TRATAMENTO DA INTERRUP O DE TIMER 1 ke lt Ru ck ko BR Uk ko k ES ox SE ROTINA PARA EXECUTAR AS A ES NECESS RIAS SEMPRE QUE A INTERRUP O ACONTECE NESTE CASO A INTERRUP O ESTA SENDO UTILIZADA PARA CONTAR O TEMPO DO TEMPORIZADOR POR ISSO CADA VEZ QUE ELA ACONTECER O VALOR DO TIMER SER DECREMENTADO CASO J TENHA SE PASSADO 1SEG PERIODO DA INTERRUP O 1US CICLO DE MAQUINA 8 PRESCALER DO TMR1 62500 CONTAGEM DO TMR1 0 5SEG INT TMR1 MOVLW 1 HIGH MOVWF MOVLW 1 LOW MOVWE TMRIL RECARREGA CONTADOR DO TMR1 PERIODICIDADE DE 0 5SEG DECFSZ DIVISOR TMR1 F PASSOU SE 1 SEGUNDO GOTO SAI INT TMR1 N O ENT O SAI DA INTERRUP O Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 111 MOVLW MOVWF CALL OVF BTFSS GOTO BCF BCF SAI INT TMR1 BCF 2 DIVISOR_TMR1 DECREMENTA TIMER UNIDADE F STATUS Z SAI INT DEZENA F STATUS Z SAI_INT_TMR C
306. UE DEVEM SER ACESOS E APAGADOS NO DISPLAY TABELA DISPLAY 7 SEG ANDLW ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW x 00001111 PCL F 1 O O HQ D Ot O O UJ UJ UJ UJ UJ UJ UJ UJ 20000000 1101111 B 00000000 B 00000000 B 00000000 B 00000000 B 00000000 B 00000000 lt lt lt ee oo ko XA oW EXECUTA MASCARA P EVITAR PULOS ERRADOS SOMA DESLOCAMENTO AO PROGRAM COUNTER GERANDO UMA TABELA DO TIPO CASE POSI O RELATIVA AOS SEGMENTOS H 0 I 1 OO Q NN ES D z A BLANK BLANK BLANK BLANK BLANK HJ gt ON Q N F O T lt ches deo de e TABELA PARA ACIONAMENTO DOS DISPLAYS 112 ROTINA PARA CONVERTER O D GITO ATUAL EM RELA O AO PORT QUE DEVE SER LIGADO PARA ACIONAMENTO DO DISPLAY RELACIONADO TABELA_MUX ADDWF PCL F SOMA DESLOCAMENTO AO PROGRAM COUNTER GERANDO UMA TABELA DO TIPO CASE RETLW 10000000 0 ACIONA DISPLAY 0 RETLW B 01000000 1 ACIONA DISPLAY 1 RETLW 00100000 2 ACIONA DISPLAY 2 RETLW B 00010000 2 ACIONA DISPLAY 3 Boc XO RU 4 ok ck ok ck ck
307. UM ESTOURO DE WDT E COMECA NOVAMENTE ISTO EVITA PROBLEMAS NO START UP DO PIC BTFSC STATUS NOT TO RESET POR ESTOURO DE WATCHDOG TIMER GOTO N O AGUARDA ESTOURO DO WDT SIM Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 229 LIMPA RAM A A Ao A AR ks X ck INICIALIZA O DA RAM do ERA A RE o CK AXE AER A ko X AXE ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 MOVLW MOVWF MOVF XORLW BTFSS GOTO 0x20 FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA_RAM ck ck ck oe Ok XX ko xA X ko 0X CONFIGURACOES AE CX E A ER o AA FE RA ERA CO AR RT ck 5 ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS INICIALIZACAO DISPLAY LE ME BCF OVLW CALL OVLW CALL OVLW CALL OVLW CALL OVLW CALL OVLW CALL OVLW CALL OVLW CALL OVLW BSF RS 0x30 ESCREVE 23 DELAY_MS 0x30 ESCREVE 0x30 ESCREVE B 00111000 ESCREVE B 00000001 ESCREVE gd DELAY_MS B 00001100 ESCREVE B 00000110 ESCREVE RS NE NEC UE WE DES NES INICIALIZA
308. UMULADOR DE 16 BITS UTILIZADO L byte P RETORNAR O VALOR DA ROTINA DE MULTIPLICA O mulplr OPERADOR P ROTINA DE MUTIPLICACAO mulcnd OPERADOR P ROTINA DE MUTIPLICACAO TEMPERATURA TEMPERATURA DO DIODO EM UNIDADES DE A D TEMP CELSIUS TEMPERATURA DO DIODO J CONVERTIDO PARA GRAUS CELSIUS FILTRO BOTOES FILTRO P DEBOUNCE DOS BOTOOES TEMPO TURBO TEMPORIZADOR P TUBO DO TECLADO TEMPO 5 TEMPORIZADOR DE 1 SEGUNDO CONT VENT HIGH CONT VENT LOW CONTADORES PARA ROTA O DO VENTILADOR FLAG FLAG DE USO GERAL WORK TEMP STATUS TEMP PCLATH TEMP FSR TEMP REGISTRADORES UTILIZADOS P SALVAR O CONTEXTO DURANTE AS INTERRUPC ES ENDC de Ck o eoe Ao eoe O E Ke E ce X OK e GS oku oe 00 AS ke c DEFINI O DAS VARI VEIS INTERNAS DO PIC de Wo hk E S S ke RA AER Xv Xs cA RA O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITA O P16F877A INC MICROCONTROLADOR UTILIZADO 1 EL EI ZEE E NE XD JE DE NE aR E NE E NE GEM E XD UE NM DEFINIC O DOS BANCOS DE RAM lt lt oko oe o e x o ck Ck Ko Ck oko X X oko e X Ck Ok de des Ak ko eo e e deo OS PSEUDOS COMANDOS BANKO
309. URSOR BSF RS SELECIONA O DISPLAY P DADOS OVLW a aT CALL ESCREVE APAGA O CARACTER DO N MERO DA LINHA CLRF DISPLAY LIMPA BARRAMENTO DE DADOS MOVF LINHA ATIVA W MOVWF PORTB CARREGA PORTB COM VALOR DE LINHA_ATIVA ATIVA A LINHA CORRESPONDENTE GOTO LOOP VOLTA AO LOOP We CK ceo de 9 ES de OK oko E ode Xo XX E ROTINA PARA TRATAMENTO DAS COLUNAS DO TECLADO 4x4 Ok Ck Ck Ck Ok X Ok Ck Ck Ck Ok Ck Ok Ok X Ok Ok Ck Ck ko TRATA COLUNAS MOVWF NUM COLUNA SALVA O N MERO DA COLUNA EM QUE ALGUMA TECLA EST PRESSIONADA MOVF FILTRO F BIESC STATUS Z TECLA J FOI TRATADA GOTO 3 SIM PULA FILTRO DE DEBOUNCE N O DECFSZ FILTRO F FIM DO FILTRO GOTO LOOP VOLTA AO LOOP SIM CLRF PORTB DESATIVA TODOS OS DISPLAYS DE 7 SEGMENTOS RS SELECIONA O DISPLAY P COMANDOS MOVLW 0XC6 CALL ESCREVE POSICIONA O CURSOR BSF RS SELECIONA O DISPLAY P DADOS MOVLW 0x30 ADDWF NUM LINHA W CARREGA W CO N MERO DA LINHA EM ASCII CALL ESCREVE ENVIA N MERO DA COLUNA AO LCD BCF RS SELECIONA O DISPLAY P COMANDOS MOVLW OXCF CALL ESCREVE POSICIONA O CURSOR BSF RS SELECIONA O DISPLAY P DADOS MOVLW 0X30 ADDWF NUM_COLUNA W CARREGA W CO N MERO DA COLUNA EM ASCII CALL ESCREVE ENVIA N MERO DA COLUNA AO LCD CLRF DISPLAY LIMPA
310. Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 309 Cap tulo 26 Certicado de Garantia PARAB NS VOC ACABA DE ADQUIRIR O KIT McMASTER PARA MICROCONTROLADORES PIC DA LABTOOLS 1 Tempo de Garantia A Labtools garante contra defeitos de fabricac o durante 4 meses para m o de obra de conserto O prazo de garantia comeca a ser contado a partir da emiss o do pedido de venda 2 Condi es de Garantia Durante o prazo coberto pela garantia Labtools far o reparo do defeito apresentado ou substituir o produto se isso for necess rio Os produtos dever o ser encaminhados Labtools devidamente embalados por conta e risco do comprador e acompanhados deste Certificado de Garantia sem emendas ou rasuras e da respectiva Nota Fiscal de aquisi o O atendimento para reparos dos defeitos nos produtos cobertos por este Certificado de Garantia ser feito somente na Labtools ficando portanto exclu do o atendimento domiciliar 3 Exclus es de Garantia Est o exclu dos da garantia os defeitos provenientes de Altera es do produto ou dos equipamentos Utiliza o incorreta do produto ou dos equipamentos Queda raio inc ndio ou descarga el trica Manuten o efetuada por pessoal n o credenciado pela Labtools Obs Todas as caracter sticas de funcionamento dos produtos Labtools est o em seus respectivos manuais 4 Limita o de Responsabilidade A presente garant
311. VEIS INTERNAS DO PIC de C ce Xe Ok ck de Xo oo 0 O ARQUIVO DE DEFINI ES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITA O P16F877A INC MICROCONTROLADOR UTILIZADO 1 lt Ok k Xk Xk ko Xk XxX k k Xk XxX k k xk k k ko XxX Xx X DEFINIC O DOS BANCOS DE RAM ck ck k XxX ko X xk k k ck k X XxX XxX XxX XxX x OS PSEUDOS COMANDOS BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR ENTRE OS BANCOS DE MEM RIA SDEFINE BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM SDEFINE BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM d Ck o ok EE de oe ok A o XX ck TT gt CONSTANTES INTERNAS 6 ko de 0X o6 ok XA e de A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 239 ESTE PROGRAMA N O UTILIZA NENHUMA CONSTANTE WM NOE EX NE MC IEEE IE do E WEGE
312. VI OVI F F E F F K1 KO EEDATH EEDATH W DADO_HIGH_00 DADO_HIGH_00 EEDATA W DADO_LOW_00 DADO_LOW_00 ALTERA P BANK DO REGISTRADOR EEDATH SALVA DADO LIDO NO WORK ALTERA P BANK DO REGIST DADO HIGH SALVA DADO LIDO EM DADO HIGH 00 ALTERA P BANK DO REGISTRADOR EEDATA 00 SALVA DADO LIDO NO WORK ALTERA P BANK DO REGIST DADO LOW 00 SALVA DADO LIDO EM DADO LOW 00 SALVA DADO LIDO NOS REGISTRADORES DE USU RIO MAPEADOS NO BANCO 0 DA RAM A PARTIR DOS REGISTRADORES UTILIZADOS PELO MICROCONTROLADOR MAPEADOS NO BANCO 2 DA RAM RETORNA 3k cde ce o RA OK REX XA AA A XA CONFIGURA ES INICIAIS DE HARDWARE E SOFTWARE ck RR e Xo NESTA ROTINA S O INICIALIZADAS AS PORTAS DE 1 0 DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A PORTA PORTB PORTC PORTD PORTE 00101111 TRISA 00001111 TRISB L0011000 TRISC 00000000 TRISD 00000000 TRISE B 11011111 OPTION_REG B 00000000 INTCON B 00000111 CMCON B 00000111 ADCON1 LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PARA O BANCO CONFIGURA 1 0 DO PO CONFIGURA I O DO PO CONFIGURA I O DO PO CONFIGURA I O DO PO CONFI
313. W ADRESH W AJUSTE DECIMAL RS 33 ESCREVE RS CENTENA W 0x30 ESCREVE DEZENA W 0x30 ESCREVE UNIDADE W 0x30 ESCREVE CARREGA WORK COM VALOR DO A D CHAMA ROTINA DE AJUSTE DECIMAL SELECIONA O DISPLAY P COMANDO COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 3 SELECIONA O DISPLAY P DADOS CONVERTE BCD DA CENTENA EM ASCII ENVIA AO LCD CONVERTE BCD DA DEZENA EM ASCII ENVIA AO LCD CONVERTE BCD DA UNIDADE EM ASCII ENVIA AO LCD MOSTRA VALOR DA CONVERS O A D EM HEXADECIMAL BCF MOV CALI BSF SWAPF LW MOVWF AND MOV SUBWF MOV LW LW LW BTFSC MOV LW RS 0xC8 ESCREVE RS ADRESH W B 00001111 AUX 0X0A AUX W 0X30 STATUS C 0X37 SELECIONA O DISPLAY P COMANDO COMANDO PARA POSICIONAR O CURSOR LINHA 1 COLUNA 8 SELECIONA O DISPLAY P DADOS INVERTE NIBLE DO ADRESH MASCARA BITS MAIS SIGNIFICATIVOS SALVA EM AUXILIAR AUX 10d ATUALIZA FLAG DE CARRY CARREGA WORK COM 30h RESULTADO POSITIVO UMA LETRA SIM CARREGA WORK COM 37h Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 245 N O WORK FICA COM 30h N MERO ADDWF AUX W SOMA O WORK AO AUXILIAR CONVERS O ASCII CALL ESCREVE ENVIA CARACTER AO DISPLAY LCD OVF ADRESH W CARREGA WORK COM ADRESH ANDLW 00001111 MASCARA BITS MAIS SIGNIFICATIVOS
314. W B 01101101 05 RETORNA S MBOLO CORRETO 5 RETLW B 01111101 06 RETORNA S MBOLO CORRETO 6 RETLW B 00000111 07 RETORNA S MBOLO CORRETO 7 RETLW B 01111111 08 RETORNA S MBOLO CORRETO 8 RETLW B 01101111 09 RETORNA S MBOLO CORRETO 9 RETLW B 01110111 10 RETORNA S MBOLO CORRETO A RETLW B 01111100 11 RETORNA S MBOLO CORRETO b RETLW B 00111001 12 RETORNA S MBOLO CORRETO C RETLW B 01011110 13 RETORNA S MBOLO CORRETO d RETLW B 01111001 14 RETORNA S MBOLO CORRETO E RETLW 01110001 15 RETORNA S MBOLO CORRETO F de TENE HATE RARE RE We oko 0 000 A AR r ROTINA DE LEITURA NA E2PRO X E CRE Moo e ck ko Ck AA deo ck ko ko A A X ok o E oko XA A A A A ESTA ROTINA L O BYTE DO ENDERECO PASSADO PELO W E RETORNA O VALOR EM W LE E2PROM MOVF ENDERECO W RECUPERA ENDERECO A SER LIDO BSF STATUS RP1 COMUTA PARA BANCO 2 DA RAM MOVWF EEADR SALVA O ENDERECO PARA LEITURA BSF STATUS RPO COMUTA PARA BANCO 3 DA RAM BCF EECON1 EEPGD APONTA PARA MEM RIA DE DADOS BSF EECON1 RD HABILITA LEITURA BCF STATUS RPO VOLTA PARA BANCO 2 DA RAM MOVE EEDATA W COLOCA DADO LIDO EM W BCF STATUS RP1 VOLTA PARA BANCO 0 DA RAM RETURN RETORNA de Wc we UA we ck bc ko E E A Os ok e ko Ok Os Ok Acc 0 3 F ROTINA DE ESCRIT
315. WF TEMPOO CARREGA TEMPOO P CONTAR 1MS CLRWDT LIMPA WDT PERDE TEMPO DECFSZ TEMPOO F FIM DE TEMPOO GOTO 2 N O VOLTA 2 INSTRUCOES SIM PASSOU SE 1MS DECFSZ FIM DE TEMPO GOTO 6 N O VOLTA 6 INSTRUCOES SIM RETURN RETORNA de ck AEREA E o ck o oes ck e XO Ok oe so VETOR DE RESET DO MICROCONTROLADOR AR o o MARA ck RAE 8 EE Ok OX POSI O INICIAL PARA EXECU O DO PROGRAMA ORG 0000 ENDERECO DO VETOR DE RESET GOTO CONFIG PULA PARA CONFIG DEVIDO A REGI O DESTINADA AS ROTINAS SEGUINTES ck HE OW o REE A 03e 0X8 gt lt ROTINA DE DELAY DE 1MS AT 256MS AE OW OK e co occ XXX ck o oe X O X de oh oe E X ck ko ko DE 00 e Ao Xs X AO dec ROTINA DE ESCRITA DE UM CARACTER NO DISPLAY E ko E E e oo c co ode 9 Uk oo ESTA ROTINA ENVIA UM CARACTER PARA O M DULO DE LCD O CARACTER A SER ESCRITO DEVE SER COLOCADO EM WORK W ANTES DE CHAMAR A ROTINA ESCREVE MOVWF DISPLAY ATUALIZA DISPLAY PORTD NOP PERDE 1US PAR
316. X E ck lt DESCRI O GERAL XK Ok ks k k k x x XK k xk xk x XK k xk x XK k xk xk BOT ES PARA INCREMENTAR E DECREMENTAR A A A X k kx k O VALOR ESTA VARI VEL EST LIMITADA PELAS O VALOR DO CONTADOR MOSTRADO NO DISPLAY DA CONFIGURA ES PARA GRAVA O SE ow TE MARX 0008 RO BM DE ode ROM RRA ERA 8 CPD OFF 8 _DEBUG_OFF 6 _LVP_OFF WRI_OFF R PERDIDO MESMO NO CASO DE RESET OM ko dk E o oW MS BODEN OFF amp AE RT deo 8 e A G de OX 0e LAR Odes Kv ME DEFINI O DOS NOMES E ENDERE OS E ELO SISTEMA CBLOCK 0x20 W TEMP STATUS TEMP CONTADOR FLAGS FILTROI FILTRO2 ENDERECO ENDC AENA DE REDIGITA O lt 16 877 gt 1 SDEFINE BANK1 BSF 51 SDEFINE BANKO BCF S1 VARI VEIS lt lt de de ok ck A gt o de OA ko deo ok Ck o do A DE TODAS AS VARI VEIS UTILIZADAS ENDERECO INICIAL DA MEM RIA DE USU RIO REGISTRADORES TEMPOR RIOS PARA INTERRUPCOES ESTAS VARI VEIS NEM SER O UTI
317. X Xx e ck 0k x X CEE oko X ok oko o A X AS SA DAS DEVEM SER ASSOCIADAS A FUTURAS HDEF INE HDEF INE HDEF INE ALTERAC ES DO HARDWARE DISPLAY PORTD RS PORTE O ENABLE PORTE 1 Xe RRA 8 NE OR VETOR DE RESE ENTENDIMENTO DO HARDWARE VAMOS DECLARAR ENTRADA A D DO POTENCI METRO lt ck E XA A ko ko ko doo X ok ko ok X X ok SA DAS ck EX e A ko ko ko de o Xx Xx kk ck oko ko NOMES PARA FACILITAR A PROGRAMA O E BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 lt DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA A ER CA de lt lt RT o o Sk T DO MICROCONTROLADOR m d E oo gt Oo Sk ko ck A 8 A ck POSI O INICIAL PARA EXECU O DO PROGRAMA ORG GOTO 0 0000 CONFIG H ck de A E d x ook ck ko Y ROTINA DE DEL ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGIAO DESTINADA AS ROTINAS SEGUINTES lt Xk k XxX XxX AY DE 1MS AT 256MS 142 w ck xk Xx k k XxX k X
318. X oes coke coe ck ck de ck X o E de X ko oko ROTINA DE DELAY Wo ck ok X AE ko E EE RE ooo EE CA A Ao ck A ESTA ROTINA AGUARDA TANTOS MILISEGUNDOS QUANTO O VALOR PASSADO POR W POR EXEMPLO SE W 200 ELA AGUARDAR 200 MILISEGUNDOS O DELAY PRINCIPAL DURA lms POIS POSSUI 4 INSTRU ES 405 E RODADO 250 VEZES TEMPO1 POR TANTO 250 4us lms O DELAY PRINCIPAL RODADO TAN TEMPO2 O QUAL INICIADO COM O VALOR PASSADO EM W TEMPO2 250 TEMPO1 TEMPO1 F TEMPO2 F AS VEZES QUANTO FOR O VALOR DE do Xo JE E Xo x xo s de INICIO lt lt lt ok ox X e x Se PORTA PORTB PORTC PORTD PORTE B 00101111 TRISA 00001111 TRISB L0011001 TRISC 00000000 TRISD 00000000 TRISE B 00000111 CMCON B 00000111 ADCON1 10000000 OPTION REG B 00000000 INTCON INICIA TEMPO 2 COM O VALOR PASSADO EM W ESTE DELAY DURA lms 4 250 DECREMENTA TEMPO1 ACABOU N O CONTINUA AGUARDANDO SIM DECREMENTA TEMPO2 ACABOU N O CONTINUA AGUARDANDO SIM ok E XS DO PROGRAMA wok 3 E Us sk LIMPA O PORTA LIMPA O PORTB LIMPA O PORTC LIMPA O PORTD LIMPA O PORTE ALTERA PA
319. Y CYCLE OS BOT ES ATIVOS S O O DA LINHA 4 we Mesmo DE E 0436 E cde RT 00000 800 DE ok ck O 4 oo X EX CONFIGURA ES PARA GRAVA O X o0 XO o ROM o ook cde ROM sk OX So aR CONFIG CP OFF amp _CPD_OFF amp DEBUG OFF LVP OFF amp _ OFF amp _BODEN_OFF PWRTE ON amp _WDT_ON amp XT OSC ck de oo Ck AA o ok ko Ck X ook o ck ko X d o Ck Xo Xo A OK de ko DEFINI O DAS VARI VEIS 8 RRA Ko Go Ck e CEA AA EE A ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 CBLOCK 0X20 POSI O INICIAL DA RAM FILTRO BOTOES FILTRO PARA RUIDOS TEMPOI TEMPOO CONTADORES P DELAY ENDC E E ko A AA Ck X e oko ck ko X Ak A A Ao de P DEFINI O DAS VARI VEIS INTERNAS DO PIC X Ee ces Wr E TE TR 3 E Mk ARQUIVO DE DEFINICOES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO P16F877A INC MICROCONTROLADOR UTILIZADO 1 de X cde ie PE ok o wk Ok oko Kk
320. a es cada vez mais os sistemas est o fazendo uso de t cnicas sonoras seja atrav s de simples bips ou por complexas melodias Para que os usu rios n o fiquem sem o uso deste recurso disponibilizou se tamb m um buzzer piezoel trico com oscilac o comandada diretamente pelo PIC tornando poss vel a criac o de sons diversos O microcontrolador deve ent o gerar atrav s do software uma onda quadrada capaz de excitar o buzzer Para gerar um simples beep pode se utilizar uma onda quadrada com freq ncia em torno de 650Hz e durac o aproximada de 100ms O buzzer est conectado ao pino RE2 do microcontrolador Mem ria E2PROM externa Al m da mem ria E2PROM interna do PIC o MCMASTER possui ainda uma mem ria externa do tipo serial modelo 24LC256 com 32Kbytes dispon veis para uso Esta mem ria est soquetada na placa possibilitando a sua substituic o por outros modelos compat veis com maior ou menor capacidade A comunica o com esta mem ria do tipo lC estando diretamente ligada os pinos do PIC respons veis por este padr o de comunicac o Assim PIC Mem ria RC3 Clock SCL pino 6 RC4 Data SDA pino 5 Novamente os jumpers de configurac es relacionados devem estar habilitados para a utiliza o da mem ria serial externa Como a mem ria serial compartilha o mesmo barramento lC do rel gio de tempo real PCF8583P se faz necess ria a utilizac o de enderecos diferentes para que o barra
321. adas a fim de criar um efeito visual para a experi ncia 86 Esquema El trico LIN4 220R SA13 SA14 SA15 SA16 o o o o o COL1 COL2 COL3 COL4 10K 10K 10K 10K 3 2 1 45V 2 e o 9 84 RESET 10K k 2 5V MC1 Buzzer JH PIC16F877A 330R 330R 330R 330R 330R 330R 330R 330R 0 1 2 3 4 5 A 7 v Y Y Y Y Y 1 e 5V 4 7K BC337 1K Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 87 Fluxograma INICIO VETOR DE RESET PULA P INICIO DO PROGRAMA CONFIGURAG ES INICIAS PORTAS TIMERS INTERRUP ES OPTION ADS TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT WDT gt 1 1 TMRO gt 1 16 LIMPA A RAM ATRAV S DO END INDIRETO INICIALIZA VARIAVEIS FILTRO DOS BOTOES HABILITA LEDS E LINHA 4 DO TECLADO MATRICIAL RECONFIGURA PRESCALER LIGA AS INTERRUP ES ROTINA PRINCIPAL LIMPA WDT 88 INTERRUPC ES SALVA CONTEXTO TRATA TMR2 TRATA TMRO FIM INTERRUP O SA DA BUZZER LIGADA LIGA SA DA LIGA SA DA FIM INTERRUP O Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 89 TRATA
322. al gica e qualquer sistema que se baseie ou utilize informa es deste meio externo precisar de um sistema de convers o para poder se comunicar E por isso que hoje e sempre a convers o A D t o necess ria Com o MCMASTER poderemos realizar estas convers es de duas maneiras A primeira atrav s do conversor interno do PIC e a segunda atrav s de um pseudoconversor fundamentado no tempo de carga de um circuito RC Dentre os m dulos padr o existem dois sistemas para trabalhar com o conversor A D e para qualquer um deles as duas formas de aquisic o podem ser aplicadas ou seja tanto via A D convencional como via RC O primeiro sistema consiste num potenci metro e o segundo num conjunto de jumpers que podem ser configurados como divisor resistivo ou circuito RC Potenci metro O sistema com o potenci metro segue o esquema el trico representado a seguir 45V 8 4 7K 330R E RAO 10K LM358 iuF A tens o de entrada presente no pino RAO do microcontrolador pode ser ajustada entre O e 5V Caso se utilize o conversor A D interno do PIC o capacitor de 1uF e o resistor de 4K7 formam um filtro passa baixa til para filtrar ru dos e deixar o sinal de entrada mais est vel Caso se utilize o sistema de leitura via RC o conjunto de resistores e capacitores assume outra func o Neste sistema para realizar a convers o deve se executar as etapas a seguir e Inicialmente atrav s do
323. al do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 93 ORG GOTO ORG 0 0000 ERA X ko E AER Ax ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGI O DESTINADA S INTERRUP ES Ok XxX Xx Xx VETOR DE INTERRUP O DO MICROCONTROLADOR 2 004 E ok oe ER RE POSI O DE DESVIO DO PROGRAMA QUANDO UMA INTERRUP O ACONTECE ENDERE O DO VETOR DE INTERRUP O MUITO IMPORTANTE QUE OS REGISTRADORES PRIORIT RIOS AO FUNCIONAMENTO DA M QUINA E QUE PODEM SER ALTERADOS TANTO DENTRO QUANTO FORA DAS INTS SEJAM RECUPERADOS SALVA CONTEXTO MOVWF SWAPF MOVWF TESTA INT BTFSC GOTO W TEMP STATUS W STATUS TEMP SALVOS EM REGISTRADORES TEMPOR RIOS PARA PODEREM SER POSTERIORMENTE COPIA W PARA W TEMP COPIA STATUS PARA STATUS TEMP X ck HE AECA de EEC RO RT RE CH TESTA QUAL INTERRUP O FOI SOLICITADA INTCON TOIF INT TMRO M Week o we eoe TRATAMENTO DA Ok O7 0 o E TESTA O FLAG DAS INTERRUP ES PARA SABER PARA
324. al do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 265 AGUARDA IC LIVRE n EVENTO IC EM ANDAMENTO TODOS OS EVENTO FINALIZADOS RETURN ACK OUT CARREGA 0 SSPCON2 ACKDT 0 SSPCON2 ACKEN 1 RETURN TESTA ACK RECEBEU ACK LIMPA FLAG DE ERRO SETA FLAG DE ERRO RETURN NACK OUT CARREGA ACK 1 SSPCON2 ACKDT 1 ENVIA ACK SSPCON2 ACKEN 1 RETURN 266 l2C READ ENVIA START BIT SSPCON2 SEN 1 y AGUARDA LIVRE ENVIA CONTROLE END COMP WRITE 10100000b gt SSPBUF Y AGUARDA PC LIVRE Y TESTA ACK OCORREU ERRO N o ENVIA ENDEREGO xxxxxxxxb gt SSPBUF AGUARDA PC LIVRE TESTA ACK ocoRREU SIM ERRO N o ENVIA START BIT SSPCON2 SEN 1 ENVIA CONTROLE END COMP READ 10100001b gt SSPBUF Y AGUARDA PC LIVRE Y TESTA ACK OCORREU Y ERRO N o RECEBE BYTE SSPCON2 RCEN 1 C OR 12C LIVRE gt SSPCON2 PEN 1 AGUARDA IC LIVRE Y C RETURN ENVIA STOP BIT SSPCON2 PEN 1 RETURN Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER O A HORA ATUAL DO cA
325. anal gico proporcional temperatura ambiente est presente no pino RA1 do microcontrolador e varia entre O e 5V Deve se evitar que a temperatura ultrapasse 90 C a fim de evitar que o sensor seja danificado Aquecedor O aquecedor consiste numa resist ncia de 68Q com 5W de dissipac o Pode ser acionada atrav s do pino RC2 do microcontrolador Veja que este pino pode ser configurado como PWM e portanto a pot ncia de aquecimento pode ser regulada atrav s deste recurso Ventilador O sistema de ventilac o consiste num cooler de PC que pode ser ativado atrav s do pino RC1 do microcontrolador Assim como no caso do aquecedor este pino pode ser configurado como PWM desta forma pode se modular a velocidade do ventilador utilizando este recurso do microcontrolador Tac metro Junto ao ventilador existe um sistema formado por um transmissor e um receptor de infravermelho Este sistema utilizado para medir a velocidade de rotac o do ventilador Quando n o temos a passagem de luz ou seja quando a luz est interrompida por uma das palhetas do ventilador o sistema de tac metro apresentar na sa da n vel l gico 1 Quando se tem a passagem de luz a sa da do sistema de tac metro ser 0 O tac metro est conectado ao pino RCO entrada de contador do TMR1 do microcontrolador L mpada incandescente Consiste numa l mpada incandescente de 12V que pode ser acionada atrav s do pino RC5 do microcontrolador Com n vel l g
326. anterior para a mem ria de programa FLASH 3 Crie um programa que copie internamente todo o c digo de programa para outra posic o Por exemplo copie todas a p gina O da mem ria de programa para a p gina 1 Depois utilize o gravador e o Mplab para ler a mem ria de programa e verificar se a operac o foi executada com sucesso 212 Cap tulo 18 Experi ncia 16 Master Objetivo O objetivo desta experi ncia mostrar ao aluno como acessar a mem ria de dados EEPROM externa 241 256 utilizando os recursos de hardware do PIC para implementar o protocolo de comunica o Descric o Conforme comentado na descric o do hardware est mem ria est mapeada no endereco 7h 111b da rede de comunica o a fim de evitar conflitos com o rel gio de tempo real Al m disso como a mem ria utilizada no MCMASTER de 256Kbits ou seja 32Kbytes s o necess rios 15 bits ou seja 2 bytes para o correto enderecamento Levando se isso em considerac o para a escrita de dados na mem ria o microcontrolador dever enviar a seguinte sequ ncia de informa es e Envia o byte de controle que deve incorporar o endere o de hardware da mem ria na rede 12C al m do bit de R W que neste caso deve ser enviado em 0 a fim de sinalizar uma opera o de escrita Assim o byte de controle completo considerando o mapeamento adotado no MCMASTER 10101110b e Envia um start bit e Recebe o bit de acknowledge ACK
327. ar RB4 Este jumper desliga o pino utilizado para ativar a linha 1 do teclado matricial e o display do milhar deixando o dispon vel apenas no conector de expans o e Leds Especiais RC1 e RC2 Este jumper desabilita os leds ligados aos pinos RCO RC1 e RC2 utilizados pelos m dulos CPP e TIMER1 do microcontrolador M dulos Padr o Nesta sec o ser o abordados cada um dos m dulos padr o do MCMASTER Microcontrolador O sistema utiliza o microcontrolador PIC16F877A como centro de todo o hardware Este microcontrolador est ligado a todos os perif ricos dispon veis possibilitando o estudo de praticamente todas as suas fun es Devido tamb m ao grande poder de recursos deste modelo de PIC poss vel junto aos demais recursos da placa o desenvolvimento de projetos simples e ou complexos como por exemplo um controlador de temperatura com algoritmo de controle PID LCD alfanum rico Nos dias de hoje qualquer programador sabe da import ncia da interface com o usu rio dentro de um sistema qualquer Por isso muito importante o aprendizado de operac o de um display do tipo LCD No caso do MCMASTER este display possui 2 linhas de 16 caracteres cada sendo um padr o de mercado atual Possui um chip de controle pr prio com o qual realizada a interface com o microcontrolador Com este perif rico os sistemas desenvolvidos no MCMASTER poder o possuir telas explicativas informa es claras e menus de
328. ara implementar um pisca pisca sendo que a frequ ncia das piscadas controlada atrav s do uso de uma rotina de delay A rotina de delay gen rica pode ser utilizada para gerar delays entre 1ms e 256ms Na realidade a rotina recebe um argumento passado pelo WORK para determinar o atraso que deve ser gerado sempre em m ltiplos de 1ms Como o argumento de 8 bits existem 256 poss veis delays indo de 1ms at 256ms Basta portanto carregar o WORK com o delay desejado e chamar a rotina O pisca pisca visualizado no display de 7 segmentos na posi o da unidade Sempre que o delay finalizado o PORTD deve ser invertido e para inverter o estado destes bits utilizou se a opera o l gica boleana XOR Conforme a tabela verdade apresentada a seguir A B XOR 0 0 0 0 1 1 1 0 1 1 1 0 pode se verificar que sempre que a operac o realizada quando os bits da coluna A est o em 1 o resultado fica invertido em relac o coluna B e sempre que os bits da coluna A est o em 0 o resultado se mant m em relac o coluna B Assim sempre que ser desejar inverter um bit basta fazer uma operac o XOR entre um bit em 1 e o bit que se deseja inverter Esta uma t cnica simples de inverter o estado de um bit sem testar o estado original No software pode se utilizar as teclas da linha 4 colunas 1 e 2 para alterar o tempo do delay e conseq entemente a freq ncia das piscadas do display A tecla da coluna
329. atrapalhar o correto funcionamento de uma eventual placa de experi ncias optou se pela utiliza o de jumpers de configura o para que pontos importantes do circuito possam ser desabilitados e as vias do Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 3 microcontrolador possam ser utilizadas apenas pelas placas de experi ncias e n o mais nos m dulos padr o Desta forma foram criados 7 jumpers Come ando de cima para baixo os jumpers s o e Comunica o TX RC6 Este jumper desliga o pino RC6 TX da USART do PIC utilizado para comunica o padr o RS232 do microcontrolador deixando o dispon vel apenas no conector de expans o e Comunica o RX RC7 Da mesma forma que o jumper anterior este jumper desliga o pino RC7 RX da USART do PIC utilizado para comunica o padr o RS232 do microcontrolador deixando o dispon vel apenas no conector de expans o e Data Este jumper desliga o pino RC4 via de dados para comunica o do microcontrolador deixando o dispon vel apenas no conector de expans o e Clock PC Este jumper desliga o pino RC3 via de clock para comunica o do microcontrolador deixando o dispon vel apenas no conector de expans o e Coluna 1 RBO Este jumper desliga o pino RBO utilizado para ler os bot es da coluna 1 do teclado matricial deixando o dispon vel apenas no conector de expans o e Linha 1 Display Milh
330. capacitor C O resistor Rs n o interfere no tempo de carga pois o pino do PIC est em alta imped ncia entrada J se o pino do PIC estiver configurado como sa da em n vel l gico O o capacitor tende a se descarregar pelo resistor Rg e carregar pelo resistor Ra Por m vamos admitir que o valor do resistor Rg seja muito menor do que o de Ra e portanto nesta configura o podemos desprezar a carga proveniente do resistor Ra e admitir que o capacitor C apenas se descarrega atrav s de Rs Em resumo o capacitor se carrega atrav s de Ra pino como entrada e se descarrega atrav s de Hg pino como sa da em 0 sendo que o tempo de carga descarga depende do pr prio valor do capacitor da tens o de entrada Vin e do resistor em quest o Como funciona ent o a convers o A D 1 O software deve configurar o pino do PIC como sa da em 0 2 Esperar o tempo de descarrega do capacitor C Este tempo deve ser garantido por software conforme os valores dos componentes utilizados 3 Configurar o pino como entrada ou seja permitir a carga do capacitor 4 Contar o tempo que o capacitor leva para que o PIC entenda n vel l gico 1 ou seja contar o tempo de carga do capacitor 5 Repetir o processo para uma nova convers o 150 O tempo de carga do capacitor ser inversamente proporcional tens o de entrada Admitindo se que a tens o de entrada n o varie durante a convers o A D o modelo matem tico aproximado para a curva d
331. car a separa o N o se esque a que agora os displays da direita devem contar somente de 0 a 59 e n o mais de 0 a 99 118 Cap tulo 12 Experi ncia 10 Display de cristal l quido LCD Objetivo O objetivo desta experi ncia o aprendizado da utilizac o de display de cristal l quido Descri o Esta experi ncia foi elaborada para explicar o funcionamento do display LCD e o exemplo de software proposto bastante reduzido Simplesmente utilizou se o LCD para informar ao usu rio qual tecla est pressionada Para isso elaborou se uma rotina chamada ESCREVE que envia a informa o passada pelo Work ao display Esta rotina pode ser utilizada tanto para enviar comandos quanto dados Foi criada tamb m a rotina de inicializa o do LCD Esta rotina configura o sistema para comunica o com 8 vias 2 linhas sem cursor vis vel e com movimento autom tico do cursor para a direita Al m disso ela j limpa a tela e posiciona o cursor na primeira linha primeiro caractere da esquerda Para cada bot o pressionado posicionou se o cursor em um local diferente da tela e escreveu se o n mero do bot o em quest o Ap s a libera o uma tela padr o visualizada Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 119 Esquema El trico LIN4 220R SA13 SA14 SA15 SA16 COL1 COL2 COL3 COL4 5V 10K MC1
332. ceba o valor convertido efetue alguma opera o e devolva outro valor Por exemplo divida o valor por 25 pegue a parte inteira e some 30h para imprimir no LCD um valor de 0 a 9 3 Mude a rotina de recepc o e escrita no LCD para poder receber um n mero de O a 50 e mostr lo como 0 0 a 5 0 Altere o programa do PC para efetuar a regra de 3 necess ria para converter um valor de O a 255 para 0 a 50 Com isso voc voltou ao mult metro da experi ncia 11 s que com as contas de multiplicac o e divis o n o mais sendo feitas no PIC Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 247 Cap tulo 20 Experi ncia 18 Teclado matricial 4x4 Objetivo O objetivo desta experi ncia mostrar ao aluno um m todo simples para implementac o de um teclado matricial Descric o O teclado matricial do MCMASTER composto por 4 linhas e 4 colunas formando assim uma matriz de 16 teclas Desta forma utilizam se 8 pinos do microcontrolador para realizar a leitura do teclado Os conceitos adotados na experi ncia de varredura de displays de leds n o s o muito diferentes dos adotados para varrer os estados de um teclado matricial Analisando o esquema el trico nota se que todas as teclas de uma mesma coluna est o interligadas Al m disso nota se um resistor de pull down em cada uma das vias Veja tamb m que todas as teclas de uma mesma linha tamb m encontram se interligadas A id ia de varred
333. d margem cria o de diferentes tons pois quem gera a frequ ncia da onda quadrada e consequentemente o tom com que o buzzer ir tocar o microcontrolador e se este gerar frequ ncias adequadas pode se implementar at mesmo uma simples melodia Apesar desta experi ncia utilizar o TMR2 para excitar o buzzer com frequ ncia vari vel o objetivo n o a implementa o de notas musicais embora isto seja poss vel Diferente dos outros timers do microcontrolador o TMR2 estoura e pode gerar uma interrup o sempre que o seu valor ultrapassa o valor de um registrador especial denominado PR2 Ou seja o TMR2 diferentemente dos outros timers conta desde zero at o valor programado no registrador PR2 e n o at 255 a n o ser que o valor do registrador PR2 seja 255 Desta forma o que o software faz ler o estado das teclas da linha 4 e em fun o deste alterar o valor do registrador PR2 Conseq entemente a interrup o de TMR2 varia de per odo ou seja a frequ ncia com que a interrup o ocorre depende do estado das teclas da linha 4 Como a interrup o a respons vel por gerar a onda quadrada que excita o buzzer e como a frequ ncia pode ser alterada pelas teclas dependendo da configura o de teclas pressionadas o buzzer emite som em diferentes tonalidades criando embora com frequ ncia erradas uma esp cie de mini teclado Os leds ligados ao PORTD s o utilizados apenas para repetir o estado das teclas pression
334. dentes possibilitando a opera o por varredura Atualmente muito comum encontrar em produtos do mercado a combina o de ambos os tipos de display para uma visualiza o mais completa e eficiente Com o MCMASTER esta combina o tamb m poss vel A conex o dos displays com o microcontrolador segue a tabela abaixo PIC Segmento RDO RD1 RD2 RD3 RD4 RD5 RD6 RD7 gt olmmlolo E as vias de selec o de cada um dos displays a tabela seguir PIC Display RB4 Milhar RB5 Centena RB6 Dezena RB7 Unidade Para a ativac o dos displays deve se selecionar n vel l gico 1 nos pinos de selec o Os segmentos tamb m s o ativados com n vel l gico 1 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 5 Leds O MCMASTER possui um grupo de 8 leds que compartilha o mesmo barramento que os displays de 7 segmentos e o display LCD Desta forma o seu acionamento deve ser feito via varredura sendo que os leds est o conectados ao PORTD e a selec o feita pelo pino RA4 Da mesma forma que os displays os leds s o ativados com n vel l gico 1 tanto na via de selec o RA4 como individualmente PORTD Teclado matricial A maioria dos sistemas desenvolvidos atualmente utilizam algum tipo de teclado para a entrada de dados pelo usu rio O MCMASTER est provido de um teclado matricial de 4 linhas e 4 colunas t
335. do com 131 ele j esteja com outro valor diferente de zero e a a contagem n o seria de exatamente 125 ciclos N o o caso deste exemplo mais se o prescaler fosse de 1 1 ou seja se o contador fosse incrementado a cada ciclo de m quina quando a interrup o ocorresse e o contador fosse carregado com certeza o seu valor j seria diferente de zero No caso do exemplo o contador valeria 10 pois foram gastos 2 ciclos de m quina para desviar o programa para o vetor de interrup o mais 3 ciclos para salvar o contexto mais 2 ciclos para testar se a interrup o era de TMRO mais 1 ciclo para limpar o bit da interrup o e mais 2 ciclos para efetivamente fazer a carga do contador No total foram gastos 10 ciclos entre o instante em que a interrupc o ocorreu e o instante em que o contador foi carregado com 131 Portanto o tempo entre interrup es que deveria ser de 125 ciclos passou para 135 ciclos Isto provoca um erro na contagem de tempo Para corrigir este problema deve se somar o valor ao timer e n o carrega lo com um valor e desprezar o que ele j contou Ainda admitindo que o prescaler fosse de 1 1 se fosse somado ao timer o valor 131 ap s a soma o resultado final seria 141 sendo que 10 ele pr prio j teria contado e 131 que foram somados Desse instante at a pr xima interrupc o ocorreriam 115 contagens 256 141 115 e o tempo total entre interrup es se manteria conforme o desejado ou seja a cada 125 conta
336. e hoo eoe 3e E A Xo gt AX AS SA DAS DEVEM SER ASSOCIADAS FUTURAS ALTERA ES DO HARDWARE HDEF INE HDEF INE HDEF INE HDEF INE HDEF INE TEMOS TAMB M AS SA DAS DE TX DA USART PWM1 E PWM2 DISPLAY RS ENABLE TEC MATRICIAL LINHA 4 PORTD PORTE 0 PORTE 1 PORTB PORTB 7 ENTRADA DE RX DA USART dock E O E xe SA DAS HO RR AE eode de X Xe Xo ck koc A NOMES PARA FACILITAR A PROGRAMA O E BARRAMENTO DE DADOS DO DISPLAY INDICA P O DISPLAY UM DADO OU COMANDO 1 gt DADO 0 COMANDO SINAL DE ENABLE P DISPLAY ATIVO NA BORDA DE DESCIDA PORT DO MICROCONTROLADOR LIGADO AO TECLADO MATRICIAL lt RB4 RB7 gt LINHAS L ATIVADAS 0 gt DESATIVADAS lt RBO RB3 gt COLUNAS gt TECLAS PRESSIONADAS 0 gt TECLAS LIBERADAS PINO P ATIVAR LINHA 4 TECLADO MATRICIAL 0 gt LINHA 4 ATIVADA LINHA 4 DESATIVADA PARA FACILITAR O ENTENDIMENTO DO HARDWARE VAMOS DECLARAR ESTAS SA DAS NORMALMENTE APESAR DE N O SEREM UTILIZADAS HDEF INE HDEF INE HDEF INE x TXUSART VENTILADOR AQUECEDOR PORTC 6 PORTC 1 PORTC 2 ke E SA DA DE TX DA USART SA DA P VENTILADOR SA DA P AQU
337. e 823 8 5 a a lt o o x CN4 1 1N4004 CN4 2 COMUNICAGAO RS 232 C19 A9VJnL A9L Jn E 13 TIOUT B 140 R1OUT R1IN P A9L 3NL C20 1 CN5 m mmm 1uF 1 CONECTOR 2x5 FLAT CABLE MAX 232 C22 H 100nF MC14053B CTRL 4 R55 1K R 1 4 4 307 Manual do Usu rio Sistema de Treinamento Microcontroladores PIC MCMASTER SS OHT3NEA 30001 gt b et Il ASZ ANOL 919 7805 gt N zl9 40001 gt 8L dL di 21 Ho 9 4 01 2 E o 5 NEL rq Rs 5 5 z gt 3 x SS Su o Si z 8 8 5 5f e 3 DAS z o E T 2 o o COMUNICA O RS 232 gt io 9 m Ap 29 i d A9V JnL sto 11 9 p i6 C22 U7 e al E OOo EZ E bia 28 S 8 u E R c 5 x SS 44 ZO zo Q Sa Z 00 00 rr y Jj n ES 13 Mq 1 C20 mmm 1uF 16 CONECTOR 2x5 FLAT CABLE CN5 8
338. e Envia a parte mais significativa do endere o onde o dado ser gravado e Recebe o bit de acknowledge e Envia a parte menos significativa do endere o onde o dado ser gravado e Recebe o bit de acknowledge e Envia o dado a ser gravado e Recebe o bit de acknowledge e Envia um stop bit J para uma operac o de leitura a seq ncia dever ser e Envia um start bit e Envia o byte de controle que deve incorporar o endere o de hardware da mem ria na rede I2C al m do bit de R W que neste caso deve ser enviado em 0 a fim de sinalizar uma operac o de escrita Note que inicialmente o endereco que se deseja ler deve ser escrito na mem ria Assim o byte de controle completo considerando o mapeamento adotado no MCMASTER 10101110b e Recebe o bit de acknowledge e Enviaa parte mais significativa do endere o de o dado ser lido e Recebe o bit de acknowledge e Envia a parte menos significativa do endere o de onde o dado ser lido Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 213 e Recebe o bit de acknowledge e Envia outro start bit e Envia novamente o byte de controle por m agora alterando o bit R W para sinalizar a opera o de leitura Assim o byte de controle completo fica 101011116 e Recebe o bit de acknowledge e Recebe o byte lido da mem ria e Envia um bit em 1 sinalizando que deseja encerrar le
339. e X ok e oko ck Cho ko ok de E x ok A 0k A VERS O 1 0 DATA 14 04 2003 eco c de o cde A E KO ko ko AO 0X EE EE E A E E AA A d 0k koe Ck ck o ku ok Ck ok XA s ok Ck ko 4 ko k ko ko koX gx DESCRI O GERAL X ck k Ok k ko k ko ok W kk k kk k kk k kk kk X ESTE EXEMPLO FOI ELABORADO PARA DEMOSTRAR A MAIORIA DOS RECURSOS DISPON VEIS NA PLACA DE EXPERI NCIAS EXP01 DOIS PWMs FORAM UTILIZADOS UM PARA MODULAR A RESIST NCIA DE AQUECIMENTO E OUTRO PARA A VELOCIDADE DO VENTILADOR O SOFTWARE CONVERTE O CANAL 1 DO CONVERSOR A D PARA MEDIR A TEMPERATURA SISTEMA TICO FOI UTILIZADO PARA MEDIR AS ROTA ES DO VENTILADOR AS TECLAS DAs COLUNAS 1 E 2 PODE SE VARIAR O DO AQUECEDOR E COM AS TECLAS DAS COLUNAS 3 E 4 O PWM DO VENTILADOR A LINHA ATIVADA A 4 DO TECLADO MATRICIAL NO LCD S O MOSTRADOS OS VALORES DO DO AQUECEDOR O N MERO DE ROTA ES POR SEGUNDO DO VENTILADOR E A TEMPERATURA DO DIODO J CONVERTIDA EM GRAUS CELSIUS AL M DISSO O VALOR ATUAL DA TEMPERATURA DO DIODO TRANSMITIDO PERIODICAMENTE ATRAV S DA USART Sk SS oe sk SK SD SE SP P K E SSS WK ES JA C E e PA CO
340. e carga do capacitor it Voz t _ d Assim conhecidos os valores do resistor do capacitor e do tempo de carga pode se estimar a tens o de entrada O exemplo de software da experi ncia calcula o tempo de carga do capacitor e mostra este tempo no display LCD O software n o calcula a tens o de entrada apenas o tempo de carga do capacitor O tempo de carga pode ser alterado atrav s do potenci metro do MCMASTER Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 151 Esquema El trico 5V 10K LM358 4 7K 330R RAO 1uF 5V MC1 VDD VSS fez 31 40 RB6 RB5 RB4 RB3 oo os lez 56 35 RB2 RB1 RBO RD7 RD6 RD5 RD4 RD3 os 30 28 45V Y thh NA 22 21 RD2 RD1 RDO RC7 RC6 PIC16F877A 20 19 5V 26 LCD VDD 2 080 vo DB2 vssi 4 DB3 DB4 AS DB5 RS DB amp EN EEN DB7 RWE b 10K 152 Fluxograma INICIO VETOR DE RESET PULA P INICIO DO PROGRAMA CONFIGURA ES INICIAS PORTAS TIMERS INTERRUP ES OPTION ADS TRAVA O PROGRAMA AGUARDA ESTOURO DO WDT LIMPA A RAM ATRAV S DO END INDIRETO _ INICIALIZA DISPLAY y PREPARA TELA PRINCIPAL A D por RC RAO T CAR
341. enados para c lculos ou consultas futuras Os dados s o transmitidos pela USART atrav s do conector DB 9 respeitando se o padr o RS 232 com 8N1 e baud rate de 9 600bps A cada 1 segundo transmitido um byte com o valor da temperatura j convertido para Celsius Considera es gerais Ambos os PWMs s o controlados pelo TMR2 que est regulado para 1ms Por isso o per odo dos 2 PWMs de 1ms ou seja eles operam a 1kHz O postscale do TMR2 foi regulado em 1 10 gerando uma interrup o a cada 10ms Utilizou se um contador auxiliar TEMPO 15 para contabilizar 100 interrup es gerando a base de tempo de 1 segundo Esta base utilizada para capturar a rota o do ventilador efetuar uma convers o de temperatura e transmitir dados pela USART 278 Esquema El trico i 5V 1 1 0 4Vcc amen 1K 68R 5W 5 8605006 1 1 g 5 Temperatura A 5 1K B i 1N4148 3 1N4148 V7 gt 5 C 10K 330K H 1962 BC337 5V AQUECEDOR 1K T 1 1 RC1 8 VENTILADOR BC337 m alt E INM 1K x 4 AA i 1 i 1 es KJ iuF LM431 AD
342. enviar um caractere ao LCD deve se utilizar o c digo ASCII do caractere Apesar do sistema MCMASTER possuir ligac o com o m dulo de LCD atrav s de 8 vias de dados poss vel utiliz lo para testar e implementar a comunicac o com 4 vias Basta modificar a rotina de inicializa o e a de escrita de um byte Exerc cios Propostos 1 Altere a comunica o para 4 vias 2 Mantenha a tela principal dispon vel somente quando o sistema ligado Ap s alguns segundos mostre uma tela com o nome das quatro teclas e indique a tecla pressionada atrav s de um caractere de seta ou outro qualquer Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 135 Cap tulo 13 Experi ncia 11 Conversor A D Objetivo Nesta experi ncia ser estudado o m dulo de convers o A D interno do PIC16F877A Descric o Este exemplo foi elaborado para explicar o funcionamento do m dulo de convers o anal gico digital interno do PIC16F877A E convertido o valor anal gico presente no pino RAO do microcontrolador sendo que este valor pode ser alterado atrav s do potenci metro presente na placa do sistema MCMASTER A convers o feita diretamente no loop principal sem a utiliza o de nenhuma interrup o nem para checar o t rmino da convers o nem para definir uma frequ ncia de amostragem Desta forma a convers o ser feita uma ap s a outra na frequ ncia definida pelo per odo do loop principal
343. eri ncia 19 Rel gio de tempo real RTC Objetivo O objetivo desta experi ncia mostrar como utilizar o rel gio de tempo real RTC Descric o No MCMASTER optou se pela utilizac o do rel gio de tempo real RTC modelo PCF8583P da Philips O protocolo de comunica o do tipo e para maiores informa es a respeito do componente deve se consultar o data sheet dispon vel no CD As rotinas de acesso ao rel gio seguem o padr o adotado na experi ncia 16 Master com apenas algumas modifica es Na realidade as altera es s o que o rel gio est mapeado no endere o Oh 000b para evitar conflitos com a mem ria e ao inv s de serem utilizados dois bytes para compor o endere o foi utilizado apenas um o que j suficiente O software da experi ncia apenas l a hora atual do rel gio e mostra o resultado no LCD Vale lembrar que o rel gio completo ou seja disp e de hora minuto segundo dia m s e ano inclusive bissexto 262 Esquema El trico LIN4 220R SA13 SA14 SA15 SA16 o o 0 o COL1 COL2 COL3 10K 3 2 1 o 45V 5 o wm lolo e VDD L2 gt lt 10K we heo vssE 4 DB3 _ RS KATE la SS 13 DB6 A
344. ers A B e C do sistema 174 Cap tulo 16 Experi ncia 14 Modulo PWM Objetivo O objetivo desta experi ncia ensinar ao aluno como utilizar o m dulo PWM do microcontrolador PIC16F877A Descri o Este PIC possui 2 canais de PWMs CCP1 e CCP2 cada um com resolu o m xima de 10 bits Isto significa que o duty cycle poder ser regulado de O a 100 com uma resolu o m xima de 1024 pontos No entanto dependendo da configura o adotada esta resolu o n o ser atingida O per odo do PWM controlado diretamente pelo TMR2 atrav s do registrador PR2 Como j foi visto sempre que TMR2 PR2 o timer zerado e neste momento um novo per odo do PWM iniciado Desta forma pode se definir o per odo e a frequ ncia do PWM pelas seguintes f rmulas T PR2 1 x 4 x x Prescale do TMR2 O duty cycle normalmente definido em porcentagem por m o PIC n o define o valor do duty cycle e sim o tempo do pulso em n vel alto Desta forma o tempo do pulso pode ser calculado por to CCPRxL CCPxCON lt CCPxX CCPxY gt x x Prescale do TMR2 Repare que a largura do pulso ajustada em dois registradores CCPRxL que armazena os 8 bits mais significativos e CCPXCON que armazena os dois bits menos significativos Assim obt m se os 10 bits que controlam o duty cycle do PWM Apesar do PIC n o definir o duty cycle ele pode ser calculado dividindo o tempo do pulso em n vel alto pelo per odo
345. estimar atrav s do tempo de carga do capacitor se a tens o de entrada encontra se abaixo de 1 25V entre 1 25V e 2 5V entre 2 5V e 3 75V ou acima de 3 75V 162 Cap tulo 15 Experi ncia 13 Leitura de jumpers via RC Objetivo O objetivo desta experi ncia aplicar a t cnica apresentada na aula anterior para viabilizar a leitura de jumpers atrav s de um nico pino do microcontrolador Descri o Assim como na experi ncia anterior este exemplo foi elaborado utilizando a t cnica de convers o A D atrav s de um circuito RC Diferente do caso anterior a tens o de entrada nesta experi ncia fixa e o que varia o valor do resistor que fornece a carga do capacitor Utilizando os jumpers A Be C do MCMASTER pode se alterar o valor do resistor de carga e consequentemente o tempo de carga do capacitor Como s o 3 jumpers existem at 8 combina es poss veis que alteram o tempo de carga do capacitor O quarto jumper deve estar selecionado na posi o resistor capacitor para que o exemplo possa ser utilizado O software calcula o tempo de carga do capacitor e mostra o valor no display LCD O interessante desta t cnica que ao inv s de utilizar 3 pinos do microcontrolador um para cada jumper ela utiliza apenas um Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 163 Esquema El trico 5V
346. ey 202 ESERIGAG 262 ESQUEMA 263 FLUXOGRAMAGCODIOO i a 264 MA 265 7 206 CODIGO aaa ss 267 0 Dan a 208 DICAS EXGOMENTARIOS suu tao a PST UM SA 276 EXERC CIOS PROPOSTOS te Rr Su eO E A EE etu E ee een 276 CAP TULO 22 EXPERI NCIA 20 SISTEMA DE TEMPERATURA E 277 decora CRUEL 277 DESCRICAO Saud pad a dd ol Ed a da Te he ti a Susa 277 Q sensor de 00 277 O aquecimento A a do e oo gd 277 Testamentos pasu a ass 278 COMUNICACI SOMA occ ee HE et t Rt Pede eo C OR i ene 278 Considera es yerals de D e eie ui RE ee DH erbe 278 ESQUEMA ELETRICO su ds p COM lette Pim dy de 279 200 ODER 284 il de das uy m ro aclaro 301 EXERC CIOS PROPOSTOS e eL ee em ot 301 CAP TULO 23 SOFTWARE DE COMUNICA O SERIAL SDCON 302 CAP TULO 24 SOFTWARE DEMO PARA TESTE DO 303 CAP TULO 25 AP NDICE A ESQUEMA EL TRICO COMPLETO DO MCMASTER 304 CAP TULO 26 CERTICADO DE 310 IV Cap tulo 1 Introduc o Inicialmente gostar amos de parabeniz lo por estar adquirindo o sistema did tico MCMASTER Este sistema utiliza o microcontrolador PIC16F877A como objeto central Junto ao m
347. forma o usu rio dever escolher atrav s do bot o localizado acima do microcontrolador onde a serial dever ser aplicada no gravador ou no microcontrolador Todos os l Os do microcontrolador est o dispon veis no conector de expans o para experi ncias Com exce o dos pinos RB6 e RB7 que s o utilizados pela grava o in circuit todos os outros I Os est o ligados diretamente ao conector ou seja sem nenhum tipo de prote o Apenas os pinos RB6 e RB7 foram isolados Por este motivo muito importante que o usu rio configure corretamente os l Os do microcontrolador quando for utilizar o conector de expans o pois neste caso uma liga o errada pode danificar o microcontrolador Se o usu rio utilizar o conector de expans o apenas com placas oficiais de experi ncias a preocupa o com a dire o dos l Os do microcontrolador n o precisa ser tomada uma vez que as placas de experi ncias e todo o MCMASTER foram projetados a fim de evitar que uma configura o errada do microcontrolador coloque o sistema em risco Portanto mesmo que um pino do microcontrolador seja configurado como sa da quando o correto seria entrada a integridade do sistema est garantida E claro que este erro pode acarretar num mau funcionamento do sistema projetado por m nunca existir risco ao MCMASTER e s placas de experi ncias desde que as mesmas sejam oficiais e ou homologadas pelo fabricante Para evitar que m dulos padr o do MCMASTER venham a
348. gens Exerc cios Propostos 1 Alterar o prescaler para 1 16 e obter a mesma base de tempo de 1 segundo 2 Alterar o software para obter a mesma base de tempo de 1 segundo por m sem utilizar o prescaler ou seja com prescaler configurado em 1 1 3 Alterar a base de tempo do timer de 1 segundo para 60 segundos ou seja alterar o timer de segundos original para um timer de minutos Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 61 Cap tulo 8 Experi ncia 6 Aceso mem ria de dados EEPROM Objetivo O objetivo desta experi ncia o aprendizado da utilizac o da mem ria de dados n o vol til EEPROM interna do microcontrolador Descric o Nesta experi ncia foram implementadas rotinas para escrita e leitura de dados na mem ria EEPROM O exemplo estudado na experi ncia 4 foi modificado e sempre que o valor da vari vel CONTADOR alterado o seu valor salvo na mem ria EEPROM Ao inicializar o microcontrolador a mem ria lida e ent o o valor original pode ser restaurado Assim mesmo na queda de energia o valor do contador preservado 62 Esquema El trico 5V MC1 5V PIC16F877A 5V VDD VSS RB7 RB6 RB5 RB4 DS2 Centena DS4 Unidade 220R NA Ah AAA AMM dh MV Ahhh AAA 220R BC337 BC337 BC337 BC337 4 7K NANA
349. i UTILIZADO POIS A MEM RIA TEM 256 ENDER CARREGA NO WORK DADO P SER GRAVADO ALTERA P BANK DO REGISTRADOR EEDATA SALVA DADO A SER GRAVADO EM EEDATA CARREGA DADO NO REGISTRADOR CORRETO DO BANCO 2 DA RAM A PARTIR DO REGISTRADOR DE USU RIO MAPEADO NO BANCO 0 DA RAM ALTERA P BANK DO REGIST ENDERECO_LOW CARREGA NO WORK O ENDERE O DE DESTINO ALTERA P BANK DO REGISTRADOR EEADR SALVA ENDERECO EM EEADR CARREGA ENDERE O NO REGISTRADOR CORRETO DO BANCO 2 DA RAM A PARTIR DO REGISTRADOR DE USU RIO MAPEADO NO BANCO 0 DA RAM ALTERA P BANK DO REGISTRADOR EECON1 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 203 BCF EECON1 EEPGD BSF EECON1 WREN MOVLW 0x55 MOVWF EECON2 MOVLW OXAA MOVWF EECON2 BSF EECON1 WR BTFSC EECON1 WR GOTO 1 BCF EECON1 WREN BANKSEL 0X20 RETURN Nu S lt lt 0 E ROTINA DE LEI xk TURA APONTA P MEM RIA DE DADOS HABILITA ESCRITA ESCREVE 0X55 EM EECON2 OBRIGAT RIO ESCREVE OXAA EM EECON2 OBRIGAT RIO INICIA ESCRITA ACABOU ESCRITA N O AGUARDA FIM DA ESCRITA SIM DESABILITA ESCRITAS NA MEM RIA VOLTA P BANKO RETORNA c C AE 3e o0 Oo E E 3 NA MEM RIA DE DADOS E E E 8 E REE RACE XX EE AR
350. ia limita se apenas ao reparo do defeito apresentado a substitui o do produto ou equipamento defeituoso Nenhuma outra garantia impl cita ou expl cita dada ao comprador 310 A Labtools n o se responsabiliza por qualquer dano perda inconveni ncia ou preju zo direto ou indireto que possa advir de uso ou inabilidade de se usarem os produtos cobertos por esta garantia A Labtools estabelece o prazo de 30 dias a ser contado a partir da data da nota Fiscal de Venda para que seja reclamado qualquer eventual falta de componentes Importante Todas as despesas de frete e seguro s o de responsabilidade do usu rio ou seja em caso de necessidade o Cliente respons vel pelo encaminhamento do equipamento at a Labtools jul 2006 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 311
351. ico 1 a l mpada acende e com n vel l gico O a l mpada apaga Tens o de refer ncia O circuito medidor de temperatura ambiente utiliza uma tens o de refer ncia fixa e est vel em 2 5V e como este recurso j estava presente na placa de experi ncias 1 resolveu se tamb m disponibilizar este recurso ao usu rio Assim a tens o de refer ncia de 2 5V foi conectada ao pino RA3 do PIC que pode ser configurado para utilizar este pino como entrada de refer ncia externa do conversor A D Isto permite que o conversor A D possa trabalhar em outra faixa de convers o e conseq entemente com outra resoluc o Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 11 Gravador Para utilizar o gravador presente no MCMASTER basta selecionar corretamente a sa da serial e utilizar o software de desenvolvimento Mplab da Microchip Por se tratar de um gravador in circuit o microcontrolador n o precisa ser retirado da placa Ao habilitar o gravador no Mplab o software atual do PIC16F877A ser paralisado e instantes ap s o final da gravac o do novo software o microcontrolador ser automaticamente inicializado 12 Cap tulo 3 Experi ncia 1 Leitura de uma tecla e acionamento de um led Objetivo O objetivo desta experi ncia ensinar ao aluno os primeiros passos sobre o microcontrolador E apresentado o modo de configurac o dos pinos de l Os e as primeiras instru es utilizadas para testar c
352. icrocontrolador uma s rie de perif ricos foram adicionados O objetivo disponibilizar uma placa de desenvolvimento onde o usu rio possa testar seus conhecimentos em software sem se preocupar com a montagem do hardware Basta escrever o software Veja todos os recursos que o sistema oferece Aliado LCD alfanum rico Displays de leds de 7 segmentos Teclado matricial Leds Buzzer Mem ria serial EEPROM protocolo Rel gio de tempo real protocolo I C Comunica o serial padr o RS232 Convers o A D Leitura de jumpers Sensor de temperatura Aquecedor Ventilador Tac metro L mpada Incandescente Grava o in circuit a todos estes recursos utilizou se o microcontrolador PIC16F877A que o mais completo da linha 16Fxxx Suas principais caracter sticas s o 8K de mem ria de programa 368 bytes de mem ria de dados vol til RAM 256 bytes de mem ria de dados n o vol til E2PROM 14 Interrup es 33 I Os 3 Timers 2 de 8 bits 1 de 16 bits 2 Capture Compare PWM USART MSSP PSI e 120 PSP 8 canais de convers o A D com 10 bits cada 2 comparadores de tens o Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 1 Fazem parte do kit de desenvolvimento e 1 Sistema de Treinamento em Microcontroladores PIC MCMASTER e 1PIC16F877A e 1 Manual do Usu rio e 1 CD ROM Cap tulo 2 McMaster Desenvolvimento de Sistemas com
353. inamento em Microcontroladores PIC MCMASTER 195 FLASH PROGRAM WRITE Y CARREGA ENDEREGO ONDE O DADO SERA SALVO EM EEADRH E EEADR CARREGA USANDO O FSR O DADO A SER SALVO EM EEDATH E EEDATA A SELECIONA MEM RIA DE PROGRAMA EECON1 EEPGD 1 y HABILITA ESCRITA EECON1 WREN 1 EECON2 0x55 EECON2 0xAA Y INICIA ESCRITA EECON1 WR 1 NOP NOP DESABILITA ESCRITA EECON1 WREN 0 INCREMENTA ENDERE O J GRAVOU 4 WORDS RETURN gt FLASH PROGRAM READ CARREGA ENDERE O DE ONDE O DADO SERA LIDO EM EEADRH E EEADR SELECIONA MEM RIA DE PROGRAMA EECON1 EEPGD 1 EECON1 RD 1 y SALVA O DADO LIDO DA MEMORIA NA VARIAVEL DADO_HIGH E DADO_LOW RETURN HABILITA LEITURA 196 DATA EEPROM WRITE CARREGA DADO A SER SALVO EM EEDATA y CARREGA ENDEREGO ONDE O DADO SERA SALVO EM EEADR SELECIONA MEM RIA DE DADOS EECON1 EEPGD 0 HABILITA ESCRITA EECON1 WREN 1 y EECON2 0x55 EECON2 0xAA INICIA ESCRITA EECON1 WR 1 ACABOU S go registrador 2 ESCRITA EECON1 Sim DESABILITA ESCRITA EECON1 WREN 0 RETURN CDATA EEPROM READ CARREGA ENDEREGO DE ONDE O DADO SERA LIDO EM EEADR SELECIONA MEM RIA DE DADOS EECON1 EEPGD 0 y HABILITA LEITURA E
354. istema de Treinamento em Microcontroladores PIC MCMASTER 83 DECF INTENSIDADE F H GOTO ATUALIZA INC r BSF ST BT2 MOVE INTENSIDADE W XORLW MAX BTFSC STATUS Z GOTO MAIN INCF INTENSIDADE F GOTO ATUALIZA ATUALIZA CALL CONVERTE E MOVWF PORTD GOTO MAIN de CX u dE de eoe lt lt Xo oA Kk HE FIM DO AR TE TE DECREMENTA O INTENSIDADE ATUALIZA O DISPLAY DE INCREMENTAR MARCA BOT O 2 COMO J PRESSIONADO COLOCA INTENSIDADE EM W APLICA XOR ENTRE INTENSIDADE E MAX PARA TESTAR IGUALDADE SE FOREM IGUAIS O RESULTADO SER ZERO RESULTOU EM ZERO SIM RETORNA SEM AFETAR CONT NAO INCREMENTA O INTENSIDADE ATUALIZA O DISPLAY CONVERTE INTENSIDADE NO N MERO DO DISPLAY ATUALIZA O PORTD PARA VISUALIZARMOS O VALOR DE INTENSIDADE NO DISPLAY N O VOLTA AO LOOP PRINCIPAL ERA AXE Oh e deo oko o e X xXx A o PROGRAMA co kso de XS dese X ca OBRIGAT RIO 64 Dicas e Coment rios A t cnica utilizada nesta experi ncia para implementar o PWM apresenta como inconveniente resultar em PWMs de baixa frequ ncia Por exemplo no caso desta experi ncia a interrupc o ocorre a cada 1ms e como o PWM t m 4 bits de resoluc o temos um per odo total de 16ms para o PWM Isto significa que a frequ ncia de 62 5H
355. itura sinal de e Envia um stop bit O exemplo da experi ncia foi elaborado utilizando os procedimentos descritos acima S o utilizados os bot es da linha 4 para manipular um valor de 8 bits mostrado no display LCD Este valor pode ser salvo e lido na mem ria EEPROM Os bot es das colunas 1 e 2 s o utilizados para incrementar e decrementar o valor mostrado no display O bot o da coluna 3 salva o valor do display na mem ria serial enquanto o bot o da coluna 4 utilizado para ler o valor salvo na mem ria serial 214 Esquema El trico 5V LIN4 220R SA13 SA14 SA15 SA16 5 6 o COL1 COL2 COL3 COL4 A hh 10K 210K 210K 10K NAAA 2 5 2 D S O O m 3 2 LDU DUDA DA J 5V 10K sd 0 MC1 RS 5V lt EN e 4MHz PIC16F877A 5V 24C256 10K 10K 1440 73 t 2411 WP 3 A2 901 5 GND SDAFS Pons I 2 9 x CJ4 Clock 12C o 5 CJ5 Data 0 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 215 Fluxograma VETOR DE RESET PULA P IN CIO DO PROGRAMA y CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs CONFIGUR
356. k 0 e SAU Jo de ENDERECO DO VETOR DE RESET PULA PARA CONFIG DEVIDO A REGIAO DESTINADA AS ROTINAS SEGUINTES UM HE IE NU GE JG E E ED ME NS E NE E IA ROTINA DE DELAY VARI VEL COM DURA O DE 1MS O VALOR PASSADO CARREGA TEMPO1 UNIDADES DE MS CARREGA TEMPOO P CONTAR 1MS LIMPA WDT PERDE TEMPO FIM DE TEMPOO N O VOLTA 2 INSTRUCOES SIM PASSOU SE 1MS FIM DE TEMPO1 NAO VOLTA 6 INSTRUCOES SIM RETORNA ck E ko ko o de o oko X o Se DE UM CARACTER NO DISPLAY ATUALIZA DISPLAY PORTD PERDE 1US PARA ESTABILIZACAO ENVIA UM PULSO DE ENABLE AO DISPLAY DELAY DE 1MS RETORNA de FR 8 o ko 200 ATU ROTINA DE ESCRITA EE AA AO ESTA ROTINA ESCREVE A LINHA 1 DA LINHA 1 M DADOS M PROG CLRF BCF OVLW CALL BSF Q gt O lt lt E LW Q SE LW Q SE LW a lt E LW Q SE LW Q SE LW Q SE LW Q SE LW Q SE LW Q SE LW Q lt E LW Q SE LW a SE LW Q lt E LW Q lt LW POPOPOPOPOPOPOPOPOPOPOPOPOPOPOR Q E E CLRF RETURN k xk xk xk ATUALIZA TELA LINHA 1 TEC MATRICIAL RS 0x80 ESCREVE RS ESCREVE ESCREVE 0
357. m 2 tipos catodo comum ou anodo comum No nosso caso os displays utilizados s o do tipo catodo comum isto o pino comum deve ser ligado ao terra e os segmentos devem ser ligados ao Vcc para acenderem Outra observac o importante que a pinagem descrita no desenho v lida para o tipo de display utilizado no MCMASTER Existem displays de outros tamanhos que possuem uma disposic o de pinos diferente Como cada segmento um led individual precisa se de um pino do PIC para controlar cada segmento Desta forma s o necess rios 8 pinos para acionar os 7 segmentos e mais o ponto decimal A fim de converter o valor bin rio de um algarismo em um valor de 8 bits que represente o este algarismo num display de 7 segmentos fez se uso de uma tabela de convers o Por exemplo para representar o algarismo 2 no display deve se acender os segmentos A B D EeG Como no kit MCMASTER o PORTD est conectado aos segmentos conforme a tabela Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 39 PIC Segmento RDO RD1 RD2 RD3 RD4 RD5 RD6 RD7 gt U Sionimolo para acender o algarismo 2 no display precisa se colocar o valor 01011011b no PORTD ou seja colocar em 1 os bits ligados aos segmentos que se deseja acender Assim no software deve ser criada uma tabela para converter cada valor bin rio numa representac o que posta nos segmentos PORTD
358. mento e infinitas vezes isto n o existe um limite para a quantidade de leituras que s o realizadas na mem ria de dados Por m no caso da escrita a mem ria EEPROM do PIC16F877A possui uma vida til limitada Atualmente o fabricante do componente garante uma vida til de aproximadamente 1 000 000 de ciclos de escrita Apesar deste n mero parecer extremamente alto existem casos no qual este limite pode ser atingido com relativa facilidade Portanto sempre que se desenvolve um sistema que utilize a mem ria EEPROM e que necessite realizar um n mero de escritas consider vel deve se pensar se o limite de 1 000 000 de ciclos ser ou n o atingido Exerc cios Propostos 1 Alterar a posi o onde o dado armazenado na mem ria EEPROM 2 Alterar o valor inicial do contador Acrescentar duas teclas uma para salvar o dado na mem ria e outra para ler o dado da mem ria Neste caso o contador n o pode ser salvo sempre que alterado apenas ser salvo quando a tecla correta for pressionada Quanto leitura deve ser realizada tanto na inicializa o do software como quando for ada pela tecla Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 73 Cap tulo 9 Experi ncia 7 Dimmer Objetivo O objetivo desta experi ncia ensinar ao aluno como regular a pot ncia fornecida a pequenas cargas atrav s do microcontrolador Para isso proposto um dimmer para uma l mpada incandescen
359. mento seja compat vel com os dois perif ricos Sendo assim escolheu se o endereco 7h 111b para a mem ria serial Para maiores informa es sobre o protocolo de comunica o da mem ria serial 241 C256 pode se consultar o data sheet dispon vel no CD Rel gio de tempo real RTC Utilizando o mesmo barramento C da mem ria serial MCMASTER possui um rel gio de tempo real modelo PCF8583P Com este componente o usu rio poder criar sistemas que contenham informa es como a hora e a data atual O rel gio utilizado completo ou seja capaz de contar dia m s ano inclusive bissexto semana hora minuto segundo e mil simo de segundo Al m de poder ser configurado de formas diferentes O data sheet deste componente est dispon vel no CD que acompanha o MCMASTER Pelo mesmo motivo j comentado na mem ria serial o rel gio foi configurado para utilizar o endere o Oh 000b a fim de poder compartilhar o mesmo barramento 1 C Como no caso da mem ria os pinos respons veis pela comunica o s o PIC Rel gio RTC Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 7 RC3 Clock SCL pino 6 RC4 Data SDA pino 5 Comunicac o serial RS 232 Quem n o deseja que seu projeto se comunique com um computador atualmente Esta outra tend ncia de mercado que os profissionais n o podem deixar de lado Seja para a configurac o de par metros para
360. mo que se fosse utilizada a instru o RETLW por m ao inv s de escrever 256 vezes a instrug o RETLW e o valor de retorno utilizou se a diretriz Em cada linha foram passados 16 argumentos desta forma no exemplo da experi ncia 20 o compilador substitui cada linha com a instru o DT por 16 instru es RETLW Este recurso n o altera em nada o c digo fonte e o funcionamento do programa Exerc cios Propostos 1 Fazer um software para controlar a temperatura do diodo Este software deve medir a temperatura e alterar o valor do PWM da resist ncia para manter a temperatura do diodo em constante em 50 2 Fazer um software para controlar a velocidade de rotac o do ventilador Este software deve medir rotac o e alterar o valor do PWM a fim de manter a rotac o constante Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 301 Cap tulo 23 Software de comunicac o serial SDCom O software SDCom dispon vel no CD pode ser utilizado para comunicac o entre o PC e o MCMASTER O software til para testar as experi ncias de n mero 17 e 20 O software foi desenvolvido sob a plataforma windows deve ser instalado atrav s do arquivo setup exe Pode ocorrer dele pedir para atualizar alguns arquivos do sistema Neste caso aconselh vel que o pr prio software execute esta tarefa O micro ser reiniciado e o arquivo setup exe dever ser executado novamente pelo usu rio Para a utiliza o d
361. ng indefinidamente Foi utilizado um flag para alterar o sentido da contagem sempre que um dos extremos atingido Foi feito o tratamento de debounce da tecla que consiste em testar repetidas vezes se a tecla foi realmente pressionada para somente depois executar a ac o correspondente Sempre que a tecla estiver solta o contador de debounce vari vel FILTRO inicializado e sempre que a tecla for pressionada o valor da vari vel FILTRO decrementado de forma que a tecla somente considerada pressionada quando o valor de FILTRO for igual a zero 20 Esquema El trico LIN4 220R SA13 SA14 SA15 SA16 o o o o COL1 COL2 COL3 COL4 10K 10K 10K 10K o3 2 1 5V 2 8 e 5 OO 5 2 2 3 RESET 10K E MC1 RL 39 PIC16F877A 330R 330R 330R 330R 330R 330R 330R 330R 0 1 2 3 4 5 Ro 7 Y Y G Y Y Y 1 Y 5V 4 7K BC337 1K Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA y CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs HABILITA LEDS ATIVA LINHA 4 DO TECLADO MATRICIAL CARREGA CONTADOR COM VALOR M NIMO 2 ATUALIZA LEDS RECARREGA FILTRO
362. o LCD Desta forma poss vel visualizar o dado transmitido Para facilitar ainda mais o usu rio mostra se o valor em decimal d e em hexadecimal h A comunica o realizada no padr o 8N1 com uma velocidade de 9 600bps Quanto recepc o o valor obtido pela porta serial diretamente impresso no display de LCD atrav s do c digo ASCII Para que o sistema funcione sem o PC basta interligar os pinos 2 e do conector 09 Isto far com que tudo que seja transmitido por TX seja imediatamente recebido em RX Tanto a transmiss o quanto a recepc o s o cont nuas N o se deve esquecer de habilitar a porta RS232 para o microcontrolador atrav s do bot o de modo de operac o ap s Para testar a comunicac o com o computador PC pode se utilizar o software SDCom dispon vel no CD Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 235 Esquema El trico 5V LIN4 220R SA13 SA14 SA15 SA16 o o o COL1 COL2 COL3 COL4 DAT 10K 3 2 1 o 5 9 3 S H VDD 227 8 n vo pe vss pB3 0 RS dob 5 RS PA 13 086 EN 14 DB7 RW LCD 5V 10K RESET 5V MC1 o o L
363. o Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 257 MOVLW B 00001100 CALL ESCREVE MOVLW B 00000110 CALL ESCREVE ck 5 c ESCREVE COMANDO PARA LIGAR O DISPLAY SEM CURSOR ESCREVE COMANDO PARA INCREM AUTOM TICO DIREITA Ao ko e X AR F ROTINA DE ESCRITA DA TELA PRINCIPAL 5 E e X YA X oc o ko X ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA COM AS FRASES LINHA 1 Teclado 4x4 LINHA 2 Linha Coluna MOVLW 0X82 CALL ESCREVE BSF RS OVLW ET CALL ESCREVE OVLW tes CALL ESCREVE OVLW Pet CALL ESCREVE OVLW t CALL ESCREVE OVLW CALL ESCREVE OVLW CALL ESCREVE OVLW CALL ESCREVE OVLW CALL ESCREVE OVLW B a CALL ESCREVE OVLW 14 CALL ESCREVE OVLW CALL ESCREVE OVLW 4 CALL ESCREVE BCF RS MOVLW OXCO CALL ESCREVE BSF RS OVLW ES CALL ESCREVE OVLW aut CALL ESCREVE OVLW ny CALL ESCREVE OVLW rhe CALL ESCREVE OVLW CALL ESCREVE OVLW se CALL ESCREVE OVLW t vt CALL ESCREVE OVLW Nu X CALL ESCREVE OVLW e CALL ESCREVE OVLW OY CALL ESCREVE OVLW uis COMANDO PARA POSICIONAR O CURSOR LINHA 0 COLUNA 2 SELECIONA O DISPLAY P DADOS COMANDOS PARA ESCREVER AS LETRAS DE Teclado 4x4 SELECIONA
364. o ko e A ko HH RESTAURAR OS VALORES DE W E STATUS ANTES DE RETORNAR SAI INT SWAPF STATUS TEMP W MOVWF STATUS COPIA STATUS TEMP PARA STATUS SWAPF W TEMP F SWAPF W TEMP W COPIA W TEMP PARA W RETFIE RETORNA DA INTERRUPCAO AAA e ANA AE oA ck Wo AAA RA EXA ok xo wk ERA ROT TABELA DE ACERTO DA FREQU NCIA DO BUZZER E E RA 8 oko es ck ck ck E AA Wo AE ACERTA_FREO MOVF STATUS BOTOES W COLOCA STATUS BOTOES EM W ADDWF PCL F SOMA STATUS BOTOES AO PCL CRIANDO UMA SELE O TIPO CASE CONFORME TABELA ABAIXO gt LIBERARO X PRESSIONADO BT3 BT2 BT1 BTO RETLW 255 Po RETLW 16 x RETLW 32 x RETLW 48 x x RETLW 64 Es E x 5 RETLW 80 pa x x RETLW 96 x x RETLW 112 x x x RETLW 128 X 5 RETLW 144 X x RETLW 160 X x RETLW 176 X x x RETLW 192 X x 5 RETLW 208 X x x RETLW 224 X x x RETLW 240 X x x x ES CONFIGURAC ES INICIAIS DE HARDWARE E SOFTWARE X A de X 00k oko oe E Ck ko ok Ck Ck ko ko e oko Ck ck C Ok Ck A X NESTA ROTINA S O INICIALIZADAS AS PORTAS DE 1 0 DO MICROCONTROLADOR E AS CONFIGURA ES DOS REGISTRADORES ESPECIAIS SFR A ROTINA INICIALIZA A
365. o software deve se inicialmente selecionar a porta COM de comunica o e o baud rate desejado 302 Cap tulo 24 Software demo para teste do hardware A fim de validar o hardware do MCMASTER servindo como uma giga de testes fornecido tamb m um software que pode ser utilizado para testar a funcionabilidade de quase todos os recursos do sistema Para este software n o fornecido o c digo fonte apenas o arquivo HEX est dispon vel no CD Como padr o este software j vem gravado no microcontrolador por m a qualquer momento o usu rio pode testar o funcionamento do hardware do MCMASTER regravando o arquivo HEX O software de teste pode ser executado sem intera o com o usu rio por m recomendamos que o usu rio fa a a intera o com o software a fim comprovar o correto funcionamento de todos os componentes do sistema Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 303 ndice A Esquema el trico completo do MCMASTER A tulo 25 A p Ca i i 1 gt 1 I al A i E 2 EOD 30 Y i A i o 8 co 1 s SZ 5 s gt 1 z 1 QE p e 4 1 Pd 122
366. ok ce 8 c 00000 X ok ck As cA CONFIGURA ES PARA GRAVA O SX ow Xs ke MARX 0006 RO BM o ER RRA ER A 0X 8 CONFIG CP OFF CPD OFF amp DEBUG OFF LVP OFF amp WRT OFF amp BODEN OFF PELO SISTEMA CBLOCK 0x20 W TEMP STATUS TEMP CONTADOR FLAGS FILTRO ENDC DE REDIGITACAO P16F877A INC 1 HDEF INE BANK1 BSF SDEFINE BANKO BCF SDEFINE SENTIDO FLAGS 0 81 PWRTE ON amp _WDT_OFF amp XT OSC deo e ode AE CA CF A AE A de e coc VARI VEIS RM des es EE o ok ko A Os cO OK Ck E AA AR DEFINI O DOS NOMES E ENDERE OS DE TODAS AS VARI VEIS UTILIZADAS ENDERECO INICIAL DA MEM RIA DE USU RIO REGISTRADORES TEMPOR RIOS PARA INTERRUPCOES ESTAS VARI VEIS NEM SER O UTI LIZADAS ARMAZENA O VALOR DA CONTAGEM ARMAZENA OS FLAGS DE CONTROLE FILTRAGEM PARA O BOT O FIM DO BLOCO DE MEM RIA de ode sk es e x ox o ko Wk CE ck Ae OA wk 0 gt ke oe P DEFINIC O DAS VARI VEIS INTERNAS DO PIC dx 4 We oko de o ko ok Ck ok ode Ok
367. oke ook Ko Kk E Ko e Ok oe eo e eo e cx A X Ck RA FIM DO PROGRAMA s 4e Ck aku Ski e wes e we Ok CK decode e oko FIM DO PROGRAMA Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 161 Dicas e Coment rios Este tipo de conversor A D n o apresenta uma boa precis o al m de apresentar uma s rie de inconvenientes e Note que a tens o sobre o capacitor n o varia linearmente no tempo e portanto este tipo de conversor A D n o linear e O valor da convers o ou seja o tempo de carga do capacitor est sujeito s varia es dos componentes envolvidos e Normalmente o capacitor muito suscet vel a varia es t rmicas e A tens o de entrada deve ser suficientemente alta para que o PIC entenda n vel l gico 1 por isso este conversor n o funciona no range completo de 0 a 5V e O valor de tens o necess rio para que o PIC entenda n vel l gico 1 pode variar em fun o da pastilha da tens o da fonte alimenta o do PIC e do tipo de pino TTL ST Como dica podemos sugerir e Utilizar Rs pelo menos 10 vezes menor que Ra e N o utilizar capacitores maiores do que 1u F e Dar prefer ncia ao uso de capacitores de t ntalo ou cer mico e N o discretizar mais do que oito n veis Exerc cios Propostos 1 Admitindo que a tens o de entrada varia entre O e 5V
368. ondi es nos pinos de entrada e altera es de estado nos pinos de sa da al m de instrucdes para controle do fluxo do programa Descric o Sistema muito simples para representar o estado de um bot o atrav s de um led Com o bot o pressionado o led ligado e com o bot o solto o led apagado O software inicia configurando os pinos de l Os atrav s dos registradores TRIS e dos registradores de perif ricos pertinentes Em seguida o software habilita a linha 4 do teclado matricial e o grupo de leds ligados ao PORTD A partir da o software entra num loop infinito onde o bot o da linha 1 coluna 4 testado e seu estado reproduzido no led O ligado ao pino RDO Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 13 Esquema El trico LIN4 220R SA13 SA14 SA15 SA16 5 COL1 2 COL4 10K 10K 10K 10K 3 2 1 5V 5 e 2 S RESET 10K 5V MC1 na PIC16F877A 330R 330R 330R 330R 330R 330R 330R 330R 0 1 2 3 4 5 lt 7 Y y G y y y 1 5V 4 7K BC337 M 14 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION
369. ot o da coluna 1 sendo que o lado ativo no momento indicado entre os sinais gt e lt Depois de ajustados os valores desejados basta pressionar o bot o da coluna 4 para que ambos valores sejam gravados cada um na mem ria correspondente Para checar a gravac o altere os valores e reset o sistema bot o de reset Os valores gravados ser o recuperados na inicializac o e mostrados no LCD Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 191 Esquema El trico SA13 LIN4 220R SA14 SA15 SA16 COL1 COL2 COL3 COL4 5V 10K 10K MC1 VDD vss S 10K 10K 2 A 084 5V RB7 ero RB5 RB4 22 RB3 RB2 5 RB1 2 RD7 RD6 gt lt RD5 RDA 22 RD3 RD2 RD1 RDO 2 06 PIC16F877A 5V voD 2 gt lt 10K VO E pp vss DB3 DB4 A AS DB RS DB6 Bo Li DB7 Rnw Don Y LCD 192 Fluxograma IN CIO VETOR DE RESET PULA P IN CIO DO PROGRAMA CONFIGURA ES INICIAIS PORTAS TIMERS INTERRUP ES OPTION ADs DO WDT Sim LIMPA A RAM INICIALIZA DISPLAY CARREGA ENDERE O A SER LIDO DA MEM RIA DE
370. otalizando 16 teclas O acionamento das linhas do teclado feito simultaneamente com os comuns dos displays de 7 segmentos Desta forma ao acionar o display da unidade aciona se tamb m a linha 4 do teclado matricial Junto com o display da dezena a linha 3 e assim por diante A tabela abaixo mostra esta rela o Pino PIC Estado Teclado Matricial Display de 7 segmentos RB7 1 linha 4 ativada unidade ativada 0 linha 4 desativada unidade desativada RB6 1 linha 3 ativada dezena ativada 0 linha 3 desativada dezena desativada RB5 1 linha 2 ativada centena ativada 0 linha 2 desativada centena desativada RB4 1 linha 1 ativada milhar ativada 0 linha 1 desativada milhar desativada As colunas podem ser lidas atrav s dos pinos RBO RB1 RB2 e RB3 conforme a tabela a seguir Pino PIC Estado Teclado Matricial RBO 1 Alguma tecla pressionada na coluna 1 0 Nenhuma tecla pressionada na coluna 1 RB1 1 Alguma tecla pressionada na coluna 2 0 Nenhuma tecla pressionada na coluna 2 RB2 1 Alguma tecla pressionada na coluna 3 0 Nenhuma tecla pressionada na coluna 3 RB3 1 Alguma tecla pressionada na coluna 4 0 Nenhuma tecla pressionada na coluna 4 Vale observar que para o correto funcionamento do teclado os jumpers relacionados com os pinos RBO e RB4 devem estar configurados na posi o ON Buzzer Para chamar a aten o do usu rio e confirmar certas
371. ovv AAA ck go e 0 0 eo A XA 9 ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 INDO DE 0X20 A OX7F SEGUIDA AS VARI VEIS DE RAM DO PROGRAMA S O INICIALIZADAS MOVLW 0x20 MOVWF FSR APONTA O ENDERECAMENTO INDIRETO PARA A PRIMEIRA POSI O DA RAM LIMPA_RAM CLRF INDF LIMPA A POSI O INCF FSR F INCREMENTA O PONTEIRO P A PR X POS MOVF FSR W XORLW 0 COMPARA O PONTEIRO COM A LT POS 1 BTFSS STATUS Z J LIMPOU TODAS AS POSI ES GOTO LIMPA RAM N O LIMPA A PR XIMA POSI O SIM o DE ok oe BE o Ae cA ch ed PON CONFIGURAC ES INICIAIS DO DISPLAY de est oko ck o vk ck ko d oA 0 RM MR ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 LINHAS CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA INICIALIZACAO DISPLAY BCF RS SELECIONA O DISPLAY P COMANDOS MOVLW 0x30 ESCREVE COMANDO 0X30 PARA CALL ESCREVE INICIALIZA O MOVLW 3 CALL DELAY_MS DELAY DE 3MS EXIGIDO PELO DISPLAY MOVLW 0x30 ESCREVE COMANDO 0X30 PARA CALL ESCREVE INICIALIZA O 146 LW LW LW LW LW LW LIN LIN MOV HA 1 HA 2 LW CAL BSF Q Q Q Q Q Q Q Q C Q Q lt O O 0 0 lt 0 lt O lt O
372. p ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0 MOVLW 0x20 lt ck k XxX k xk XxX Xx INDO DE 0X20 A 0X7F 272 MOVWF LIMPA RAM CLRF INCF MOVF XORLW BTFSS GOTO FSR INDF FSR F FSR W 0x80 STATUS Z LIMPA_RAM KOR X gt lt CONFIGURA ES APONTA O ENDERE AMENTO INDIRETO PARA A PRIMEIRA POSI O DA RAM LIMPA A POSI O INCREMENTA O PONTEIRO P A PR X POS COMPARA O PONTEIRO COM A LT POS 1 J LIMPOU TODAS AS POSI ES N O LIMPA A PR XIMA POSI O SIM de OW oko oko s X INICIAIS DO DISPLAY ko ck ck k k Xx Xx k k k k k Xx X ESTA ROTINA INICIALIZA O DISPLAY P COMUNICA O DE 8 VIAS DISPLAY PARA 2 CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA LINHAS BCF OV L LW LW L LW L LW L LW L LW L LW L LW L LW Ll INICIALIZACAO DISPLAY RS 0x30 ESCREVE 3 DELAY_MS 0x30 ESCREVE 0x30 ESCREVE B 00111000 ESCREVE B 00000001 ESCREVE DELAY_MS B 00001100 ESCREVE B 00000110 ESCREVE E EX Xx ko ck ck Xx ROTINA DE ESCRITA MX 0k ok oko E 0k X ESTA ROTINA ESCREVE A LINHA 1
373. pal do programa Assim todas as instru es do software e toda a sua l gica est implementada apenas dentro das interrup es sendo parte na interrup o de TMRO e parte na interrup o de TMR2 Exerc cios Propostos 1 Alterar a configura o do TMR2 para que o buzzer seja excitado em outra faixa de frequ ncias 2 Utilizar a instru o boleana XOR para inverter o estado do pino do buzzer 3 Inverter a escala de frequ ncias trocando a mais alta pela mais baixa Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 99 Cap tulo 11 Experi ncia 9 Varredura de displays e utilizac o do TIMER 1 Objetivo O objetivo desta experi ncia o aprendizado do sistema de varredura comumente utilizado para varrer displays de 7 segmentos Al m disso visto o TMR1 fechando assim o estudo sobre os tr s times do PIC16F877A Descric o Cada display formado por um conjunto de 8 leds sendo 7 para a caracterizac o do d gito e 1 para o ponto decimal Desta forma precisaremos de um pino do PIC para controlar cada um dos leds e portanto ser o necess rios 8 pinos para acionar os 7 segmentos e mais o ponto decimal Por m o MCMASTER n o possui apenas um display e sim quatro Seriam necess rios ent o 32 pinos do microcontrolador para acionar os quatro displays N o existe uma sa da para isso O segredo para minimizar a quantidade de pinos utilizados o emprego de um conceito denominado
374. r CARREGA WORK EM mulplr 10 mulcnd CARREGA 10d EM mulcnd mpy F CHAMA ROTINA DE MULTIPLICACAO L byte W 298 ANDLW B 00110000 IORLW B 00001111 RRE H byte F RRE L byte F RRE Ho byte F MOVWF CCP2CON RRE L byte W MOVWF CCPR2L GOTO VARRE TRATA_BOTAO_3 DECFSZ FILTRO BOTOES F GOTO VARRE DECFSZ TEMPO TURBO F GOTO VARRE OVLW TURBO TECLA OVWFE TEMPO TURBO OVF INTENSIDADE VENT F BIFSS STATUS Z DECF INTENSIDADE_VENT F OVF INTENSIDADE VENT W OVWE mulplr OVLW 10 OVWF mulcnd CALL mpy F SWAPF L byte W ANDLW B 00110000 IORLW B 00001111 RRE H byte F RRE L byte F RRE H byte F MOVWF CCP2CON RRE L byte W MOVWF CCPR2L GOTO VARRE ORG 0x200 RADIX DEC TABELA TEMPERATURA MOVLW HIGH TABELA TEMP MOVWF PCLATH MOVLW LOW TABELA_TEMP ADDWF TEMPERATURA W BTFSC STATUS C INCF PCLATH F MOVWF PCL TABELA TEMP ATUALIZA REGISTRADORES DO DUTY CYCLE DO M DULO CCP2 PWM DO VENTILADOR VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO 3 FIM DO FILTRO RUIDO NAO VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO N O VOLTA P VARRE SIM RECARREGA TEMPORIZADOR DO TURBO DAS TECLA
375. r OPERADOR P ROTINA DE MUTIPLICAC O mulcnd OPERADOR P ROTINA DE MUTIPLICA O TEMPOO TEMPO1 TEMPORIZADORES P ROTINA DE DELAY AUX REGISTRADOR AUXILIAR DE USO GERAL UNIDADE ARMAZENA VALOR DA UNIDADE DA TENS O DEZENA ARMAZENA VALOR DA DEZENA DA TENS O ENDC X o DR e Ck ok E ko e oe A ok e de ck e Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 141 DEFINI O DAS VA RI VEIS INTERNAS DO PIC T OX X AS AA ARE E E A oko 0 Gb Ao o ck eo ARQUIVO DE DEFINICOES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS SEM A NECESSIDADE DE REDIGITACAO HINCLUDE P16F877A INC oA 0 A ERA cA koc ck o X ko de DEFINI O OS PSEUDOS COMANDOS BANKO E B ENTRE OS BANCOS DE MEM RIA SDEFINE SDEFINE MICROCONTROLADOR UTILIZADO DOS BANCOS DE Beo X ck AXE A ok ck de ko Xs ko Ko oko CAO A A AXE ANK1 AQUI DEFINIDOS AJUDAM A COMUTAR BANK1 BSF STATUS RPO SELECIONA BANK1 DA MEMORIA RAM BANKO BCF STATUS RPO SELECIONA BANKO DA MEMORIA RAM X X AA e AE
376. r s modifica es no primeiro exerc cio proposto da experi ncia 15 e Utilize a mem ria externa e Limite os dados mostrados no display entre 0x41 e 0x5A e Mostre os dados em ASCII ou seja entre A 0x41 e Z 0x5A 2 Utilizando o exerc cio anterior grave na mem ria uma mensagem de at 16 caracteres Depois crie um programa que ao ser inicializado leia os 16 caracteres da mem ria e mostre a mensagem lida no LCD 234 Cap tulo 19 Experi ncia 17 Comunicac o serial RS232 via USART Objetivo O objetivo desta experi ncia o aprendizado do m dulo USART do microcontrolador PIC16F877A utilizado para implementar a comunicac o padr o RS232 geralmente utilizada para estabelecer um canal de comunicac o entre um microcontrolador e um computador Descric o Para tornar o sistema vers til e simples criou se um programa capaz de testar a transmiss o e recep o de dados de modo isolado ou seja apenas com o MCMASTER sem necessariamente conecta lo ao computador Embora nada impeca que a comunicac o com o PC seja efetivamente realizada Para atender esta necessidade o software da experi ncia implementa uma comunicac o ass ncrona Full duplex isto com a transmiss o e a recepc o ativadas simultaneamente O valor transmitido obtido a partir da leitura da tens o do potenci metro atrav s do conversor A D limitando este valor entre O e 255 8 bits O valor do A D ent o enviado para a porta serial e para
377. s xk xk XxX xk k xk xk XxX Xx TRATAMENTO DO BOTAO DE UP TRATA_BT_UP BTFSC ESTADO_TIMER GOTO VARRE GOTO VAR DECFSZ TE GOTO VAR OVLW TUR OVWF TE CALL INC GOTO VAR DECFSZ FILTRO_BOTOES F RE PO_TURBO E RE BO_TECLA PO_TURBO REMENTA_TIMER RE TIMER EST PARADO N O VOLTA P VARRE SIM FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO N O VOLTA P VARRE SIM RECARREGA TEMPORIZADOR DO TURBO DAS TECLAS INCREMENTA O VALOR DO TIMER VOLTA P VARREDURA DOS BOT ES TRATAMENTO DO BOTAO DE DOWN TRATA_BT_DOWN BTFSC GOTO VAR GOTO VAR DECFSZ TE GOTO VAR OVWE TE CALL DEC GOTO VAR ESTADO TIMER RE DECFSZ FILTRO BOTOES F RE PO TURBO F RE OVLW TURBO TECLA PO TURBO REMENTA TIMER RE TIMER EST PARADO N O VOLTA P VARRE SIM FIM DO FILTRO RUIDO N O VOLTA P VARRE SIM BOT O PRESSIONADO FIM DO TEMPO DE TURBO N O VOLTA P VARRE SIM RECARREGA TEMPORIZA
378. s PIC MCMASTER 49 Cap tulo 7 Experi ncia 5 Timer de segundos Objetivo O uso de rotinas de delays para contagem de tempo nem sempre pode ser aplicado uma vez que este tipo de rotina deixa o processador parado Um recurso muito mais adequado para a contagem de tempos a utiliza o do timer do microcontrolador Este o objetivo desta experi ncia Ensinar ao aluno como configurar e utilizar o timer e a interrupc o Descric o Esta experi ncia cria um timer decrescente em segundos O valor inicial determinado pela constante V_INICIO e pode estar entre 1 e 15 segundos Os bot es ativos s o os da linha 4 O bot o da coluna 1 dispara o timer mostrando o tempo restante no display O da coluna 2 paralisa o timer O led ligado ao pino RCO utilizado para indicar o estado atual do timer sendo acesso se o timer estiver rodando e apagado se o timer estiver parado O timer utiliza como base de tempo a interrupc o de TMRO sendo que esta ocorre quando o timer estoura ou seja quando o valor do TMRO pula de OxFF para 0x00 Assim o intervalo de tempo entre interrupc es ir depender do prescaler configurado para o timer do valor inicial com que ele carregado e do tempo de execuc o de um ciclo de m quina No exemplo desta experi ncia sempre que se entra na interrupc o de TMRO o contador do timer carregado com 131 de forma que sempre se fa a 125 contagens pois o timer ir contar de 131 at 256 e quando voltar a
379. s dde ko AR E AAA ESTE BLOCO DE VARI VEIS EST LOCALIZADO LOGO NO IN CIO DO BANCO 0 STRADOR AUXILIAR DE USO GERAL DEFINI O DOS BANCOS DE RAM XX ok ode o 0e o ck o e o 0k e Ck A ok oko X ce de oko X ok y ok de ck o o A E e oko ck ko ce E o c ko ko de x BANKO E BANK1 AQUI DEFINIDOS AJUDAM A COMUTAR 81 TATUS 81 TATUS SELECIONA BANK1 DA MEMORIA RAM SELECIONA BANKO DA MEMORIA RAM CONSTANTES INTERNAS Rd oe E AAA Ck o ko ko ck E e ck A x de AAA E ok 0 ko d Ak ko RR e oc Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 167 A DEFINI O DE CONSTANTES FACILITA A PROGRAMA O E A MANUTEN O FILTRO TECLA EQU 200 ERA EXA E AER FILTRO P EVITAR RUIDOS DOS BOT ES SRU Xx Xk k xk XxX k Xx Bw DECLARAC O DOS FLAGs DE SOFTWARE 5 ERA E RA 4c e Uh UO ko A DEFINIC O DE FLAGs AJUDA NA PROGRAMAC O E ECONOMIZA MEM RIA RAM ESTE PROGRAMA N O UTILIZA NENHUM 0 00
380. s o capacitor estar descarregado colocar o pino do microcontrolador em entrada e come ar a contar o tempo que o capacitor leva para se carregar ou seja quanto tempo o capacitor leva para atingir n vel l gico 1 e Este tempo de carga proporcional ao valor do circuito RC e portanto pode ser utilizado para determinar a posi o do jumper Perif ricos Adicionais A seguir ser o explanados os perif ricos adicionais contidos na placa de experi ncias EXP01 que acompanha o kit MCMASTER Placa de experi ncias EXPO1 Entre outras fun es a placa de experi ncias EXPO1 possui um sistema completo para monitoramento e controle de temperatura com um sensor e dois atuadores Desta forma tem se um sensor de temperatura um atuador de aquecimento resist ncia controlada por PWM e um atuador de resfriamento ventilador controlado por PWM Al m disso um sistema ptico ligado s h lices do ventilador capaz de criar um tac grafo para monitoramento e controle de rotac o Possui tamb m uma l mpada incandescente al m de gerar uma tens o de refer ncia est vel em 2 5V que pode ser utilizada como refer ncia para o conversor A D 10 Com tudo isso pode se criar experimentos e projetos complexos de controle comecando em um simples controle ON OFF at um avancado controlador PID Sensor de temperatura A placa possui um circuito que utiliza um diodo de sinal como elemento sensor do medidor de temperatura ambiente O sinal
381. t energizado Exerc cios Propostos 1 Altere o software para mostrar a data e a hora no display LCD 2 Crie um software para ajustar a data e hora do rel gio utilizando o teclado matricial 276 Cap tulo 22 Experi ncia 20 Sistema de temperatura e tac metro Objetivo O objetivo desta experi ncia mostrar a maioria os recursos dispon veis na placa de experi ncias EXPO01 Descric o O monitoramento da temperatura um dos problemas mais cl ssicos enfrentado pela maioria dos projetistas Como o MCMASTER possui um sensor de temperatura diodo e dois atuadores aquecimento resist ncia e resfriamento ventilador nada melhor que implementar um sistema capaz de obter a temperatura atual para mostr la no LCD O sensor de temperatura Para obter a temperatura ambiente fez se uso de um diodo Como o diodo um componente que apresenta uma queda de tens o sobre ele proporcional a temperatura do mesmo basta monitorar a tens o para encontrar a temperatura Para isso o circuito eletr nico faz uso de um diodo de sinal convencional 1N4148 ligado a um amplificador e a uma porta anal gica do PIC Tamb m est ligado ao amplificador um potenci metro a fim de alterar o off set da curva ajustando assim a temperatura com uma refer ncia externa Internamente o sistema trabalha com uma convers o A D de 8 bits gerando 256 poss veis valores de tens o para o diodo Para cada valor obtido tem se uma temperatura
382. t LINHA ATIVADA 0 LINHA DESATIVADA de A de E 1 LEDS TECLADO E dE E ML dE UNE ME NU NE E E E EE OM VETOR DE RESET 0 de ec UA ENDERECO INICIAL DE PROCESSAMENTO de 3x c eo ck oko oko A ko oo E oko ko e ko Xx Ao IN CIO DA INTERRUP O ETE ck de A o Ck A ko X ko ko ko X SR 0 ck EX xXx o ck ok INICIO Ae 0 Kk X oko A POR 1550 PODEMOS SUBSTITUIR TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ESTE SISTEMA N O OBRIGAT RIO MAS PODE EVITAR PROBLEMAS FUTUROS ENDERECO INICIAL DA INTERRUPCAO RETORNA DA INTERRUP O 4e ck lt ko oqka ko ko A ko gt E XA k ko kx kk DO PROGRAMA 4c de A 0 oo LIMPA LIMPA LIMPA LIMPA LIMPA PORTA PORTB PORTE PORTD PORTE ALTERA PARA O BANCO 1 DA RAM CONFIGURA I O DO PORTA CONFIGURA I O DO PORTB Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 25 OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF OVLW OVWF BANKO MOVLW MOVWF MOVWF MAIN MOVLW MOVWF CHECA_BT BTFSC GOTO DECFSZ GOTO TRATA BT BTFSS GOTO SUBTRAI DECF OVLW
383. te onde a pot ncia de l mpada regulada atrav s do uso de um PWM criado no software Descri o Software que utiliza dois bot es para incrementar e decrementar a intensidade da l mpada A interrup o de tmrO utilizada para controlar o PWM que aciona a l mpada A intensidade tamb m mostrada no display da unidade Os bot es ativos s o os da linha 4 O bot o da coluna 1 incrementa a intensidade da l mpada e o da coluna 2 decrementa a intensidade Foi criado um PWM com 4 bits de resolu o de forma que existem 16 intensidades diferentes para a l mpada Para sua implementa o utilizou se a interrup o de TMRO sendo que a cada interrup o uma vari vel incrementada Esta vari vel utilizada para subdividir o PWM em 16 intervalos Comparando esta vari vel com o duty cycle ajustado pelo usu rio o software coloca o pino da l mpada em n vel l gico 1 ou O conforme a necessidade A cada 16 interrup es o ciclo se repete e portanto o per odo do PWM 16 vezes maior do que o per odo de uma interrup o Este procedimento pode ser facilmente analisado pelo fluxograma da experi ncia 74 Esquema El trico Placa de Experi ncia i i 12V 1 i i 220R i 1 051 052 053 054 1 Em Milhar Centena Dezena Unidade H i BC337 uM
384. trav s de DEFINES no in cio do software o que facilita futuras alterac es na pinagem do hardware Repare tamb m que o exemplo extremamente simples e nenhum tipo de tratamento de debounce para a tecla foi utilizado Exerc cios Propostos 1 Altere a l gica do sistema ou seja com o bot o pressionado o led deve permanecer apagado e com o bot o liberado o led deve permanecer acesso 2 Altere o software a fim de trocar a tecla ativa passando por exemplo a utilizar a tecla da linha 4 coluna 2 3 Altere o software para ligar desligar outro led por exemplo o led ligado ao pino RD3 Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 19 Cap tulo 4 Experi ncia 2 Contador Simplificado Objetivo O objetivo desta experi ncia ensinar os recursos de software comumente utilizados para tratamento de debounce de teclas e a manipulac o de vari veis declaradas na RAM do microcontrolador Descric o O software faz uso do grupo de leds para representar de forma bin ria o valor da vari vel CONTADOR declarada na RAM do microcontrolador Utilizando o bot o da linha 4 coluna 1 altera se o valor da vari vel atrav s de instru es de incremento e decremento O valor est limitado por constantes declaradas no in cio do c digo Como apenas um bot o utilizado a vari vel incrementada at o valor m ximo e em seguida decrementada at o valor m nimo permanecendo neste loopi
385. ura aplicada aqui habilitar uma linha de cada vez e analisar se alguma tecla da linha habilitada est pressionada Para isso deve se configurar o microcontrolador com os pinos das linhas como sa da e os pinos das colunas como entrada Note que se todas as linhas estiverem em n vel l gico 0 ou seja se nenhuma linha estiver habilitada ao ler o estado das colunas sempre ser lido o valor O estando as teclas pressionadas ou n o Na verdade o microcontrolador estar lendo o estado dos resistores que no caso s o de pull down ou seja leitura em 0 Por m se habilitarmos uma das linhas e apenas uma colocando a em n vel l gico 1 e pressionarmos uma tecla dessa linha ao lermos o estado das colunas encontraremos um bit em 1 sendo que a posic o do bit em 1 sinalizar a coluna na qual a tecla foi pressionada Como foi o pr prio microcontrolador que habilitou a linha o n mero da linha conhecido e como a posic o do bit em 1 define a coluna da tecla f cil determinar a linha e coluna da tecla pressionada O conceito de varredura continua v lido pois apenas uma linha deve ser habilitada de cada vez e o microcontrolador deve ficar o tempo todo alterando varrendo a linha habilitada e lendo o estado das colunas Enquanto nenhum bit das colunas valer 1 a varredura das linhas continua sendo executada Ao encontrar uma coluna com tecla pressionada o software deve executar o filtro de debounce mantendo a linha atual habilitada at que
386. ve se converte lo em um caractere ASCII Para facilitar as contas e n o utilizarmos n meros fracion rios a convers o para Volts feita considerando se 50 no lugar de 5 0 de forma que ao enviar o valor final ao LCD simplesmente colocada uma v rgula entre os dois d gitos Exerc cios Propostos 1 Simule que a entrada anal gica um sensor de temperatura linear que deve marcar de 10 a 80 C 2 Altere o exemplo para indicar a tens o entre O e 2 50V utilizando 10 bits de resolu o Para isso fa a uso da tens o de refer ncia externa existente na placa de perif ricos pino RAS Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 149 Cap tulo 14 Experi ncia 12 Convers o A D via RC Objetivo Nesta experi ncia ser vista uma forma de convers o A D fundamentada no tempo de carga de um capacitor A vantagem desta t cnica que o microcontrolador n o necessita possuir um conversor A D interno para estimar o valor de uma vari vel anal gica Descri o A t cnica descrita nesta experi ncia baseia se na carga e descarga de um capacitor A id ia consiste em medir atrav s do microcontrolador o tempo de carga de um capacitor num circuito RC Veja o exemplo de hardware colocado a seguir PIC Admitindo se que o pino do PIC est configurado como entrada o tempo de carga do capacitor C est relacionado com o valor de entrada Vin do resistor Ra e do pr prio
387. xk k k xk XxX k koX ROTINA PARA TESTAR SE O ACK FOI RECEBIDO 0X 00K 0d K 0o oko ck ck o ooo Ck oko ko ko ck oko Ck ko ck ko ko ck ok k ks 3 TA O BIT DE ACK RECEBIDO NO REGISTRADOR SSPCON2 PARA TANTE DO SOFTWARE A ROTINA COPIA ESTE FLAG NO FLAG F ERRO PRESENTE NO BANCO 0 DA RAM POIS O REGISTRADOR SSPCON2 ENCONTRA SE NO BANK1 TESTA ACK BAN K1 BTFSC SSPCON2 ACKSTAT GOTO RECEBEU NACK BAN BCF RET KO F_ERRO URN RECEBEU_NACK BAN BSF RET Ks dA Oeo KO F_ERRO URN ALTERA P BANK1 RECEBEU ACK N O SINALIZA ERRO SIM VOLTA P BANKO LIMPA FLAG DE ERRO RETORNA VOLTA P BANKO SETA FLAG P INDICAR ERRO RETORNA ck X ko ko Wk oe c Ck Ck CK Ck C LEITURA DO RELOGIO RTC VIA I2C F XA Mc X 0X We X 09 0o Ck AXE A oko de de o ESTA ROTINA L O RELOGIO RTC EXTERNO VIA COMUNICA O I2C 270 I2C READ RTC BANK1 BSF SSPCON2 SEN BANKO CALL AGUARDA I2C LIVRE MOVLW B 10100000 MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F_ERRO GOTO I2C ERRO MOVF ENDERECO W MOVWF SSPBUF CALL AGUARDA I2C LIVRE CALL TESTA ACK BTFSC F ERRO GOTO 120 ERRO BANK1 BSF SSPCON2 RSEN BANKO CALL AGUARDA I2C LIVRE MOVLW B 10100001 MOVWF SSPBUF CALL AGUAR
388. z ou seja o PWM implementado via software apresenta baixa freq ncia Al m disso se ele fosse de por exemplo 8 bits o per odo passaria para 256ms e portanto a freq ncia cairia para aproximadamente 4Hz ou seja extremamente baixa Note que quanto maior a resoluc o desejada maior o per odo do PWM Exerc cios Propostos 1 Altere a frequ ncia do PWM alterando a base de tempo do TMRO para 100us 2 Altere o PWM para trabalhar com apenas 2 bits de resoluc o 3 Acrescente as rotinas de leitura e escrita na EEPROM para salvar e recuperar a intensidade da l mpada mesmo na falta de energia Manual do Usu rio Sistema de Treinamento em Microcontroladores PIC MCMASTER 85 Cap tulo 10 Experi ncia 8 Bot es Leds e Buzzer Objetivo O objetivo desta experi ncia dar continuidade ao aprendizado das interrup es e em particular interrup o de TMR2 utilizada nesta experi ncia para excitar o buzzer Descri o O buzzer utilizado no MCMASTER n o do tipo auto oscilante ou seja este tipo de buzzer precisa ser excitado externamente para emitir algum som Assim o microcontrolador deve ser respons vel por gerar uma onda quadrada a fim de excitar o piezo el trico e fazer com que o buzzer emita algum som Operar com este tipo de buzzer muito mais trabalhoso do que com um buzzer auto oscilante j que n o basta ligar lo necess rio aplicar uma onda quadrada para que o buzzer funcione Por m ele

Download Pdf Manuals

image

Related Search

Related Contents

VM150 EDITION  BENDIX BW2473 User's Manual  CMI 563 User Manual - Oxford Instruments  27 MHz FERNSTEUERUNG  FR MODE D`EMPLOI  User's Manual  Installation, Care & Use Manual Manual de Instalación, Cuidado y  MAG II エアアシステッドエアレス 自動スプレーガン取扱説明書  Oregon Scientific DV33 User's Manual  

Copyright © All rights reserved.
Failed to retrieve file