회원가입 ID/PW 찾기

Software & IDEs HOT8051도트입니다

판도라2008.01.30 13:0601.30조회 수 1087댓글 1이 게시물을

AA

8051을 이용한 16*16도트 매트릭스 모듈을 6개 연결해 디스플레이 를 하려고 하는 데  에러가 생깁니다
에러 내용은 8051용량 초과라고 하는데 어떻게 소스를 고쳐야 할까요 ~~도와주세요~~


#include <io51.h>

bit P1_0 = 0x90;
bit P1_1 = 0x91;
bit P1_2 = 0x92;
bit P1_3 = 0x93;
bit P1_4 = 0x94;
bit P1_5 = 0x95;
bit P1_6 = 0x96;
bit P1_7 = 0x97;

#define R_DATA P1_4
#define G_DATA P1_5
#define LATCH  P1_6
#define CLOCK  P1_7

unsigned int FONT1[16] = {0x0000 , 0xfafa, 0x2222, 0x2622, 0x5253, 0x8a8a, 0x8a8a, 0x8a8a, 0x0000, 0x80fa
                           0xfe0a, 0x000a, 0x002b, 0x0022, 0x0022, 0x00fa};
static unsigned int FONT2[10], FONT3[10]; //, FONT[16];                        
unsigned int font1, font2, font3;

// unsigned int font;

unsigned char MatrixCount;
unsigned char NumberOfMatrix;
char addr;

void color (unsigned char color_select)
{
    int i;
    if(color_select==1){                     
           for(i=0; i<16*NumberOfMatrix; i++){
                  if(font3 & 0x8000){        //폰트 소스 최상위 비트가 1일때
                      R_DATA = 1;             //R_DATA,G_DATA  1,0일때 적색
                      G_DATA = 0;             //0,1일때 녹색,  1,1일때 오렌지색으로 점등
                  }
                  else{                   //폰트 소스 최상위 비트가 0일때
                      R_DATA = 0;
                      G_DATA = 0;
                  }
                  CLOCK = 1;
                  CLOCK = 0;

                  font3= font3 << 1;
                  if(font2 & 0x8000)
                    font3= 0x0001 | font3;                  
                  font2= font2 << 1;                                                   
                  if(font1 & 0x8000)
                    font2= 0x0001 | font2;
                  font1= font1 << 1;     //폰트 Hex값 1bit를 왼쪽으로 Shift
           }  
           P1= (P1 & 0xf0) | addr;
           LATCH= 0;
           LATCH= 1; 
           addr++;                    
     }
     else if(color_select==2){
            
   for(i=0 ; i<16; i++){
       if(font3 & 0x8000){        
                  R_DATA = 0;          
                  G_DATA = 1;           
                  }
                  else{                 
                    R_DATA = 0;
                    G_DATA = 0;
                    }
                    CLOCK = 1;
                    CLOCK = 0;
 //     font = font << 1; 
  }
  P1 = (P1 & 0xf0) |addr;
             LATCH = 0;
                    LATCH = 1;
   }
 else if(color_select==3) {
    for(i=0 ; i<16; i++){
         if(font3 & 0x8000){       
                  R_DATA = 1;            
                  G_DATA = 1;            
                  }
                  else{                  
                    R_DATA = 0;
                    G_DATA = 0;
                    }
                    CLOCK = 1;
                    CLOCK = 0;
 //                   font = font << 1; 
   }
             P1 = (P1 & 0xf0) |addr; 
      LATCH = 0;
                    LATCH = 1;
 }                
}

void shift(unsigned char shift_mode)
{
//     unsigned int FONTS;
    
     int i;
          if(shift_mode==1){ 
       for(i=0; i<10; i++){         // 라인 증가식
                 if(FONT3[i] & 0x8000) {
                    FONT3[i]= FONT3[i] << 1;
                    if(FONT2[i] & 0x8000)
                      FONT3[i]= FONT3[i] | 0x0001;                   
                    FONT2[i]=FONT2[i] << 1;                                                   
                    if(FONT1[i] & 0x8000)
                      FONT2[i]= FONT2[i] | 0x0001;
                    FONT1[i]= FONT1[i] << 1;
                   
                    FONT1[i]= FONT1[i] | 0x0001;          
                    MatrixCount=0;                  
                 }
                 else{
                    FONT3[i]= FONT3[i] << 1;
                    if(FONT2[i] & 0x8000)
                      FONT3[i]= FONT3[i] | 0x0001;                   
                    FONT2[i]=FONT2[i] << 1;                                                   
                    if(FONT1[i] & 0x8000)
                      FONT2[i]= FONT2[i] | 0x0001;
                    FONT1[i]= FONT1[i] << 1;
                 }
              }
          }
 /*         else if(shift_mode==2){
              for(i=0; i<16; i++) {
                 if(FONT[i] & 0x0001) {
                   FONTS = FONT[i] >> 1;
                   FONTS = FONTS | 0x8000;
                   FONT[i] = FONTS; }
                 else{
                   FONTS = FONT[i] >> 1;
                   FONT[i] = FONTS;
                 }
              }
         } */
}
                   
void main (void)
{
    int j;

    P1= 0x00;
   
    NumberOfMatrix=6;
    MatrixCount=0;

    while(1)
    {
      addr= 0;
        for(j=0; j<10; j++){    // 라인 증가식?
        font3= FONT3[j];
        font2= FONT2[j];
        font1= FONT1[j];
         color(1);   
      }
      MatrixCount++;
      shift(1);                            
   }               
}

댓글 1
  • No Profile

    1. 컴파일러 정품 사용하세요^^;;

    정품 아닌 버젼은 코드용량 제한이 있어서 그러한 에러를 발생시킬 수 있습니다.

    2. 8051 메모리 모델을 정확히 설정하셨는지요.. 플래시 용량 설정하는 부분이 있을텐데요.

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
26 개발용역 HOT제작의뢰입니다4 wons 4017 2008.11.24
25 개발용역 HOT개발의뢰1 열심이 3634 2008.09.20
24 개발용역 HOT제작의뢰 부탁한 kit 설명( 회로도 첨부) 띠앙 6724 2008.09.11
23 개발용역 HOTUSB용 ISP Programmer용 제작 의뢰4 띠앙 4088 2008.09.01
22 개발용역 HOT풍력을 이용한 빨래 건조대 똘이 4718 2008.07.31
21 개발용역 HOT물체감지 선별 제작의뢰 입니다. 진도령 3902 2008.06.16
20 개발용역 HOT윈도우 디바이스 드라이버 강의건3 빛나는 영혼 4770 2008.05.21
19 개발용역 HOTMCU 개발 마니아 10904 2008.05.16
18 개발용역 HOTRF를 이용한 도어락을 제작3 프리스타일 4386 2008.03.30
17 개발용역 HOT마이컴 동영상 강좌(임베디드)6 마이컴넷 7273 2008.03.26
16 개발용역 HOT저렴하게 개발해드립니다. 한올 4716 2008.01.08
15 개발용역 HOTled마이컴 의뢰드립니다 완전문외한이라 ....1 차예준 4701 2007.12.30
14 개발용역 HOT간단한 10진 카운터 PCB 제작의뢰요1 대구동이 7886 2007.12.02
13 개발용역 HOT로봇 mcu개발 의뢰1 정모양ㅋㅋ 4381 2007.11.21
12 개발용역 HOT온도센서 질문입니다.1 Genesis 4431 2007.11.19
11 개발용역 HOT엔지니어 구함 열씨미 아버지 4568 2007.11.07
10 개발용역 HOT디지털도어락 질문입니다.5 얼룩이리 5203 2007.11.06
9 개발용역 HOTLED 제어 가능 하신분..2 shin 4609 2007.10.29
8 개발용역 HOT기기제작 가능하신분??1 AK 4596 2007.10.25
7 개발용역 HOTRGB 컨트롤러 문의드립니다..3 섬세한샛다 5285 2007.10.12
Prev 1 ... 3 4 5 6 7 8 9 10 11 12 Next
  • 실패한 고통보다 최선을 다하지 못했음을 깨닫는 것이 몇배 더 고통스럽다.
    - 앤드류 매튜스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.