xin chào mọi người mình đang có vấn đè cần 1 pro giúp mình muốn chuyển từ file C sang file hex cho atmega16 .mình gà wa làm mấy ngày nay ma không được mong mọi người giúp đỡ!!
/*CHUONG TRINH NAY DUOC VIET BOI ADMIN WEBSITE
WWW.EEELABS.ORG - TRAN THUA(DH CAN THO-K34), NHAM MUC DICH
DIEU KHIEN KHOI LED MATRIX 5X5X5 HIEN THI CAC HIEU UNG BAT
MAT. CHUONG TRINH DUOC CHIA SE MIEN PHI NHUNG YEU CAU GHI
RO NGUON PHAT HANH TAI WEBSITE WWW.EEELABS.ORG. MOI Y KIEN
DONG GOP XIN LIEN HE: spy004@yahoo.com.vn, eeelabsadmin@gmail.com
CHAN THANH CAM ON CAC BAN DA DOC BAI VIET TAI WWW.EEELABS.ORG*/
//FILE NAY DUNG BOI TRINH BIEN DICH MIKROC FOR AVR 2.10
char layer[5];
char col[25];
char t;
char i,j,k,m,n,p;
unsigned long dat[5];
void init()
{
DDRA=0xFF;
DDRB=0xFF;
DDRC=0xFF;
DDRD=0xFF;
}
//CHUONG TRINH XUAT HIEN THI RA CAC LED
void out(){
//XUAT MANG DIEU KHIEN LOP
PORTB.B1=layer[4];
PORTB.B2=layer[3];
PORTB.B3=layer[2];
PORTB.B4=layer[1];
PORTB.B5=layer[0];
//XUAT MANG DIEU KHIEN PHAN TU LOP
PORTA.B0=col[0];
PORTA.B1=col[1];
PORTA.B3=col[2];
PORTA.B2=col[3];
PORTA.B4=col[4];
PORTA.B5=col[5];
PORTA.B6=col[6];
PORTA.B7=col[7];
PORTC.B0=col[8];
PORTC.B1=col[9];
PORTC.B2=col[10];
PORTC.B3=col[11];
PORTC.B4=col[12];
PORTC.B5=col[13];
PORTC.B6=col[14];
PORTC.B7=col[15];
PORTD.B0=col[16];
PORTD.B1=col[17];
PORTD.B2=col[18];
PORTD.B3=col[19];
PORTD.B4=col[20];
PORTD.B5=col[21];
PORTD.B6=col[22];
PORTD.B7=col[23];
PORTB.B0=col[24];
}
/*CHUONG TRINH DOC DU LIEU VA QUET RA KHOI LAP PHUONG YEU CAU 5 GIA TRI
NGA VAO LA DU LIEU CUA 5 LOP DE XU LY SAU DO GOI HAM OUT DE XUAT RA */
void scan(char times){
for(k=0;k<=(times);k++){ //SO LAN QUET TAO RA THOI GIAN DELAY (1 VONG LAP > 1MS)
for(i=0;i<=4;i++){
layer[i]=0;
for(j=0;j<=24;j++){
col[j]=dat[i]>>j&0x01; //LAY TUNG BIT BANG CACH DICH VA CHE BIT
}
out();
delay_ms(1); // DELAY 1 MS DE DIEU KHIEN THOI GIAN TONG
layer[i]=1;
out();
}
}
}
//CHUONG TRINH BAT, TAT TAT CA KHOI LED VA CLEAR, SET DU LIEU DIEU KHIEN
void fill(char bits){
switch(bits){
case 0:{
for(i=0;i<=4;i++){
layer[i]=1;
}
scan(1);
for(i=0;i<=4;i++){
dat[i]=0xffffffff;
}
break;
}
case 1:{
for(i=0;i<=24;i++){
col[i]=0x00;
}
for(i=0;i<=4;i++){
layer[i]=0;
}
out();
break;
}
}
}
//BANG TRA DU LIEU ALPHABET
void table(char text){ //text LA 1 KY TU HOA
switch (text){
/*CAC DU LIEU DIEU KHIEN
HIEN THI KY TU */
case 'A':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEF7BDEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFFF7FDFF;
dat[4]=0xFFFFBFFF;
break;
}
case 'B':{
dat[0]=0xFFF7BDEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFFF7BDEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'C':{
dat[0]=0xFEF7BDFF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFFFFFEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDFF;
break;
}
case 'D':{
dat[0]=0xFFF7BDEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'E':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFF7BDEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDEF;
break;
}
case 'F':{
dat[0]=0xFFFFFFEF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFF7BDEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDEF;
break;
}
case 'G':{
dat[0]=0xFEF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEF7FFEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDFF;
break;
}
case 'H':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEF7BDEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'I':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFBFFF;
dat[2]=0xFFFFBFFF;
dat[3]=0xFFFFBFFF;
dat[4]=0xFEF7BDEF;
break;
}
case 'J':{
dat[0]=0xFFF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0XFEFFFFFF;
dat[3]=0XFEFFFFFF;
dat[4]=0xFEF7BDEF;
break;
}
case 'K':{
dat[0]=0xFEFFFFEF;
dat[1]=0XFFF7FFEF;
dat[2]=0XFFFFBDEF;
dat[3]=0XFFF7FFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'L':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFFFFFEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFFFFFFEF;
break;
}
case 'M':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEFFFFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0XFEF7FDEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'N':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEF7FFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0XFEFFFDEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'O':{
dat[0]=0xFFF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDFF;
break;
}
case 'P':{
dat[0]=0xFFFFFFEF;
dat[1]=0xFFF7BDEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'Q':{
dat[0]=0xFEFFBDFF;
dat[1]=0xFFF7FFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDFF;
break;
}
case 'R':{
dat[0]=0xFEF7FFEF;
dat[1]=0xFFF7BDEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'S':{
dat[0]=0xFFF7BDEF;
dat[1]=0xFEFFFFFF;
dat[2]=0xFFF7BDFF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDFF;
break;
}
case 'T':{
dat[0]=0xFFFFBFFF;
dat[1]=0xFFFFBFFF;
dat[2]=0xFFFFBFFF;
dat[3]=0xFFFFBFFF;
dat[4]=0xFEF7BDEF;
break;
}
case 'U':{
dat[0]=0xFFF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'V':{
dat[0]=0xFFFFBFFF;
dat[1]=0xFFF7FDFF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'W':{
dat[0]=0xFFF7BDFF;
dat[1]=0XFEFFBFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0XFEFFBFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'X':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFFF7FDFF;
dat[2]=0XFFFFBFFF;
dat[3]=0xFFF7FDFF;
dat[4]=0xFEFFFFEF;
break;
}
case 'Y':{
dat[0]=0xFFFFBFFF;
dat[1]=0xFFFFBFFF;
dat[2]=0XFFFFBFFF;
dat[3]=0xFFF7FDFF;
dat[4]=0xFEFFFFEF;
break;
}
case 'Z':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFFDFF;
dat[2]=0XFFFFBFFF;
dat[3]=0xFFF7FFFF;
dat[4]=0xFEF7BDEF;
break;
}
}
}
//HIEU UNG HIEN THI VA DICH CHU
void effect(char speed,char msg[]){
p=0;
while(msg[p]){
for(n=0;n<=4;n++){
table(msg[p]);
for(m=0;m<=4;m++)
{
dat[m]=dat[m]>>n;
}
scan(speed);
fill(0);
}
p++;
}
}
// HIEU UNG DUOI BAT
void effect1(char speed, char times){
for(n=0;n<=times;n++){ //VONG LAP SO VONG THUC HIEN
dat[0]=0xFEFFFFFE;
dat[1]=0xFF7FFFFD;
dat[2]=0xFFBFFFFB;
dat[3]=0xFFDFFFF7;
dat[4]=0xFFEFFFEF;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1]; //CHEP DU LIEU LOP TREN XUONG LOP DUOI
}
dat[4]=0xFFFF7DFF; //THAY DOI DU LIEU LOP TREN
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFFFBBFF;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFF7FFDF;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFEFFFFFE;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFF7FFFFD;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFBFFFFB;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFDFFFF7;
scan(speed);
}
}
//HIEU UNG PHAO HOA
void effect2(char speed){
fill(0);
dat[0]=0xFEEEEEAE;
scan(speed);
dat[1]=0xFFFFEFFF;
scan(speed);
dat[2]=0xFFFFEFFF;
scan(speed);
dat[3]=0xFFFFEFFF;
scan(speed);
for(m=0;m<=40;m++){
dat[4]=rand();
dat[4]=(dat[4]<<16|rand());
scan(speed/4);
}
delay_ms(1000);
}
//Hieu ung do hat
void effect3(char speed,char times){
//FRAME1
fill(0);
dat[0]=0xFE0739C0;
scan(speed);
//FRAME2
dat[1]=0xFEEFFFEE;
scan(speed);
//FRAME3
dat[2]=dat[1];
scan(speed);
//FRAME4
dat[2]=0x00;
scan(speed);
//FRAME 5
dat[0]=0xffffffff;
scan(speed);
//FRAME 6
dat[1]=0xffffffff;
scan(speed);
//FRAME 7
dat[3]=0xFFF8D63F;
dat[2]=0xFE0739C0;
scan(speed);
//FRAME 8
dat[4]=0xFFFFEFFF;
scan(speed);
//FRAME 9
dat[3]=0x00;
dat[2]=dat[0];
scan(speed);
//FRAME 10
dat[4]=0x00;
dat[3]=dat[0];
scan(speed);
//FRAME 11
dat[3]=0xFEEFFFEE;
dat[4]=~dat[3];
scan(speed);
//FRAME 12
dat[2]=dat[3];
dat[3]=0xFD777DD5;
dat[4]=0xFFB8831B;
scan(speed);
//FRAME 13
dat[1]=dat[2];
dat[2]=dat[3];
dat[3]=0xFFFAFEBF;
dat[4]=0xFFFDC77F;
scan(speed);
//FRAME 14
dat[0]=dat[1];
dat[1]=dat[2];
dat[2]=dat[3];
dat[3]=0xFFFDD77F;
dat[4]=0xFFFFEFFF;
scan(speed);
//FRAMES final
dat[4]=0xffffffff;
for(n=0;n<=3;n++){
dat[0]=dat[0]&dat[1];
for(m=1;m<=3;m++){
dat[m]=dat[m+1];
}
scan(speed);
dat[0]=0x00;
}
}
//HIEU UNG KIM CUONG
void effect4(char speed, char times){
for(m=0;m<=times;m++){
fill(0);
// FRAME 1
dat[0]=0xFEEFFFEE;
dat[4]=0xFEEFFFEE;
scan(speed);
// FRAME 2
dat[1]=0xFFFAFEBF;
dat[3]=0xFFFAFEBF;
scan(speed);
// FRAME
dat[2]=0xFFFFEFFF;
scan(speed);
// FRAME 3
dat[0]=0xffffffff;
dat[4]=dat[0];
scan(speed);
// FRAME 4
dat[1]=dat[0];
dat[3]=dat[0];
scan(speed);
// FRAME 5
delay_ms(500);
dat[1]=dat[2];
dat[3]=dat[2];
dat[2]=0xFFFAEEBF;
scan(speed);
// FRAME 6
dat[0]=0xFFFFEFFF;
dat[4]=dat[0];
dat[1]=0xFFF8C63F;
dat[3]=dat[1];
dat[2]=0x00;
scan(speed);
// FRAME RANDOM
for(m=0;m<30;m++){
for(i=0;i<=4;i++){
dat[i]=rand();
dat[i]=(dat[4]<<16|rand());
}
scan(speed/10);
} fill(1);
delay_ms(1000);
}
}
//HIEU UNG TRAI TIM
void effect5(char speed, char times){
for(m=0;m<=times;m++){
//FRAME1
dat[0]=0xFFFFBBFF;
dat[1]=0xFFF739DF;
dat[2]=0xFEE739CE;
dat[3]=0xFEE739CE;
dat[4]=0xFFF77DDF;
scan(speed);
//FRAME2
dat[0]=0xFFFFD7FF;
dat[1]=0xFFFAD6BF;
dat[2]=0xFF5AD6B5;
dat[3]=0xFF5AD6B5;
dat[4]=0xFFFAFEBF;
scan(speed);
//FRAME3
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFDEF7F;
dat[2]=0xFFBDEF7B;
dat[3]=0xFFBDEF7B;
dat[4]=0xFFFDFF7F;
scan(speed);
//FRAME4
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFBEFBF;
dat[2]=0xFEFBEFBE;
dat[3]=0xFEFBEFBE;
dat[4]=0xFFFBFFBF;
scan(speed);
//FRAME5
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFFC7FF;
dat[2]=0xFFFF83FF;
dat[3]=0xFFFF83FF;
dat[4]=0xFFFFD7FF;
scan(speed);
//FRAME6
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFEEEFF;
dat[2]=0xFFEEEEEF;
dat[3]=0xFFEEEEEF;
dat[4]=0xFFFEFEFF;
scan(speed);
//FRAME7
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFDEF7F;
dat[2]=0xFFBDEF7B;
dat[3]=0xFFBDEF7B;
dat[4]=0xFFFDFF7F;
scan(speed);
}
}
//QUET TAO KHUNG
void effect6(char speed, char times){
for(n=0;n<=times;n++){
times--;
// FRAME 0
fill(0);
dat[1]=0xFFF8C63F;
dat[2]=0xFFF8C63F;
dat[3]=0xFFF8C63F;
scan(speed);
// FRAME 1
fill(0);
dat[0]=0xFE0739C0;
scan(speed);
//FRAME 2
dat[1]=0xFEEFFFEE;
scan(speed);
//FRAME 3
dat[2]=dat[1];
scan(speed);
//FRAME 4
dat[3]=dat[1];
scan(speed);
//FRAME 5
dat[4]=dat[0];
scan(speed);
//FRAME6-10
for(m=5;m>=1;m--){
fill(0);
dat[m-1]=0x00;
scan(speed);
}
//frame 11
fill(0);
dat[1]=0xFFF8C63F;
dat[2]=0xFFF8C63F;
dat[3]=0xFFF8C63F;
scan(speed);
// FRAME 12
fill(0);
dat[0]=0xFEF7BDEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEF7BDEF;
scan(speed);
// FRAME 13-16
for(m=1;m<=3;m++){
dat[0]=0xFEFFFFEF;
dat[0]=dat[4]&(dat[0]>>m);
dat[4]=dat[0];
scan(speed);
}
// FRAME 17
dat[0]=dat[0]&0xFFEF7BDE;
dat[1]=dat[1]&0xFFEFFFFE;
dat[2]=dat[2]&0xFFEFFFFE;
dat[3]=dat[3]&0xFFEFFFFE;
dat[4]=dat[4]&0xFFEF7BDE;
scan(speed);
// FRAME 18
dat[0]=0xFFEF7BDE;
dat[1]=dat[0];
dat[2]=dat[0];
dat[3]=dat[0];
dat[4]=dat[0];
scan(speed);
// FRAME 19-24
for(m=1;m<=4;m++){
dat[0]=0xFFEF7BDE;
dat[1]=0xFFEF7BDE;
dat[0]=~((~dat[1])<<m);
dat[1]=dat[0];
dat[2]=dat[0];
dat[3]=dat[0];
dat[4]=dat[0];
scan(speed);
}
}
}
//HIEU UNG KHOI
void effect7(char speed, char times){
for(m=0;m<=times;m++){
//frame 1
fill(0);
dat[4]=0xFFFFFF9C;
dat[3]=dat[4];
scan(speed);
//frame 2
fill(0);
dat[1]=0xFFFFCE7F;
dat[2]=dat[1];
scan(speed);
//frame 3
fill(0);
dat[2]=0xFFCE7FFF;
dat[3]=dat[2];
scan(speed);
//frame 4
fill(0);
dat[4]=0xFFF39FFF;
dat[3]=dat[4];
scan(speed);
//frame 5
fill(0);
dat[0]=0xFFFCE7FF;
dat[1]=dat[0];
scan(speed);
//frame 6
fill(0);
dat[4]=0xFFFFFE73;
dat[3]=dat[4];
scan(speed);
//frame 7
fill(0);
dat[1]=0xFFFE73FF;
dat[0]=dat[1];
scan(speed);
//frame 8
fill(0);
dat[2]=0xFFF39FFF;
dat[3]=dat[2];
scan(speed);
}
}
//SUI BOT
void effect8(char speed, long temp){
fill(0);
temp=0xAAAAAAAA;
for(n=0;n<=25;n++){
temp=~temp;
dat[0]=rand()|rand();
dat[0]dat[4]<<15)|rand())|temp;
for(m=1;m<=4;m++){
scan(speed);
dat[m]=dat[0];
}
}
}
//HIEU UNG TIA SANG
void effect9 (char speed, char times){
for(n=0;n<=times;n++){
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFFFFE;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[1]=0xFFFFFFFD;
for(m=1;m<=4;m++){
scan(speed);
dat[1]=dat[1]&(~((~dat[1])<<5));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFFFEF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[3]=0xFFFFFFEF;
for(m=1;m<=4;m++){
scan(speed);
dat[3]=dat[3]&(~((~dat[3])<<5));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFEFFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[4]=0xFFFFBFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[4]=dat[4]&(~((~dat[4])>>1));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFF7FFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[2]=0xFEFFFFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[2]=dat[2]&(~((~dat[2])>>1));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFEFFFFFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[0]=0xFFDFFFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[0]=dat[0]&(~((~dat[0])>>5));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFFBFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[2]=0xFF7FFFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[2]=dat[2]&(~((~dat[2])>>5));
}
fill(0);
}
}
void main(){
while(1){
init();
effect(40,"WWWEEELABSORGVANSUNHUY");//Hieu ung hien thi l loi nhan, (speed,msg)
effect4(150,1);//Hieu ung kim cuong (speed, times)
effect5(100,1);//Hieu ung trai tim (speed, times)
effect1(20,5);//Hieu ung duoi bat (speed, times)
effect3(30,2);//Hieu ung do hat (speed, times)
effect6(40,2);//Hieu ung quet khung (speed, times)
effect7(50,2);//Hieu ung khoi (speed, times)
effect8(10,1);//Hieu ung sui bot (speed, times)
effect9(15,2);//Hieu ung tia sang (speed, times)
}
}
/*CHUONG TRINH NAY DUOC VIET BOI ADMIN WEBSITE
WWW.EEELABS.ORG - TRAN THUA(DH CAN THO-K34), NHAM MUC DICH
DIEU KHIEN KHOI LED MATRIX 5X5X5 HIEN THI CAC HIEU UNG BAT
MAT. CHUONG TRINH DUOC CHIA SE MIEN PHI NHUNG YEU CAU GHI
RO NGUON PHAT HANH TAI WEBSITE WWW.EEELABS.ORG. MOI Y KIEN
DONG GOP XIN LIEN HE: spy004@yahoo.com.vn, eeelabsadmin@gmail.com
CHAN THANH CAM ON CAC BAN DA DOC BAI VIET TAI WWW.EEELABS.ORG*/
//FILE NAY DUNG BOI TRINH BIEN DICH MIKROC FOR AVR 2.10
char layer[5];
char col[25];
char t;
char i,j,k,m,n,p;
unsigned long dat[5];
void init()
{
DDRA=0xFF;
DDRB=0xFF;
DDRC=0xFF;
DDRD=0xFF;
}
//CHUONG TRINH XUAT HIEN THI RA CAC LED
void out(){
//XUAT MANG DIEU KHIEN LOP
PORTB.B1=layer[4];
PORTB.B2=layer[3];
PORTB.B3=layer[2];
PORTB.B4=layer[1];
PORTB.B5=layer[0];
//XUAT MANG DIEU KHIEN PHAN TU LOP
PORTA.B0=col[0];
PORTA.B1=col[1];
PORTA.B3=col[2];
PORTA.B2=col[3];
PORTA.B4=col[4];
PORTA.B5=col[5];
PORTA.B6=col[6];
PORTA.B7=col[7];
PORTC.B0=col[8];
PORTC.B1=col[9];
PORTC.B2=col[10];
PORTC.B3=col[11];
PORTC.B4=col[12];
PORTC.B5=col[13];
PORTC.B6=col[14];
PORTC.B7=col[15];
PORTD.B0=col[16];
PORTD.B1=col[17];
PORTD.B2=col[18];
PORTD.B3=col[19];
PORTD.B4=col[20];
PORTD.B5=col[21];
PORTD.B6=col[22];
PORTD.B7=col[23];
PORTB.B0=col[24];
}
/*CHUONG TRINH DOC DU LIEU VA QUET RA KHOI LAP PHUONG YEU CAU 5 GIA TRI
NGA VAO LA DU LIEU CUA 5 LOP DE XU LY SAU DO GOI HAM OUT DE XUAT RA */
void scan(char times){
for(k=0;k<=(times);k++){ //SO LAN QUET TAO RA THOI GIAN DELAY (1 VONG LAP > 1MS)
for(i=0;i<=4;i++){
layer[i]=0;
for(j=0;j<=24;j++){
col[j]=dat[i]>>j&0x01; //LAY TUNG BIT BANG CACH DICH VA CHE BIT
}
out();
delay_ms(1); // DELAY 1 MS DE DIEU KHIEN THOI GIAN TONG
layer[i]=1;
out();
}
}
}
//CHUONG TRINH BAT, TAT TAT CA KHOI LED VA CLEAR, SET DU LIEU DIEU KHIEN
void fill(char bits){
switch(bits){
case 0:{
for(i=0;i<=4;i++){
layer[i]=1;
}
scan(1);
for(i=0;i<=4;i++){
dat[i]=0xffffffff;
}
break;
}
case 1:{
for(i=0;i<=24;i++){
col[i]=0x00;
}
for(i=0;i<=4;i++){
layer[i]=0;
}
out();
break;
}
}
}
//BANG TRA DU LIEU ALPHABET
void table(char text){ //text LA 1 KY TU HOA
switch (text){
/*CAC DU LIEU DIEU KHIEN
HIEN THI KY TU */
case 'A':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEF7BDEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFFF7FDFF;
dat[4]=0xFFFFBFFF;
break;
}
case 'B':{
dat[0]=0xFFF7BDEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFFF7BDEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'C':{
dat[0]=0xFEF7BDFF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFFFFFEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDFF;
break;
}
case 'D':{
dat[0]=0xFFF7BDEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'E':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFF7BDEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDEF;
break;
}
case 'F':{
dat[0]=0xFFFFFFEF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFF7BDEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDEF;
break;
}
case 'G':{
dat[0]=0xFEF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEF7FFEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDFF;
break;
}
case 'H':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEF7BDEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'I':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFBFFF;
dat[2]=0xFFFFBFFF;
dat[3]=0xFFFFBFFF;
dat[4]=0xFEF7BDEF;
break;
}
case 'J':{
dat[0]=0xFFF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0XFEFFFFFF;
dat[3]=0XFEFFFFFF;
dat[4]=0xFEF7BDEF;
break;
}
case 'K':{
dat[0]=0xFEFFFFEF;
dat[1]=0XFFF7FFEF;
dat[2]=0XFFFFBDEF;
dat[3]=0XFFF7FFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'L':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFFFEF;
dat[2]=0xFFFFFFEF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFFFFFFEF;
break;
}
case 'M':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEFFFFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0XFEF7FDEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'N':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFEF7FFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0XFEFFFDEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'O':{
dat[0]=0xFFF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDFF;
break;
}
case 'P':{
dat[0]=0xFFFFFFEF;
dat[1]=0xFFF7BDEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'Q':{
dat[0]=0xFEFFBDFF;
dat[1]=0xFFF7FFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDFF;
break;
}
case 'R':{
dat[0]=0xFEF7FFEF;
dat[1]=0xFFF7BDEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFFF7BDEF;
break;
}
case 'S':{
dat[0]=0xFFF7BDEF;
dat[1]=0xFEFFFFFF;
dat[2]=0xFFF7BDFF;
dat[3]=0xFFFFFFEF;
dat[4]=0xFEF7BDFF;
break;
}
case 'T':{
dat[0]=0xFFFFBFFF;
dat[1]=0xFFFFBFFF;
dat[2]=0xFFFFBFFF;
dat[3]=0xFFFFBFFF;
dat[4]=0xFEF7BDEF;
break;
}
case 'U':{
dat[0]=0xFFF7BDFF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'V':{
dat[0]=0xFFFFBFFF;
dat[1]=0xFFF7FDFF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'W':{
dat[0]=0xFFF7BDFF;
dat[1]=0XFEFFBFEF;
dat[2]=0XFEFFBFEF;
dat[3]=0XFEFFBFEF;
dat[4]=0xFEFFFFEF;
break;
}
case 'X':{
dat[0]=0xFEFFFFEF;
dat[1]=0xFFF7FDFF;
dat[2]=0XFFFFBFFF;
dat[3]=0xFFF7FDFF;
dat[4]=0xFEFFFFEF;
break;
}
case 'Y':{
dat[0]=0xFFFFBFFF;
dat[1]=0xFFFFBFFF;
dat[2]=0XFFFFBFFF;
dat[3]=0xFFF7FDFF;
dat[4]=0xFEFFFFEF;
break;
}
case 'Z':{
dat[0]=0xFEF7BDEF;
dat[1]=0xFFFFFDFF;
dat[2]=0XFFFFBFFF;
dat[3]=0xFFF7FFFF;
dat[4]=0xFEF7BDEF;
break;
}
}
}
//HIEU UNG HIEN THI VA DICH CHU
void effect(char speed,char msg[]){
p=0;
while(msg[p]){
for(n=0;n<=4;n++){
table(msg[p]);
for(m=0;m<=4;m++)
{
dat[m]=dat[m]>>n;
}
scan(speed);
fill(0);
}
p++;
}
}
// HIEU UNG DUOI BAT
void effect1(char speed, char times){
for(n=0;n<=times;n++){ //VONG LAP SO VONG THUC HIEN
dat[0]=0xFEFFFFFE;
dat[1]=0xFF7FFFFD;
dat[2]=0xFFBFFFFB;
dat[3]=0xFFDFFFF7;
dat[4]=0xFFEFFFEF;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1]; //CHEP DU LIEU LOP TREN XUONG LOP DUOI
}
dat[4]=0xFFFF7DFF; //THAY DOI DU LIEU LOP TREN
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFFFBBFF;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFF7FFDF;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFEFFFFFE;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFF7FFFFD;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFBFFFFB;
scan(speed);
for(m=0;m<=3;m++){
dat[m]=dat[m+1];
}
dat[4]=0xFFDFFFF7;
scan(speed);
}
}
//HIEU UNG PHAO HOA
void effect2(char speed){
fill(0);
dat[0]=0xFEEEEEAE;
scan(speed);
dat[1]=0xFFFFEFFF;
scan(speed);
dat[2]=0xFFFFEFFF;
scan(speed);
dat[3]=0xFFFFEFFF;
scan(speed);
for(m=0;m<=40;m++){
dat[4]=rand();
dat[4]=(dat[4]<<16|rand());
scan(speed/4);
}
delay_ms(1000);
}
//Hieu ung do hat
void effect3(char speed,char times){
//FRAME1
fill(0);
dat[0]=0xFE0739C0;
scan(speed);
//FRAME2
dat[1]=0xFEEFFFEE;
scan(speed);
//FRAME3
dat[2]=dat[1];
scan(speed);
//FRAME4
dat[2]=0x00;
scan(speed);
//FRAME 5
dat[0]=0xffffffff;
scan(speed);
//FRAME 6
dat[1]=0xffffffff;
scan(speed);
//FRAME 7
dat[3]=0xFFF8D63F;
dat[2]=0xFE0739C0;
scan(speed);
//FRAME 8
dat[4]=0xFFFFEFFF;
scan(speed);
//FRAME 9
dat[3]=0x00;
dat[2]=dat[0];
scan(speed);
//FRAME 10
dat[4]=0x00;
dat[3]=dat[0];
scan(speed);
//FRAME 11
dat[3]=0xFEEFFFEE;
dat[4]=~dat[3];
scan(speed);
//FRAME 12
dat[2]=dat[3];
dat[3]=0xFD777DD5;
dat[4]=0xFFB8831B;
scan(speed);
//FRAME 13
dat[1]=dat[2];
dat[2]=dat[3];
dat[3]=0xFFFAFEBF;
dat[4]=0xFFFDC77F;
scan(speed);
//FRAME 14
dat[0]=dat[1];
dat[1]=dat[2];
dat[2]=dat[3];
dat[3]=0xFFFDD77F;
dat[4]=0xFFFFEFFF;
scan(speed);
//FRAMES final
dat[4]=0xffffffff;
for(n=0;n<=3;n++){
dat[0]=dat[0]&dat[1];
for(m=1;m<=3;m++){
dat[m]=dat[m+1];
}
scan(speed);
dat[0]=0x00;
}
}
//HIEU UNG KIM CUONG
void effect4(char speed, char times){
for(m=0;m<=times;m++){
fill(0);
// FRAME 1
dat[0]=0xFEEFFFEE;
dat[4]=0xFEEFFFEE;
scan(speed);
// FRAME 2
dat[1]=0xFFFAFEBF;
dat[3]=0xFFFAFEBF;
scan(speed);
// FRAME
dat[2]=0xFFFFEFFF;
scan(speed);
// FRAME 3
dat[0]=0xffffffff;
dat[4]=dat[0];
scan(speed);
// FRAME 4
dat[1]=dat[0];
dat[3]=dat[0];
scan(speed);
// FRAME 5
delay_ms(500);
dat[1]=dat[2];
dat[3]=dat[2];
dat[2]=0xFFFAEEBF;
scan(speed);
// FRAME 6
dat[0]=0xFFFFEFFF;
dat[4]=dat[0];
dat[1]=0xFFF8C63F;
dat[3]=dat[1];
dat[2]=0x00;
scan(speed);
// FRAME RANDOM
for(m=0;m<30;m++){
for(i=0;i<=4;i++){
dat[i]=rand();
dat[i]=(dat[4]<<16|rand());
}
scan(speed/10);
} fill(1);
delay_ms(1000);
}
}
//HIEU UNG TRAI TIM
void effect5(char speed, char times){
for(m=0;m<=times;m++){
//FRAME1
dat[0]=0xFFFFBBFF;
dat[1]=0xFFF739DF;
dat[2]=0xFEE739CE;
dat[3]=0xFEE739CE;
dat[4]=0xFFF77DDF;
scan(speed);
//FRAME2
dat[0]=0xFFFFD7FF;
dat[1]=0xFFFAD6BF;
dat[2]=0xFF5AD6B5;
dat[3]=0xFF5AD6B5;
dat[4]=0xFFFAFEBF;
scan(speed);
//FRAME3
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFDEF7F;
dat[2]=0xFFBDEF7B;
dat[3]=0xFFBDEF7B;
dat[4]=0xFFFDFF7F;
scan(speed);
//FRAME4
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFBEFBF;
dat[2]=0xFEFBEFBE;
dat[3]=0xFEFBEFBE;
dat[4]=0xFFFBFFBF;
scan(speed);
//FRAME5
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFFC7FF;
dat[2]=0xFFFF83FF;
dat[3]=0xFFFF83FF;
dat[4]=0xFFFFD7FF;
scan(speed);
//FRAME6
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFEEEFF;
dat[2]=0xFFEEEEEF;
dat[3]=0xFFEEEEEF;
dat[4]=0xFFFEFEFF;
scan(speed);
//FRAME7
dat[0]=0xFFFFEFFF;
dat[1]=0xFFFDEF7F;
dat[2]=0xFFBDEF7B;
dat[3]=0xFFBDEF7B;
dat[4]=0xFFFDFF7F;
scan(speed);
}
}
//QUET TAO KHUNG
void effect6(char speed, char times){
for(n=0;n<=times;n++){
times--;
// FRAME 0
fill(0);
dat[1]=0xFFF8C63F;
dat[2]=0xFFF8C63F;
dat[3]=0xFFF8C63F;
scan(speed);
// FRAME 1
fill(0);
dat[0]=0xFE0739C0;
scan(speed);
//FRAME 2
dat[1]=0xFEEFFFEE;
scan(speed);
//FRAME 3
dat[2]=dat[1];
scan(speed);
//FRAME 4
dat[3]=dat[1];
scan(speed);
//FRAME 5
dat[4]=dat[0];
scan(speed);
//FRAME6-10
for(m=5;m>=1;m--){
fill(0);
dat[m-1]=0x00;
scan(speed);
}
//frame 11
fill(0);
dat[1]=0xFFF8C63F;
dat[2]=0xFFF8C63F;
dat[3]=0xFFF8C63F;
scan(speed);
// FRAME 12
fill(0);
dat[0]=0xFEF7BDEF;
dat[1]=0xFEFFFFEF;
dat[2]=0xFEFFFFEF;
dat[3]=0xFEFFFFEF;
dat[4]=0xFEF7BDEF;
scan(speed);
// FRAME 13-16
for(m=1;m<=3;m++){
dat[0]=0xFEFFFFEF;
dat[0]=dat[4]&(dat[0]>>m);
dat[4]=dat[0];
scan(speed);
}
// FRAME 17
dat[0]=dat[0]&0xFFEF7BDE;
dat[1]=dat[1]&0xFFEFFFFE;
dat[2]=dat[2]&0xFFEFFFFE;
dat[3]=dat[3]&0xFFEFFFFE;
dat[4]=dat[4]&0xFFEF7BDE;
scan(speed);
// FRAME 18
dat[0]=0xFFEF7BDE;
dat[1]=dat[0];
dat[2]=dat[0];
dat[3]=dat[0];
dat[4]=dat[0];
scan(speed);
// FRAME 19-24
for(m=1;m<=4;m++){
dat[0]=0xFFEF7BDE;
dat[1]=0xFFEF7BDE;
dat[0]=~((~dat[1])<<m);
dat[1]=dat[0];
dat[2]=dat[0];
dat[3]=dat[0];
dat[4]=dat[0];
scan(speed);
}
}
}
//HIEU UNG KHOI
void effect7(char speed, char times){
for(m=0;m<=times;m++){
//frame 1
fill(0);
dat[4]=0xFFFFFF9C;
dat[3]=dat[4];
scan(speed);
//frame 2
fill(0);
dat[1]=0xFFFFCE7F;
dat[2]=dat[1];
scan(speed);
//frame 3
fill(0);
dat[2]=0xFFCE7FFF;
dat[3]=dat[2];
scan(speed);
//frame 4
fill(0);
dat[4]=0xFFF39FFF;
dat[3]=dat[4];
scan(speed);
//frame 5
fill(0);
dat[0]=0xFFFCE7FF;
dat[1]=dat[0];
scan(speed);
//frame 6
fill(0);
dat[4]=0xFFFFFE73;
dat[3]=dat[4];
scan(speed);
//frame 7
fill(0);
dat[1]=0xFFFE73FF;
dat[0]=dat[1];
scan(speed);
//frame 8
fill(0);
dat[2]=0xFFF39FFF;
dat[3]=dat[2];
scan(speed);
}
}
//SUI BOT
void effect8(char speed, long temp){
fill(0);
temp=0xAAAAAAAA;
for(n=0;n<=25;n++){
temp=~temp;
dat[0]=rand()|rand();
dat[0]dat[4]<<15)|rand())|temp;
for(m=1;m<=4;m++){
scan(speed);
dat[m]=dat[0];
}
}
}
//HIEU UNG TIA SANG
void effect9 (char speed, char times){
for(n=0;n<=times;n++){
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFFFFE;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[1]=0xFFFFFFFD;
for(m=1;m<=4;m++){
scan(speed);
dat[1]=dat[1]&(~((~dat[1])<<5));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFFFEF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[3]=0xFFFFFFEF;
for(m=1;m<=4;m++){
scan(speed);
dat[3]=dat[3]&(~((~dat[3])<<5));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFEFFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[4]=0xFFFFBFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[4]=dat[4]&(~((~dat[4])>>1));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFF7FFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[2]=0xFEFFFFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[2]=dat[2]&(~((~dat[2])>>1));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFEFFFFFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[0]=0xFFDFFFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[0]=dat[0]&(~((~dat[0])>>5));
}
fill(0);
for(m=1;m<=4;m++){
dat[0]=0xFFFFFBFF;
scan(speed);
dat[m]=dat[0];
}
fill(0);
dat[2]=0xFF7FFFFF;
for(m=1;m<=4;m++){
scan(speed);
dat[2]=dat[2]&(~((~dat[2])>>5));
}
fill(0);
}
}
void main(){
while(1){
init();
effect(40,"WWWEEELABSORGVANSUNHUY");//Hieu ung hien thi l loi nhan, (speed,msg)
effect4(150,1);//Hieu ung kim cuong (speed, times)
effect5(100,1);//Hieu ung trai tim (speed, times)
effect1(20,5);//Hieu ung duoi bat (speed, times)
effect3(30,2);//Hieu ung do hat (speed, times)
effect6(40,2);//Hieu ung quet khung (speed, times)
effect7(50,2);//Hieu ung khoi (speed, times)
effect8(10,1);//Hieu ung sui bot (speed, times)
effect9(15,2);//Hieu ung tia sang (speed, times)
}
}
Comment