Chào các bác, em mới tập lập trình nên còn mù mờ lắm
Tình hình lá thế này, mấy ngày qua em đang đau đầu về cái chạy chữ matrix đơn giản dùng 1 ic 89C52, 2 ic 595, 2 cái led 8x8 mà làm hoài không xong, tham khảo đủ chỗ vẫn vậy . Có vài vấn đề em còn mù mờ lắm, vì vậy em xin các bác vui lòng giải thích cho em hiểu cái nha
1. làm sao để gom 2 byte riêng rẽ (mỗi byte 8 bit) thành 2 byte chung với nhau (dãy 16 bit) vd: 0xfe và 0x7f thành 0xfe7f ??? à, viết bằng Keil C nha các bác.
2. em đã cố gắng làm thử nhưng kết quả là cứ bị 'DATA': SEGMENT TOO LARGE là như thế nào vậy các bác? mong các bác xem và ráng dành chút thời gian quý báu giúp dùm em khỏi mất ngủ trong những ngày tới .code cua em đây các bác
Xin các bác chỉ rõ chỗ sai và fix nó lại dùm em nha. em xin đa tạ
Tình hình lá thế này, mấy ngày qua em đang đau đầu về cái chạy chữ matrix đơn giản dùng 1 ic 89C52, 2 ic 595, 2 cái led 8x8 mà làm hoài không xong, tham khảo đủ chỗ vẫn vậy . Có vài vấn đề em còn mù mờ lắm, vì vậy em xin các bác vui lòng giải thích cho em hiểu cái nha
1. làm sao để gom 2 byte riêng rẽ (mỗi byte 8 bit) thành 2 byte chung với nhau (dãy 16 bit) vd: 0xfe và 0x7f thành 0xfe7f ??? à, viết bằng Keil C nha các bác.
2. em đã cố gắng làm thử nhưng kết quả là cứ bị 'DATA': SEGMENT TOO LARGE là như thế nào vậy các bác? mong các bác xem và ráng dành chút thời gian quý báu giúp dùm em khỏi mất ngủ trong những ngày tới .code cua em đây các bác
#include <REGX52.H>
sbit DAT = P2^0;
sbit SCK = P2^1;
sbit LACH = P2^2;
int n;
void delay(int ms)
{for(n=0;n<ms;n++)
{;}}
void xuatdulieu(unsigned char x,unsigned char y)
{
unsigned long i,temp;
temp=(x<<8)|y;
temp=temp&0x8000;
for(i=0;i<16;i++)
{
if(temp==0x8000)
{DAT=1;}
else
{DAT=0;}
SCK=0;
SCK=1;
temp*=2;
}
LACH=0;
LACH=1;
}
unsigned int hang[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned long cot1[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x0 0,0xf9,0xf3,0xe7,0xcf,0x00,0x00,0xff,0xe7,0xe7,0xe 7,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff};
unsigned long cot2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xf9,0xf 3,0xe7,0xcf,0x00,0x00,0xff,0xe7,0xe7,0xe7,0xff,0xf d,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f};
void main()
{
int m=0;
int j,p;
while(1)
{
for(j=0;j<8;j++)
{
P3=hang[j];delay(2);
p=j+m;
xuatdulieu(cot1[p],cot2[p]);
delay(10);
}
m++;
if(m==40)
m=0;
}
}
sbit DAT = P2^0;
sbit SCK = P2^1;
sbit LACH = P2^2;
int n;
void delay(int ms)
{for(n=0;n<ms;n++)
{;}}
void xuatdulieu(unsigned char x,unsigned char y)
{
unsigned long i,temp;
temp=(x<<8)|y;
temp=temp&0x8000;
for(i=0;i<16;i++)
{
if(temp==0x8000)
{DAT=1;}
else
{DAT=0;}
SCK=0;
SCK=1;
temp*=2;
}
LACH=0;
LACH=1;
}
unsigned int hang[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned long cot1[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x0 0,0xf9,0xf3,0xe7,0xcf,0x00,0x00,0xff,0xe7,0xe7,0xe 7,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff};
unsigned long cot2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xf9,0xf 3,0xe7,0xcf,0x00,0x00,0xff,0xe7,0xe7,0xe7,0xff,0xf d,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf f};
void main()
{
int m=0;
int j,p;
while(1)
{
for(j=0;j<8;j++)
{
P3=hang[j];delay(2);
p=j+m;
xuatdulieu(cot1[p],cot2[p]);
delay(10);
}
m++;
if(m==40)
m=0;
}
}
Comment