打印
[AVR单片机]

数组 地址 传递

[复制链接]
1380|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fcw|  楼主 | 2015-12-24 10:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
const prog_uchar number[]=
{
;  源文件 / 文字 : 0123456789
;  宽×高(像素): 8×16
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
};
void show_num816(unsigned char x,unsigned char y, unsigned char *dp,unsigned char mode)
{
        unsigned char i,n,m;
        n=x;m=y;
        for(i=0;i<8;i++)
        {
               
                                Writecom1(0xb8+y);
                                Writecom1(0x40+x);
                                if(mode)
                                        {Writedata1(pgm_read_byte(&dp));}
                                else
                                        {Writedata1(~pgm_read_byte(&dp));}
                        
        }
                x++;
        }
        x=n;y=m+1;
        for(i=0;i<8;i++)
        {
               
                                Writecom1(0xb8+y);
                                Writecom1(0x40+x);
                                if(mode)
                                        {Writedata1(pgm_read_byte(&dp[i+8]));}
                                else
                                        {Writedata1(~pgm_read_byte(&dp[i+8]));}
               
                x++;
        }
}
/************************************************************************/
int main (void)
{
        cli();     //disable all interrupts

       show_num816(0,0,&number,0);

}
/************************************************************************/
在调用show_num816(0,0,&number,0);时如何先增加指针的地址?试过用show_num816(0,0,&number+16,0);不行;

相关帖子

沙发
fcw|  楼主 | 2015-12-24 10:23 | 只看该作者
调用show_num816(0,0,&number,0)可以显示第一个数字,我想显示后面的数字怎么增加地址?

使用特权

评论回复
板凳
luofeng2g| | 2015-12-24 10:42 | 只看该作者
show_num816(0,0,&(number+16),0) 试试这个

使用特权

评论回复
地板
fcw|  楼主 | 2015-12-24 10:53 | 只看该作者
改成show_num816(0,0,&(number+16),0)编译不能通过,谢谢

使用特权

评论回复
5
luofeng2g| | 2015-12-24 11:23 | 只看该作者
本帖最后由 luofeng2g 于 2015-12-24 11:32 编辑
fcw 发表于 2015-12-24 10:53
改成show_num816(0,0,&(number+16),0)编译不能通过,谢谢

额额,傻了,这样show_num816(0,0,(number+16),0)?方便的话打包代码,我看看

使用特权

评论回复
6
wh13651| | 2015-12-24 17:33 | 只看该作者
没看懂你这两条语句是什么意思Writedata1(pgm_read_byte(&dp));show_num816(0,0,&number,0);读地址吗?number中存储的数是你要显示的字符还是要显示的地址?

使用特权

评论回复
7
fcw|  楼主 | 2015-12-25 11:43 | 只看该作者
wh13651 发表于 2015-12-24 17:33
没看懂你这两条语句是什么意思Writedata1(pgm_read_byte(&dp));show_num816(0,0,&number,0);读地址吗?numb ...

number中存储的是要显示的字符。

使用特权

评论回复
8
fcw|  楼主 | 2015-12-25 11:44 | 只看该作者
luofeng2g 发表于 2015-12-24 11:23
额额,傻了,这样show_num816(0,0,(number+16),0)?方便的话打包代码,我看看

代码也就这些,我现在主要试LCM的显示

使用特权

评论回复
9
wh13651| | 2015-12-25 18:03 | 只看该作者
fcw 发表于 2015-12-25 11:43
number中存储的是要显示的字符。

还是没看懂,可是“&”不是取地址的意思吗,show_num816(0,0,&number,0);number本来就是数组的首地址了,你前面再加一个&是什么意思,你程序里又是Writedata1(pgm_read_byte(&dp));,难道要把地址的地址来显示出来吗?是不是我C基础太差了。真的不懂。

使用特权

评论回复
10
airwill| | 2015-12-25 20:56 | 只看该作者
unsigned char *dp 这样定义不行. 由于 AVR 访问 FLASH 数组和 SRAM 数组使用不同的指令, 所以不能用访问 SRAM 的指针去指向 FLASH 的地址.
用这样的指针
const PROGMEM char *dp

使用特权

评论回复
11
fcw|  楼主 | 2015-12-26 21:40 | 只看该作者
airwill 发表于 2015-12-25 20:56
unsigned char *dp 这样定义不行. 由于 AVR 访问 FLASH 数组和 SRAM 数组使用不同的指令, 所以不能用访问 S ...

感谢AIRWILL兄弟指正,我想再问一下调用show_num816(0,0,&number,0)这个函数,如果让指针指向第二个字符可以这样写吗show_num816(0,0,&number+16,0)?

使用特权

评论回复
12
airwill| | 2015-12-26 22:11 | 只看该作者
C 语言, 数组名就是指针

使用特权

评论回复
13
fcw|  楼主 | 2015-12-31 16:12 | 只看该作者
airwill 发表于 2015-12-26 22:11
C 语言, 数组名就是指针

按照你说的做OK,谢谢!

使用特权

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

本版积分规则

fcw

21

主题

66

帖子

1

粉丝