📄 imprimir
字号:
/*
Proyecto Final
Diseno de Sistemas de Computadora
Presentado por:
Raymundo Yamammoto
2004-0081
Desiree Gutierrez
2004-0878
*/
// Incluyendo librerias necesarias
#include <mega16.h>
#include <stdio.h>
//Declarando variables
unsigned int key=0;
unsigned int time1=0;
unsigned int time2=0;
unsigned char timeh=0;
unsigned char timel=0;
char *letrero="Hola Desire";
char *puntero=0;
char i=0;
char final[28];
char e=0;
char a=0;
char o=0;
unsigned char salida[130];
unsigned char *abc1[26]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
unsigned char *abc2[26]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
unsigned char bits[130]= {
0b01111000,//A0
0b00100100,
0b00100010,
0b00100100,
0b01111000,
//--------
0b01111110,//B1
0b01001010,
0b01001010,
0b01001010,
0b00110100,
//--------
0b00111100,//C2
0b01000010,
0b01000010,
0b01000010,
0b01000010,
//--------
0b01111110,//D3
0b01000010,
0b01000010,
0b01000010,
0b00111100,
//--------
0b01111110,//E4
0b01001010,
0b01001010,
0b01001010,
0b01000010,
//--------
0b01111110,//F5
0b00001010,
0b00001010,
0b00001010,
0b00000010,
//--------
0b01111110,//G6
0b01000010,
0b01010010,
0b01010010,
0b01110010,
//--------
0b01111110,//H7
0b00010000,
0b00010000,
0b00010000,
0b01111110,
//--------
0b00000000,//I8
0b00000000,
0b01111110,
0b00000000,
0b00000000,
//--------
0b00100000,//J9
0b01000000,
0b01000000,
0b01000000,
0b00111110,
//--------
0b01111110,//K10
0b00010000,
0b00011000,
0b00100100,
0b01000010,
//--------
0b01111110,//L11
0b01000000,
0b01000000,
0b01000000,
0b01000000,
//--------
0b01111110,//M12
0b00000100,
0b00001000,
0b00000100,
0b01111110,
//--------
0b01111110,//N13
0b00000100,
0b00001000,
0b00010000,
0b01111110,
//--------
0b00111100,//O14
0b01000010,
0b01000010,
0b01000010,
0b00111100,
//--------
0b01111110,//P15
0b00010010,
0b00010010,
0b00010010,
0b00001100,
//--------
0b00111100,//Q16
0b01000010,
0b01000010,
0b01100010,
0b01111100,
//--------
0b01111110,//R17
0b00010010,
0b00010010,
0b00010010,
0b01101100,
//--------
0b01001100,//S18
0b01010010,
0b01010010,
0b01010010,
0b00100010,
//--------
0b00000010,//T19
0b00000010,
0b01111110,
0b00000010,
0b00000010,
//--------
0b00111110,//U20
0b01000000,
0b01000000,
0b01000000,
0b00111110,
//--------
0b00011110,//V21
0b00100000,
0b01000000,
0b00100000,
0b00011110,
//--------
0b00111110,//W22
0b01000000,
0b00111110,
0b01000000,
0b00111110,
//--------
0b01100110,//X23
0b00011000,
0b00011000,
0b00011000,
0b01100110,
//--------
0b00000010,//Y24
0b00000100,
0b01111000,
0b00000100,
0b00000010,
//--------
0b01000010,//Z25
0b01100010,
0b01010010,
0b01001010,
0b01000110
};
//Interrupcion del Compare Match 0
interrupt [TIM0_COMP] void comp()
{
key = 1; //Indicando que ocurrio el compare match
}
//Interrupcion del Input Capture Pin
interrupt [TIM1_CAPT] void control()
{
time1 = ICR1H; //Copiar parte alta del ICR1 en time1
time2 = ICR1L; //Copiar parte baja del ICR1 en time2
time1 = (time1<<=8); //Moviendo 8 bits a la izaquierda el valor de time1
time1 = (time1+time2); //Sumando time 1 y time 2
time1 = (time1/101); //Calculando tiempo de retardo
timel = (time1&&0x00ff); //Filtrando parte baja del registro
time1 = (time1>>=8); //Moviendo 8 bits a la derecha el valor de time1
timeh = (time1&&0x00ff); //Filtrando parte alta del registro
}
//Funcion de delay entre posicion de LED
void delay_1()
{
TCNT0 = 0;
OCR0 = timeh;
TCCR0 |= 0b00000010;
while(key==0);
key = 0;
TCCR0 &= 0b11111101;
TCNT0 = 0;
OCR0 = timel;
TCCR0 |= 0b00000010;
while(key==0);
key = 0;
TCCR0 &= 0b11111101;*/
}
void main()
{
DDRA = 0xff; //Puerto A de salida
DDRD.6 = 0; //Pin D.6 de entrada
TCCR0 = 0b01000000; //Contador 0 en modo normal
TCCR1A &= 0b11111100; //Contador 1 en modo normal
TCCR1B = 0b01000000; //ICE flanco positivo
TIMSK |= 0b00100010; //Seleccionando interrupciones
SREG |= 0b10000000; //Activar interrupciiones.
TCNT0 = 0; //Contador 0 igual a cero
TCNT1 = 0; //Contador 1 igual a cero
TCCR1B |= 0b00000010; //Activando prescaler
for(i=0;i<=27;i++) //Repetir 28 veces
{
puntero=letrero+i; //Puntero
final[i]= (*puntero); //Variable fn
}
a=0; //a igual a cero
for(i=0;i<=27;i++) //Repetir 28 verds
{
for(e=0;e<=25;e++) //repetir 26 veces
{
if(final[i]==(*abc1[e]||*abc2[e]))//seleccionando letra
{
o=(e*5); //Multiplicando por 5 para seleccionar secuencia
salida[a]=bits[o]; //Guardando secuencia
a++; //aumentando a
o++; //aumentando o
salida[a]=bits[o]; //Guardando secuencia
a++; //aumentando a
o++; //aumentando o
salida[a]=bits[o]; //Guardando secuencia
a++; //aumentando a
o++; //aumentando o
salida[a]=bits[o]; //Guardando secuencia
a++; //aumentando a
o++; //aumentando o
salida[a]=bits[o]; //Guardando secuencia
a++; //aumentando a
}
}
o=0; //Iniciando contador o
}
while(1) //Cerrar ciclo
{
for(i=0;i<=27;i++) //Repetir 28 veces
{
a=(i*5); //Seleccionando letra a mostrar
PORTA=salida[a]; //primera secuencia
delay_1(); //Esperando
PORTA=salida[a+1]; //segunda secuencia
delay_1(); //Esperando
PORTA=salida[a+2]; //tercera secuencia
delay_1(); //Esperando
PORTA=salida[a+3]; //cuarta secuencia
delay_1(); //Esperando
PORTA=salida[a+4]; //quinta secuencia
delay_1(); //Esperando
PORTA=0; //sexta secuencia
delay_1(); //Esperando
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -