Basado en el programa de ensamblaje de 51 microcontroladores, 16 luces de colores parpadean en un ciclo de izquierda a derecha y luego de derecha a izquierda.
#include lt;intrins.hgt;
#define uint unsigned int //16 bits
#define uchar unsigned char/8 bits
sbit led=P2^0;
sbit k0=P1^0;
sbit k1=P1^1;
retraso nulo(uint z);
void youyi();
void zuoyi();
uchar i ;
uchar temp1=0x01; //0000 0001
uchar temp2=0x80; //1000 0000
uchar flag0=0;
uchar flag1=0;
void main()
{
mientras(1)
{
if(k0== 0)//desplazamiento a la izquierda
{
flag0=1;
}
if(k1==0)//desplazamiento derecha
{
bandera1=1
}
if(flag0==1)
{
zuoyi();
temp2=0x80
}
si (flag1===1)
{
youyi();
temp1=0x01;
p> }
}
}
void zuoyi()
{
for(i=0;ilt;7;i)//i i=i 1
{
P2=temp1;
temp1=_crol_(temp1, 1); //0000 0010
retraso(500);
}
}
anular youyi()
{
for(i=0;ilt;7;i) //i i=i 1
{
P2= temp2;
temp2=_cror_(temp2, 1); //1000 0000
retraso(500);
}
}
}
retraso nulo(uint z)
{
uint x, y;
for(x=110; xgt; 0; x--)
for(y=z; ygt; 0; y- -);