keilc51二维数组 10
各位大侠,我在变程序时发现自己的Keil不能引用二维数组,请哪位大侠指点迷津。程序如下:#include<reg51.h>#include<lcd12864.h>#inc...
各位大侠,我在变程序时发现自己的Keil不能引用二维数组,请哪位大侠指点迷津。程序如下:
#include <reg51.h>
#include <lcd12864.h>
#include <24c02.h>
#define uchar unsigned char
uchar stam[4][8{{0,1,2,3,4,5,6,7},
{8,9,10,11,12,13,14,15},
{16,17,18,19,20,21,22,23},
{24,25,26,27,28,29,30,31}};
main()
{ uchar i,j;
P0=0;
delayms(1000);
lcd_init();
lcd_pos(1,0);
for(i=0;i<4;i++)
for(j=0;j<8;j++)
lcd_wdat(48+stam[i][j]);
}
其中lcd_wdat()是封装在头文件里的函数,其功能为将字符的ASCII码输入函数则该字符在显示屏12864上显示。
该程序在运行后在预先应该输出字符的地方却输出的都是‘/’,该字符的ASCII码是47,也就是说从数组当中读出的都是-1。
但吧使stam[i][i]改为8*i+j则又输出正常了。
轻微大侠们到底问题出在哪里?是不是KEIL本身的问题,因为我自认为这个程序本身是,没错的。谢谢!! 展开
#include <reg51.h>
#include <lcd12864.h>
#include <24c02.h>
#define uchar unsigned char
uchar stam[4][8{{0,1,2,3,4,5,6,7},
{8,9,10,11,12,13,14,15},
{16,17,18,19,20,21,22,23},
{24,25,26,27,28,29,30,31}};
main()
{ uchar i,j;
P0=0;
delayms(1000);
lcd_init();
lcd_pos(1,0);
for(i=0;i<4;i++)
for(j=0;j<8;j++)
lcd_wdat(48+stam[i][j]);
}
其中lcd_wdat()是封装在头文件里的函数,其功能为将字符的ASCII码输入函数则该字符在显示屏12864上显示。
该程序在运行后在预先应该输出字符的地方却输出的都是‘/’,该字符的ASCII码是47,也就是说从数组当中读出的都是-1。
但吧使stam[i][i]改为8*i+j则又输出正常了。
轻微大侠们到底问题出在哪里?是不是KEIL本身的问题,因为我自认为这个程序本身是,没错的。谢谢!! 展开
展开全部
是源码吗?
这个好像有点问题:
uchar stam[4][8{{0,1,2,3,4,5,6,7},
{8,9,10,11,12,13,14,15},
{16,17,18,19,20,21,22,23},
{24,25,26,27,28,29,30,31}};
是否应该改为:
uchar stam[4][8]={{0,1,2,3,4,5,6,7},
{8,9,10,11,12,13,14,15},
{16,17,18,19,20,21,22,23},
{24,25,26,27,28,29,30,31}};
这个好像有点问题:
uchar stam[4][8{{0,1,2,3,4,5,6,7},
{8,9,10,11,12,13,14,15},
{16,17,18,19,20,21,22,23},
{24,25,26,27,28,29,30,31}};
是否应该改为:
uchar stam[4][8]={{0,1,2,3,4,5,6,7},
{8,9,10,11,12,13,14,15},
{16,17,18,19,20,21,22,23},
{24,25,26,27,28,29,30,31}};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询