打印

(急!)请问怎么用数组来存32个字符?

[复制链接]
1629|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fengyeu|  楼主 | 2007-10-5 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
(急!)请问怎么用数组来存32个字符?
沙发
fengyeu|  楼主 | 2007-10-5 20:35 | 只看该作者

俺C程序才刚开始写啊!

char* test[]={"abc","cde","fgh"};

data 存储器类型说明 直接寻址的内部数据存储器
bdata 存储器类型说明 可位寻址的内部数据存储器
idata 存储器类型说明 间接寻址的内部数据存储器
pdata 存储器类型说明 分页寻址的外部数据存储器
怎么用啊?

使用特权

评论回复
板凳
123654789| | 2007-10-5 20:35 | 只看该作者

麻烦楼主帮我作证,我也不是经常灌水

unsigned char TA[32]={"abcdefghijklmnopqrstuvwxyzabcdef"};

使用特权

评论回复
地板
fengyeu|  楼主 | 2007-10-5 21:25 | 只看该作者

哦我没有说清楚

是要在unsigned char TA[32]={"abcdefghijklmnopqrstuvwxyzabcdef"};
abcdefghijklmnopqrstuvwxyzabcdef里面存啊!

使用特权

评论回复
5
123654789| | 2007-10-5 21:28 | 只看该作者

是啊

还要 加上    引号 啊

使用特权

评论回复
6
fengyeu|  楼主 | 2007-10-5 21:32 | 只看该作者

目的是要吧SBUF里的数据寸到数组里

/******************************************************************

led.C  file

Created by ....
Date: 2007.10.5
Edit date:2007.10.5
            
*******************************************************************/

#include "reg52.h"
//sbit _led = 0x97;
sbit G=P1^4;                     //P1.7为显示颜色控制信号端口
sbit R=P1^5;                     //P1.6为显示颜色控制信号端口
sbit _led=0x97;    //用送缓冲寄存器SBUF里面的内容

//------------延时函数--------//
void delay(unsigned int dt)
{
  register unsigned char bt;
  for(;dt>1;dt--)
  for(bt=0;bt<255;bt++);
}

//---------颜色控制------------//

color2()
{
G=0;        //绿
R=1;
}
/*
color1()
{
G=0;        //粉红
R=0;
}
color3()
{
G=1;        //红
R=0;
}*/

//---------汉字表函数-----------//

led_tab()
{
  //--------------------字模表数组----------------
  unsigned char code bmp[]=
  {                 
    0x10, 0x80, 0x10, 0x43, 0xF0, 0x22, 0x1F, 0x14,
    0x10, 0x0C, 0xF0, 0x73, 0x80, 0x20, 0x82, 0x00,  
    0x82, 0x40, 0x82, 0x80, 0xF2, 0x7F, 0x8A, 0x00,
    0x86, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00,

    0x00, 0x00, 0xFC, 0x07, 0x04, 0x02, 0x04, 0x02,
    0xFC, 0x07, 0x00, 0x00, 0x82, 0x04, 0xFA, 0x05,  
    0x82, 0x04, 0x82, 0x04, 0x82, 0x04, 0x82, 0x44,
    0xFE, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00,


                                                                                
//-----------------结束标志表---------------------
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    };
//-------------------------------------------------
//------------------接收缓存------------------//
//unsigned char idata buf[]={b1, b2, b3, b4, b5, b6, b7, b8,};
//------------------接收缓存------------------//

while(1)
 {
  unsigned char a1=0x00,a3=0x00,a4=0x00,a6=0x00;//变量初始化
      long int i=0x00,k=0x00,a2=0x00,a5=0x00;
  
   while(1)
   { 
    for(a1=0;a1<20;a1++)       //字移动速度;
     {
     
      for(i=a2,k=0xf0;i<a2+32;)  //单字扫描;
       {
        P1=0xff;                 //初始化
        color2();                //调用颜色函数
         P1=(P1&k);
        
        P0=bmp;             //写上半屏
        i++;                    //取表偏移变量       
        P2=bmp;                //写下半屏
        a4=bmp;                //结尾取样
        i++;                    //取表偏移变量
        k++;
        if(k>0xff)
        {
         k=0xf0;
        }                    //取字偏移量  上16列 + 下16列 (32)
        delay(2);                //此延时为显示一个字后 加亮LED
        P0=0x00;                //去鬼影/去重影
        P2=0x00;                //去鬼影/去重影
       }      
      }
    a2++;                       //汉字移动 偏移变量
    a2++;
    //--------------------------------------
    if(a4==0x00)                  //汉字结束标志判断
     { 
      a5++;
      if(a5==16)                   
       {
        a5=0x00;                   //注意K变量不能清除否则后面会乱
        i=0x00,  a2=0x00;
        a3=0x00,a4=0x00,a6=0x00;   //变量初始化
       }  
      }
      else
       {
        a5=0x00;
       }
       //---------------------------------------
   } 
  }
}
//------------串口中断部分-------------------------------------
//////////////////////////////////////////////////////////////

void Init_Com(void)
{
     TMOD = 0x20;
     PCON = 0x00;
     SCON = 0x50;    //;串口为方式1    8 UART
     TH1 = 0xFd;
     TL1 = 0xfd;
     TR1 = 1;       //;波特率9600
     REN = 1;
     ES = 1;
     EA = 1;
}
void ComInt() interrupt 4
{
    unsigned char dat;
    ES = 0;
    RI = 0;
    dat = SBUF;
    SBUF = dat;
    //--------------------------------------
     
    //--------------------------------------

    do{}while( TI == 0 );
    _led = 0;
    TI = 0;
    ES = 1;
}
void Delay_xMs(unsigned int x)
{
  unsigned int i,j;
  for( i =0;i < x;i++ )
    {
    for( j =0;j<1000;j++ );
    }
}
void Com_start(void)
{
  Init_Com();
  /*while(1)
  {
        Delay_xMs(5);
        //_led = 1;
  }*/
}

////////////////////////////////////////////////////////////////////

//---------主函数  ---------//
void main(void)

  P3=0xff;    //io初始化
  P1=0xff;
  P0=0x00;
  P2=0x00;
  Com_start();    //开串口
               //颜色花样控制 可用定时控制-----
  //color1();       //粉红 
  color2();       //绿      
  //color3();         //红
  led_tab();    //调用显示函数;
}
//--------------------------------------------------

使用特权

评论回复
7
123654789| | 2007-10-5 21:35 | 只看该作者

程序 很长 啊

你 可以 把数据 写进  数组 啊

使用特权

评论回复
8
fengyeu|  楼主 | 2007-10-5 21:41 | 只看该作者

今天刚写的,就是不知道啊,怎么把把数据 写进 数组

先把BUF的数据写到数组(不会)
,然后把数组里的数据送P1,P2

使用特权

评论回复
9
fengyeu|  楼主 | 2007-10-5 21:59 | 只看该作者

是不是要用到数组指针啊??

是不是要用到数组指针啊??

使用特权

评论回复
10
fengyeu|  楼主 | 2007-10-6 17:53 | 只看该作者

老谭的书好!

还是老谭的书好!
void Com_start(void)
{
  Init_Com();
  while(1)
  {
  for(buf_add=0x00;32<=buf_add;buf_add++)
  {
   data_buf[buf_add] = buf;
   P0 = data_buf[buf_add];
  }

使用特权

评论回复
11
123654789| | 2007-10-6 17:54 | 只看该作者

for(buf_add=0x00;buf_add<32;buf_add++);

楼上 的答案 好象 不对劲 


 

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

446

帖子

0

粉丝