'*********************************************************** '* Programa TESTE_DISP_BIG.BAS '* Desenvolvido por Márcio José Soares '* '* Permite testar o DISPLAY 7 SEGMENTOS BIG (com leds) '* Realiza contagem de 0 a 9 sequencialmente '* e pisca ponto para demonstrar funcionamento do display '* '* Dados são inseridos "serialmente" através do shift register '* 74HC595. '*********************************************************** '*********************************************************** '* Microcontrolador: Basic Step 1 Firmware 2.6 ou superior '* Compilador: Tbasic 1.0.0.0 '* Tamanho do programa compilado: 140 bytes '*********************************************************** '*********************************************************** '* Maiores informações sobre o projeto podem ser obtidas '* através do site '* http://www.arnerobotics.com.br '*********************************************************** '*********************************************************** '* O Copyright deste programa está reservado para '* Márcio José Soares e seu conteúdo está protegido pela '* Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro '* de 1998. É estritamente proibida o uso comercial, como '* também a publicação total ou parcial dos onteúdos aqui '* apresentados sem prévia autorização, por escrito, do autor. '*********************************************************** symbol dados = pin3 'pino para dados symbol clock = 0 'endereço do pino de clock (74HC595) symbol transf = 1 'endereço do pino de transf. (74HC595) symbol hab = 2 'endereço do pino de enable (74HC595) symbol i = b0 'variável para contador de uso geral symbol bits = b1 'variável para contador de bits symbol dado = w1 'variável p/ dados para display '*********************************************************** '* Setup do Basic Step '*********************************************************** inicio: dirs=%01111111 'todos pinos são saída 'exceto P7 pins=%11111110 'todos pinos no nível lógico "High" 'exceto clock '*********************************************************** '* Laço principal '*********************************************************** gosub apaga_disp 'apaga display pause 2000 'espera 1 segundo loop: low hab 'habilita 74HC595 for i = 0 to 9 'vai de 0 a 9 gosub pega_valor 'pega valor para display gosub escr_disp 'escreve dado no display pause 1000 'temporiza 1 segundo gosub apaga_disp 'apaga display pause 200 'aguarda 0,2 segundos next i for i = 0 to 2 dado=%00000001 'pisca ponto três vezes gosub escr_disp pause 500 gosub apaga_disp pause 500 next i goto loop 'faz eternamente '*********************************************************** '* Subrotina para pegar valor a inserir no display '*********************************************************** pega_valor: 'o branch analisa o valor em bo (variável i) e desvia para o endereço apontado 'pelo valor na variável. Se o valor não estiver presente, apenas retorna. branch b0,(case_0,case_1,case_2,case_3,case_4,case_5,case_6,case_7,case_8,case_9) return case_0: dado=%11101110: return 'põe o valor na variável e retorna case_1: dado=%00001010: return case_2: dado=%01110110: return case_3: dado=%00111110: return case_4: dado=%10011010: return case_5: dado=%10111100: return case_6: dado=%11111100: return case_7: dado=%00001110: return case_8: dado=%11111110: return case_9: dado=%10011110: return '*********************************************************** '* Subrotina para apagar o display '*********************************************************** apaga_disp: dado=%00000000 '*********************************************************** '* Subrotina para escrever dado no display '*********************************************************** escr_disp: low clock 'pino de clock em nível lógico "low" for bits = 0 to 7 'conta 8 bits (1 byte) dados=dado/128 'insere bit no pino high clock 'levanta clock pause 5 'temporiza 5 ms low clock 'abaixa clock. dado=dado*2 'avança dado para esquerda (shift left) next bits high transf 'prepara para transferir byte para lath pause 5 'aguarda 5 ms low transf 'byte transferido return 'volta após inserir byte