회원가입 ID/PW 찾기

Software & IDEs HOT8051도트입니다

판도라2008.01.30 13:0601.30조회 수 1086댓글 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
번호 분류 제목 글쓴이 조회 수 날짜
1112 Software & IDEs gps단말기 펌웨어질문입니다1 힘술쟁이 228 2015.11.18
1111 마이크로프로세서 485통신 질문 드립니다.1 롱X 252 2015.11.16
1110 마이크로프로세서 atmega128(avr) 자료는없나요??5 로마개구리 239 2015.11.14
1109 마이크로프로세서 HOTARM 서적추천부탁드림니다.2 홀롤로 435 2015.09.26
1108 마이크로프로세서 HOT여러분들은 요새 무슨 MCU를 사용하시나요?9 아크마 760 2015.09.13
1107 펌웨어 & 코딩언어 구조체 포인터 캐스팅??1 기다려줄래 309 2015.07.10
1106 마이크로프로세서 8051용 debeg tool 추천 부탁 드립니다.1 황소61 174 2015.06.19
1105 마이크로프로세서 keil uv2, uv4 crack ver 구할 수 있나요? 아리가이기 281 2015.05.14
1104 마이크로프로세서 HOTSTM32 시리즈는 delay 함수 제공 안하나요?1 기다려줄래 577 2015.05.07
1103 마이크로프로세서 [STM32l1xx] JTAG 통신핀을 IO로 사용해버렸어요1 기다려줄래 167 2015.04.28
1102 마이크로프로세서 DSP 회로 설계2 V고양이V 339 2015.04.22
1101 마이크로프로세서 codevision 컴파일러에서 어셈블리를 쓰고 싶습니다. branden 343 2015.04.07
1100 마이크로프로세서 WinCE6.0 드라이버 지원하는 USB Camera를 찾고 있습니다. branden 233 2015.03.24
1099 마이크로프로세서 이 칩mcu은 어떤모델인가요?3 제임스고슬링 232 2015.03.18
1098 마이크로프로세서 훈병입니다.6 branden 244 2015.03.17
1097 마이크로프로세서 HOT32비트 mcu면 죄다 dsp 인가요?3 제임스고슬링 491 2015.01.29
1096 마이크로프로세서 HOT코드비젼 관련하여 질문입니다.2 이득환 415 2015.01.19
1095 마이크로프로세서 PRO ENGINE2 를 윈도우7에서 사용할수 있는 방법있을까요? 그녕군v 256 2014.12.01
1094 마이크로프로세서 ADC와 USART로 PC 오실로스코프를 만들고 싶은데 어떻게 하죠?2 xvcdz 308 2014.11.28
1093 마이크로프로세서 8051를 이용한 voice recorder 관련 궁금증입니다. 하얀곰 357 2014.10.17
Prev 1 2 3 4 5 6 7 8 9 10 ... 58 Next
  • 음덕을 베푸틑 자는 반드시 양보를 받는다.
    - 회남자
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.