Comunicación serial basada en microcontrolador stc15, envío de datos mediante pantalla de tubo digital (programa fuente)
#include
#define uchar unsigned char
código uchar ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0xff};//***tabla de códigos de tubo digital positivo 0-9
uchar time,scanled;
uchar disdat[2 ] ;
bit flag=0;
void dischg() //Mostrar conversión de código
{
disdat[0]= s_dat /10; //Segunda conversión
disdat[1]=s_dat%10;
}
void t0isr() interrupción 1 //Segundo momento< / p>
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tiempo++; /p>
if(tiempo>=20)
{
tiempo=0;
s_dat++;
bandera = 1;
}
}
void t1isr() interrupción 3 //Control de visualización
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
duan=1;
P0=0xff; /Blanking
duan=0;
wei=1;
P0=1< wei =0; duan=1; P0=disdat[escaneado]; duan=0; escaneado++; p> escaneado%=2; //***Pantalla de 8 dígitos } main() { TMOD=0x21; //Los temporizadores 0 y 1 están en modo 1 TH0=(65536-50000)/256; //Temporizador 0, interrumpe una vez cada 50 milisegundos TL0=(65536-50000)%256; TH1=0xfd; TL1=0xfd; SCON=0x40; TR1=1; TR0=0; ET0=1; EA=1; escaneado=0; /p> tiempo=0; dischg(); mientras(1) { if( bandera ) { flag=0; SBUF=s_dat; mientras(TI==0); TI=0; } } }