You know my comments.... I wouldn't even try to to this without interrupts....
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
#include <htc.h>
__CONFIG(LVP_OFF & BOREN_OFF & PWRTE_ON & WDTE_OFF & FOSC_HS);
#define _XTAL_FREQ 20000000
#define DAD PORTB
#define RST RC6
#define CLK RC3
#define DATA RC4
extern const char Font2[];unsigned char leds[31];unsigned char pow[] = {128,64,32,16,8,4,2,1};
display(char *str);int data( int p);int t;char b,e;void clear(void);
main ()
{
TRISC=0B00000000;
TRISB=0B00000000;
while(1)
{
display("AKON>");
for(char t=0;t<10;t++)
{
for(char y=0;y<10;y++)
{
RST=0;
RST=1;
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++)
{
DAD=pow[r];
__delay_ms(2);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++)
{
DAD=0;
RST=1;
char t,n;
n=leds[a];
n>>=u;
t=(n & b);
if(t==0){DATA=0;}
if(t==1){DATA=1;}
CLK=1;
__delay_us(10);
CLK=0;
}
}
}
for(char t=0;t<5;t++)
{
leds[t]>>=1;
__delay_ms(1);
}
}
clear();
display("AKON>");
for(char t=0;t<10;t++)
{
for(char y=0;y<10;y++)
{
RST=0;
RST=1;
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++)
{
DAD=pow[r];
__delay_ms(2);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++)
{
DAD=0;
RST=1;
char t,n;
n=leds[a];
n>>=u;
t=(n & b);
if(t==0){DATA=0;}
if(t==1){DATA=1;}
CLK=1;
__delay_us(10);
CLK=0;
}
}
}
for(char t=5;t<11;t++)
{
leds[t]>>=1;
__delay_ms(1);
}
}
clear();
display("AKON>");
for(char t=0;t<10;t++)
{
for(char y=0;y<10;y++)
{
RST=0;
RST=1;
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++)
{
DAD=pow[r];
__delay_ms(2);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++)
{
DAD=0;
RST=1;
char t,n;
n=leds[a];
n>>=u;
t=(n & b);
if(t==0){DATA=0;}
if(t==1){DATA=1;}
CLK=1;
__delay_us(10);
CLK=0;
}
}
}
for(char t=11;t<17;t++)
{
leds[t]>>=1;
__delay_ms(1);
}
}
clear();
display("AKON>");
for(char t=0;t<10;t++)
{
for(char y=0;y<10;y++)
{
RST=0;
RST=1;
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++)
{
DAD=pow[r];
__delay_ms(2);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++)
{
DAD=0;
RST=1;
char t,n;
n=leds[a];
n>>=u;
t=(n & b);
if(t==0){DATA=0;}
if(t==1){DATA=1;}
CLK=1;
__delay_us(10);
CLK=0;
}
}
}
for(char t=18;t<23;t++)
{
leds[t]>>=1;
__delay_ms(1);
}
}
clear();
display("AKON>");
for(char t=0;t<10;t++)
{
for(char y=0;y<10;y++)
{
RST=0;
RST=1;
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++)
{
DAD=pow[r];
__delay_ms(2);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++)
{
DAD=0;
RST=1;
char t,n;
n=leds[a];
n>>=u;
t=(n & b);
if(t==0){DATA=0;}
if(t==1){DATA=1;}
CLK=1;
__delay_us(10);
CLK=0;
}
}
}
for(char t=0;t<32;t++)
{
leds[t]>>=1;
}
}
clear();
display("AKON>");
for(char t=0;t<10;t++)
{
for(char y=0;y<10;y++)
{
RST=0;
RST=1;
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++)
{
DAD=pow[r];
__delay_ms(2);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++)
{
DAD=0;
RST=1;
char t,n;
n=leds[a];
n>>=u;
t=(n & b);
if(t==0){DATA=0;}
if(t==1){DATA=1;}
CLK=1;
__delay_us(1);
CLK=0;
}
}
}
for(char t=0;t<32;t++)
{
leds[t]<<=1;
}
}
display("AKON>");
for(char e=0;e<32;e++)
{
for(char y=0;y<20;y++)
{
RST=0;
RST=1;
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++)
{
DAD=pow[r];
__delay_ms(2);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++)
{
DAD=0;
RST=1;
char t,n;
n=leds[a];
n>>=u;
t=(n & b);
if(t==0){DATA=0;}
if(t==1){DATA=1;}
CLK=1;
__delay_us(1);
CLK=0;
}
}
}
for(char t=0;t<32;t++)
{
leds[t]=leds[t+1];
}
}
clear();
}
}
display(char *str)
{
int addr;
int z;
while(*str!=0){
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=0;z<5;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=6;z<11;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=12;z<17;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=18;z<23;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=24;z<29;z++){
leds[z] = Font2[addr+y];
y++;
}
}
}
void clear(void){
for(char y=0;y<31;y++){
leds[y]=0x00;
}
}
What is your buffer size now.... Are you on 16x32 led's now....
All those nested "if" statements are extremely inefficient
This is advanced stuff.... I really can't write another routine...
This is advanced stuff....