AT89S8252 Porto "Ater"

G

GrandAlf

Guest
Eu tenho um programa originalmente escrito para a Bascom com 89S8252. Para fazê-la ir um pouco mais rápido, decidi reescrever em "C" (K * e * i * l). Eu tenho um problema com a porta 1, este é dividido entre entrada e saída nos pinos diferentes. O lado de entrada é baixa ativa via opto, com 4k7 pullups direto aos pinos. Problema é quando passa um pino de entrada baixa, ela normalmente fica baixo, mesmo quando o souce retorna ao alto. Redefinindo o cpu apaga-lo para alta novamente. Tudo funciona bem com o prog Bascom, para que o hardware está OK. 8052 séries não parecem ter controle de direção, de modo que este não pode ser a causa. Em vez perplexo com isso. Eu estou usando AT898252.h, e usando "if (P1_7 == 0) {etc}" para a leitura. Qualquer ajuda muito apreciada.
 
Você deve ter muito cuidado ao usar uma porta de um 8051 "splited" (a poucos insumos, a poucas saídas), porque quando você modificar a porta assim: porto | = 0x1C; Se um de seus insumos foi baixa, enquanto você fez isso, você substituir o input e torna-se uma saída que é baixo e permanece baixa :-( Para superar este escrever suas entradas com um "1", que significa, no exemplo acima supondo que Bit7 e 6 da porta são utilizados como insumos: port | = 0xDC;. Ambas as entradas são escritos com um "1", mas como o 8051 só pode puxar os pinos baixo não "bloquear" a entrada se ela foi baixa durante a sua operação de escrita espero que isso ajude
 
C-Homem, Este não ajuda, vou verificar o meu timing. Obrigado por sua entrada.
 

Welcome to EDABoard.com

Sponsor

Back
Top