'************************************************************** '* Programa Display Case Multifuncional - DCM_T_10.BAS '* Monitor p/ temperaturas - uso em manutenção de PC's '* '* Desenvolvido por Márcio José Soares '* p/ revista PC & CIA - 01/10/2003 '************************************************************* '* Resolução utilizada nos AD's - 10 bits '************************************************************* '* Últimas alteraçoes '* '* '* em 25/10/2003 inserido modo de leitura 10bits para AD '************************************************************* $crystal = 10000000 'Determina a frequência do cristal $noramclear 'declarações das variáveis Declare Sub Apaga_disp() Declare Sub Imp_comando(byval C As Byte) Dim C0 As Word 'variável p/ colher dados Dim J As Byte 'variável para contador Dim Dadow As Single 'variável para conversão dos valores Dim Sdado As String * 6 'variável p/ mostrar Dim Temp As String * 6 'variável temporária 'configura portas 'Pinb1 entrada, o resto saída 'Pind1 saída serial Config Portb = &B11111101 Open "comb.0:2400,8,n,1" For Output As #1 'porta ADC04 Open "comb.1:2400,8,n,1" For Input As #2 'porta ADC04 Open "COMD.1:2400,8,N,2,INVERTED" For Output As #3 'porta Display Set Portb.3 'liga AD das temperaturas Reset Portb.2 Waitms 500 'aguarda 0,5 segundos para incializar display Call Apaga_disp() 'apaga display Print #3 , " Revista PC&CIA"; 'escreve no display Call Imp_comando(192) 'a mensagem de inicialização Print #3 , " Placa DCM "; Wait 2 'aguarda alguns segundos Print #1 , Chr(0); 'inicia AD em 10 bits Waitms 200 'aguarda AD inicializar Do 'loop Call Apaga_disp() 'apaga display For J = 48 To 49 'contagem dos canais do AD Print #1 , Chr(j); 'colhe dado C0 = Waitkey(#2) C0 = C0 * 256 'prepara para juntar 2 bytes C0 = C0 + Waitkey(#2) 'dois bytes juntos Dadow = C0 * 0.09775 'conversão p/ temp Temp = Str(dadow) Sdado = " " + Left(temp , 5) 'arruma casas após ponto Select Case J 'prepara posiçao do cursor Case 48 Call Imp_comando(128) 'cursor na posição Case 49 Call Imp_comando(128 + 8) 'cursor na posição End Select If J = 49 Then 'ganha mais um espaço para alinhar Print #3 , " "; End If Print #3 , Sdado; 'imprime valor Next Wait 2 Loop Sub Imp_comando(byval C As Byte) Printbin #3 , &HFE ; C; 'envia comando ao display Waitms 10 'aguarda p/ display tratar End Sub Sub Apaga_disp() Call Imp_comando(1) 'chama subrotina para enviar Call Imp_comando(2) 'comando desejado End Sub End 'fim do programa