Programación en lenguaje C de una lámpara de agua de patrón basada en un microordenador de un solo chip
#include
#define uchar unsigned char
#define uint unsigned int
sbit P2_0=P2^ 0;
bit P2_1=P2^1;
bit P2_2=P2^2;
bit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
/* tabla de patrones*/
código uchar seg1[]={ 0xfe ,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x00,0xff, 0x00,0xff}; //Palabras de control (fluyen de izquierda a derecha, luego todas parpadean dos veces)
uchar code seg2 []={ 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00,0xff, 0x00,0xff} //Palabras de control (fluyen de derecha a izquierda, luego todas parpadean dos veces)
uchar code seg3[]={ 0xfe, 0xfb, 0xef, 0xbf}; // Palabra de control (de izquierda a derecha 1, 3, 5, 7 (control de puerto P1), 9, 11, 13, 15 (puerto P3) control) flujo parpadeando,)
uchar código seg4[]={0xfd,0xf7, 0xdf, 0x7f} // Palabra de control (de derecha a izquierda 2, 4, 6, 8 (control P1) 10 , 12, 14, 16 (control de puerto P3) fluyendo y parpadeando, )
código uchar seg5[]={0xe7,0xdb,0xbd,0x7e} //Palabra de control (que fluye desde el medio hacia ambos; lados parpadeantes)
uchar code seg6[]={0x7e, 0xbd, 0xdb,0xe7} //Palabra de control (fluye y parpadea desde ambos lados hacia el centro)
// P1.0~P1.7 controla las luces 1~8, P3.0~P3.7 controla las luces 9~16, el puerto P2 se utiliza para control de modo//
/******* ***** ********Subfunción Retardo k*1mS************************/
retraso nulo(uint k)
{
uint i,j;
for(i=0;i for(j =0;j<121;j++) {;}} } principal() { uchar a,b,c,d,e,f; mientras(1) { /*Lo siguiente se obtiene mediante el método de búsqueda de tabla Parámetros de patrón*/ while(P2_0==0) { for(a=0; a<12;a++) //Mostrar patrón 1 { retraso(500); P1=seg1[a]; P3=seg1[a]; } } mientras(P2_1==0 ) { for(b=0;b<12;b++) // Patrón de visualización 2 { retraso( 500); P1=seg2[b]; P3=seg2[b]; } } while(P2_2==0) { for(c=0;c<4;c++) //Patrón de visualización de la tabla de búsqueda 3 { retraso(500); P1=seg3[c]; P3=seg3[c]; } } mientras(P2_3==0) { para(d=0;d<4;d++) //Patrón de visualización de la tabla de búsqueda 4 { delay(500); P1=seg4[d]; P3= seg4[d]; } mientras(P2_4==0) { for(e=0;e< 4;e++) //Patrón de visualización de la tabla de búsqueda 5 { delay(500); P1=seg5[e]; P3=seg5[e]; } } mientras(P2_5==0) { for(f=0;f<4;f++) //Patrón de visualización de la tabla de búsqueda 6 { delay(500); P1=seg6[f]; P3=seg6[f]; } } } } }