회원가입 ID/PW 찾기

Software & IDEs HOT8051도트입니다

판도라2008.01.30 13:0601.30조회 수 3701댓글 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
번호 분류 제목 글쓴이 조회 수 날짜
188 마이크로프로세서 HOTor-cad 입문..............................5 천상 1032 2008.03.04
187 마이크로프로세서 HOTAVR 설치 제거 오류6 naemaum4u 1291 2008.03.03
186 마이크로프로세서 HOTICC나 GCC로 짜여진 프로그램을 코드비전용으로 변환 가능한지?5 파파준 1111 2008.03.01
185 마이크로프로세서 HOTRTOS - commidi님5 아크마 859 2008.02.28
184 마이크로프로세서 HOT타이머인터럽트..9 naemaum4u 1803 2008.02.27
183 마이크로프로세서 HOTL298 모터 드라이브에 관해서29 챠리스만 6091 2008.02.15
182 마이크로프로세서 HOT기본적인 용어에 대해 정리해놓은게 있을까요?3 Denjel 1577 2008.02.13
181 마이크로프로세서 HOT아크마님 께서 만드신 라인트레이서 회로도 궁금증이요1 무수리 919 2008.01.30
180 마이크로프로세서 HOT저 궁금한게 있는데요..17 행복하면 978 2008.01.25
179 마이크로프로세서 HOT시프트된 모듈을 하나더 연결중에 한칸 내려가는현상4 문미문미 858 2008.01.23
178 마이크로프로세서 HOT안녕하세요.........ㅠㅠ13 날뽕녀 1299 2008.01.21
177 마이크로프로세서 HOT차례대로 올리겠어요.. 화면..25 행복하면 1784 2008.01.20
176 마이크로프로세서 HOT에러 메시지 뜨는 화면 입니다.. 이그응;;17 행복하면 1299 2008.01.18
175 마이크로프로세서 HOTkeil c uVision3 매뉴얼 있으신분~7 행복하면 1967 2008.01.17
174 마이크로프로세서 HOT제가 전자전공이 아니라......15 날뽕녀 843 2008.01.16
173 마이크로프로세서 HOT8051검파일중 나타난 에러문제5 문미문미 866 2008.01.15
172 마이크로프로세서 HOT8051의 LED전광판 2번째질문입니다.6 문미문미 1154 2008.01.10
171 마이크로프로세서 HOT8051로 이용한 LED전광판의 궁금증..6 문미문미 1961 2008.01.04
170 마이크로프로세서 HOTAVR로 열선을 제어하고 싶습니다.1 챠리스만 1685 2008.01.04
169 마이크로프로세서 HOTAVR 인터럽트 관련 궁금한 점이 있습니다.3 쎄단 4028 2008.01.04
Prev 1 ... 36 37 38 39 40 41 42 43 44 45 ... 50 Next
  • 여러가지 위험스러운 유혹들은 겉으로만 화려하고 다채로운 우리에게 찾아든다.
    - 헨리
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.