[ZLG-ARM] ARM嵌入式系统教程(三)的外部存储器接口实验1

[复制链接]
 楼主| rpqhy 发表于 2007-1-16 15:30 | 显示全部楼层 |阅读模式
不知道是不是在这里发帖的。。。。<br /><br />我们学校是用周立功老师的教程,这个实验里有这段代码:<br /><br />uint8&nbsp;&nbsp;WordProgram(uint32&nbsp;Addr,&nbsp;uint16&nbsp;Data)&nbsp;<br />{&nbsp;&nbsp;&nbsp;volatile&nbsp;uint16&nbsp;&nbsp;*ip;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint16&nbsp;&nbsp;temp1,temp2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x5555);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;转换地址0x5555<br />&nbsp;&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0xaaaa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第一个写周期,地址0x5555,数据0xAA<br />&nbsp;&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x2aaa);<br />&nbsp;&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0x5555;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第二个写周期,地址0x2aaa,数据0x55<br />&nbsp;&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x5555);<br />&nbsp;&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0xa0a0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第三个写周期,地址0x5555,数据0xA0<br /><br />我看了不懂,怎么输入的是ip[0]=0x5555结果数据是0x55呢?是不是只读一个字节的啊?那样的话是不是也可以用0x0055呢?(从配套ppt里有看到低8位高8位输入的说法)我记得那时我看内存也看不出答案,今天想起就问一下,请老师解答!谢谢!<br />
 楼主| rpqhy 发表于 2007-1-16 20:53 | 显示全部楼层

难道我哪里表达不清晰????

各位看客懂的话帮忙回答一下啦~~~~
zlgarm 发表于 2007-1-17 09:59 | 显示全部楼层

re:

是的,可以用0x0055代替.&nbsp;SST39VF160/1601进行擦除/编程操作的总线写周期时,&nbsp;对高8位数据输入忽略。
 楼主| rpqhy 发表于 2007-1-17 12:50 | 显示全部楼层

呵呵,明白了~~~谢谢

菜鸟我以后还会问些别的,请多关照了~!!!
 楼主| rpqhy 发表于 2007-1-17 16:37 | 显示全部楼层

关于触摸屏实验的问题,又得麻烦周老师

周老师,我想问的代码如下:<br />void&nbsp;&nbsp;GetLCD_XY(uint16&nbsp;*vx,&nbsp;uint16&nbsp;*vy)<br />{&nbsp;&nbsp;&nbsp;uint16&nbsp;&nbsp;vx_dat,&nbsp;vy_dat;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint16&nbsp;&nbsp;vx_dat1,&nbsp;vy_dat1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;//&nbsp;判断是否有触摸动作(通过ADS7843的PENIRQ引脚进行判断)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;vy_dat&nbsp;=&nbsp;ADS7843_WriteRead(AIN_Y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy_dat&nbsp;!=&nbsp;0)&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;进行数据采集<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx_dat&nbsp;=&nbsp;ADS7843_WriteRead(AIN_X);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy_dat&nbsp;=&nbsp;ADS7843_WriteRead(AIN_Y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx_dat1&nbsp;=&nbsp;ADS7843_WriteRead(AIN_X);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy_dat1&nbsp;=&nbsp;ADS7843_WriteRead(AIN_Y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((vy_dat&lt3)&nbsp;||&nbsp;(vy_dat1&lt3))&nbsp;continue;<br />///1、上面这一句是还是进行六次数据采集的条件判断语句啊?<br />///我不明白的是:vy_dat不是坐标值吗,怎么变成次数了??<br /><br />///师兄叫我看ADS7843_WriteRead里面写什么,我看不大懂。只知道里面<br />///只返回了ret_dat值。应该就是坐标值吧....<br />///2、顺便问问,初学者用不用看到驱动里到底写什么?什么时候看最合适?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vx_dat&gtvx_dat1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((vx_dat-vx_dat1)&nbsp;&gt&nbsp;32)&nbsp;continue;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />///3、32怎么得到的?是多次实验得出的,还是大概的。。。。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((vx_dat1-vx_dat)&nbsp;&gt&nbsp;32)&nbsp;continue;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vy_dat&gtvy_dat1)&nbsp;///<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((vy_dat-vy_dat1)&nbsp;&gt&nbsp;64)&nbsp;continue;&nbsp;&nbsp;&nbsp;&nbsp;<br />///4、64呢?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((vy_dat1-vy_dat)&nbsp;&gt&nbsp;64)&nbsp;continue;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*vx&nbsp;=&nbsp;(vx_dat+vx_dat1)&nbsp;&gt&gt&nbsp;1<br />&nbsp;///此处是不是指右移一位相当于除以10(即十进制的2)???<br />&nbsp;///即得到用户点的坐标的平均值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*vy&nbsp;=&nbsp;(vy_dat+vy_dat1)&nbsp;&gt&gt&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />各位看官要是知道的话也请回答一下菜鸟的问题,浪费你们宝贵时间了,麻烦了~~!
 楼主| rpqhy 发表于 2007-1-18 12:17 | 显示全部楼层

我猜周老师不会再来看这个帖子了!

周老师可能太忙,一个帖子不会回来看第二遍。。。。。。<br />所以希望懂的大虾,小虾~~~能回答我上面那几个问题~~~~~~~~
 楼主| rpqhy 发表于 2007-1-19 16:42 | 显示全部楼层

我等阿等。。。。。

  
 楼主| rpqhy 发表于 2007-1-20 16:26 | 显示全部楼层

要是明天还没人回的话,我只好。。。。

只好发新帖了~~~~~~~~~嘿嘿嘿~~~!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部