usefiantm
یک شنبه 10 فروردین 1393, 01:55 صبح
سلام
این برنامه رو نوشتم ولی کدویزن سه تا Library error ازش میگیره:
#include <mega32a.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B
#endasm
#include <lcd.h>
#include <stdio.h>
#define columns 40
#define offset 50
#define space 6
#define SPEED 5
#define NOP #asm("nop")
#define DATA PORTA.0
#define CLOCK PORTA.1
#define STROBE PORTA.2
const char font[] = {
0X42,0X61,0X51,0X49,0X46,// 2
0X3E,0X51,0X49,0X45,0X3E,// 0
0X00,0X42,0X7F,0X40,0X00,// 1
0X18,0X14,0X12,0X7F,0X10,// 4
};
void scan(char negative);
void load(char *str);
void effect();
char text[]="2014";
char buffer[1000];
char display[columns];
int n;
void main(void)
{
char s;
DDRA=0xFF;
load(text);
while(1)
{
for(s=0;s<SPEED;s++)
scan(0);
effect();
}
}
//--------------------
void load(char *str)
{
int FontPosition,i,j=0;
while(*str != 0)
{
FontPosition=(int)((*str++)-32)*5;
for(i=0;i<5;i++)
buffer[j+i]=font[FontPosition+i];
j+=space;
}
}
//----------------------
void effect()
{
register char i;
for(i=0;i<columns;i++)
display[i]=display[i+1];
display[columns-1]=buffer[n];
n++;
if(n==(sizeof(text)*5)+offset)n=0;
}
//--------------------------
void scan(char negative)
{
char i,j,data;
for(j=0;j<8;j++){
STROBE=0;
CLOCK=1;
for(i=columns;i>0;i--){
data=display[i-1];
if(negative)
data=~display[i-1];
data=data>>j;
DATA=data & 0x01;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
for(i=0;i<8;i++){
DATA=0;
if(i==j)
DATA=1;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
STROBE=1;
NOP
NOP
STROBE=0;
}
}
برنامه رو به این شکل اصلاح کردم ارورها برطرف شدن ولی برنامه دیگه کار نمیکنه.اگه اساتید یه راهنمایی بکنند ممنون میشم.
#include <mega32a.h>
#define columns 40
#define offset 50
#define space 6
#define SPEED 5
#define NOP #asm("nop")
#define DATA PORTA.0
#define CLOCK PORTA.1
#define STROBE PORTA.2
const char font[] = {
0x42,0x61,0x51,0x49,0x46,// 2
0x3E,0x51,0x49,0x45,0x3E,// 0
0x00,0x42,0x7F,0x40,0x00,// 1
0x18,0x14,0x12,0x7F,0x10,// 4
};
char text[]="2014";
char buffer[1000];
char display[columns];
int n;
void scan(char negative);
void load(char *str);
void effect();
//----------------
void main(void)
{
char s;
//------------
//lcd_init(16);
//lcd_clear();
//-------------
DDRA=0xFF;
load(text);
while(1)
{
for(s=0;s<SPEED;s++)
scan(0);
effect();
}
}
//--------------------
void load(char *str)
{
int FontPosition,i,j=0;
while(*str != 0)
{
FontPosition=(int)((*str++)-32)*5;
for(i=0;i<5;i++)
buffer[j+i]=font[FontPosition+i];
j+=space;
}
}
//----------------------
void effect()
{
register char i;
for(i=0;i<columns;i++)
display[i]=display[i+1];
display[columns-1]=buffer[n];
n++;
if(n==(sizeof(text)*5)+offset)n=0;
}
//--------------------------
void scan(char negative)
{
char i,j,data;
for(j=0;j<8;j++){
STROBE=0;
CLOCK=1;
for(i=columns;i>0;i--){
data=display[i-1];
if(negative)
data=~display[i-1];
data=data>>j;
DATA=data & 0x01;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
for(i=0;i<8;i++){
DATA=0;
if(i==j)
DATA=1;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
STROBE=1;
NOP
NOP
STROBE=0;
}
}
این برنامه رو نوشتم ولی کدویزن سه تا Library error ازش میگیره:
#include <mega32a.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B
#endasm
#include <lcd.h>
#include <stdio.h>
#define columns 40
#define offset 50
#define space 6
#define SPEED 5
#define NOP #asm("nop")
#define DATA PORTA.0
#define CLOCK PORTA.1
#define STROBE PORTA.2
const char font[] = {
0X42,0X61,0X51,0X49,0X46,// 2
0X3E,0X51,0X49,0X45,0X3E,// 0
0X00,0X42,0X7F,0X40,0X00,// 1
0X18,0X14,0X12,0X7F,0X10,// 4
};
void scan(char negative);
void load(char *str);
void effect();
char text[]="2014";
char buffer[1000];
char display[columns];
int n;
void main(void)
{
char s;
DDRA=0xFF;
load(text);
while(1)
{
for(s=0;s<SPEED;s++)
scan(0);
effect();
}
}
//--------------------
void load(char *str)
{
int FontPosition,i,j=0;
while(*str != 0)
{
FontPosition=(int)((*str++)-32)*5;
for(i=0;i<5;i++)
buffer[j+i]=font[FontPosition+i];
j+=space;
}
}
//----------------------
void effect()
{
register char i;
for(i=0;i<columns;i++)
display[i]=display[i+1];
display[columns-1]=buffer[n];
n++;
if(n==(sizeof(text)*5)+offset)n=0;
}
//--------------------------
void scan(char negative)
{
char i,j,data;
for(j=0;j<8;j++){
STROBE=0;
CLOCK=1;
for(i=columns;i>0;i--){
data=display[i-1];
if(negative)
data=~display[i-1];
data=data>>j;
DATA=data & 0x01;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
for(i=0;i<8;i++){
DATA=0;
if(i==j)
DATA=1;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
STROBE=1;
NOP
NOP
STROBE=0;
}
}
برنامه رو به این شکل اصلاح کردم ارورها برطرف شدن ولی برنامه دیگه کار نمیکنه.اگه اساتید یه راهنمایی بکنند ممنون میشم.
#include <mega32a.h>
#define columns 40
#define offset 50
#define space 6
#define SPEED 5
#define NOP #asm("nop")
#define DATA PORTA.0
#define CLOCK PORTA.1
#define STROBE PORTA.2
const char font[] = {
0x42,0x61,0x51,0x49,0x46,// 2
0x3E,0x51,0x49,0x45,0x3E,// 0
0x00,0x42,0x7F,0x40,0x00,// 1
0x18,0x14,0x12,0x7F,0x10,// 4
};
char text[]="2014";
char buffer[1000];
char display[columns];
int n;
void scan(char negative);
void load(char *str);
void effect();
//----------------
void main(void)
{
char s;
//------------
//lcd_init(16);
//lcd_clear();
//-------------
DDRA=0xFF;
load(text);
while(1)
{
for(s=0;s<SPEED;s++)
scan(0);
effect();
}
}
//--------------------
void load(char *str)
{
int FontPosition,i,j=0;
while(*str != 0)
{
FontPosition=(int)((*str++)-32)*5;
for(i=0;i<5;i++)
buffer[j+i]=font[FontPosition+i];
j+=space;
}
}
//----------------------
void effect()
{
register char i;
for(i=0;i<columns;i++)
display[i]=display[i+1];
display[columns-1]=buffer[n];
n++;
if(n==(sizeof(text)*5)+offset)n=0;
}
//--------------------------
void scan(char negative)
{
char i,j,data;
for(j=0;j<8;j++){
STROBE=0;
CLOCK=1;
for(i=columns;i>0;i--){
data=display[i-1];
if(negative)
data=~display[i-1];
data=data>>j;
DATA=data & 0x01;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
for(i=0;i<8;i++){
DATA=0;
if(i==j)
DATA=1;
CLOCK=0;
NOP
NOP
CLOCK=1;
}
STROBE=1;
NOP
NOP
STROBE=0;
}
}