智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3333|回复: 4
打印 上一主题 下一主题

还在为缺少IO口头疼吗?——AD口当普通输入输出口使用的实践总结

[复制链接]

9

主题

48

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1090
QQ
威望
627
贡献
127
兑换币
6
注册时间
2011-7-26
在线时间
168 小时
跳转到指定楼层
1#
发表于 2011-11-13 20:41:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
无线模块和并行液晶的加入使得80管脚S12芯片普通IO口成了香饽饽,首次用AD口当普通IO口(GPIO)使用是在数码管上,那时注意到DDR0AD0
DDR1AD0
PT0AD0
PT1AD0
的区别。
这四个都是寄存器,用来控制数据的传输。如果把数据传输比喻为有氧呼吸的话,那么信号就是气,D字头的(常用的有DDRA,DDRB)用来控制呼出还是吸入,P字头的(常用的有PORTA,PORTB)相当于肺,要呼气时存的是是二氧化碳,要吸气时存的是氧气。AD寄存器是16位的,却对应有8个管脚,在逻辑上分成0、1两块加以区分。诡异的是1代表高八位,0代表第八位,这是实践连线时试出来的,用DDR0AD0/PT0AD0数码管亮,反之用DDR0AD0/PT0AD0则不亮。当时的结论时忽略高八位就可以当普通IO口使用了,却没注意一直是当输出口用的(接数码管)。


今天移植到12864液晶时却出现问题,debug发现错在“忙等待”。忙等待时需要临时当输入口读管脚7的电平,加上
ATD0DIENL=0XFF;   //输入允许
   //ATD0DIENH=0XFF,还是高八位,忽略;
就可以了。
允许输入的是数字信号,读入的是模拟信号,但也成功了,可谓是机缘巧合和,不过中间原因有待发掘。

总结:输出时用DDR1AD0
                    PT1AD0          输入时加上ATD0DIENL
        大家使用出现问题的话可以再讨论。

16

主题

314

帖子

0

精华

金牌会员

毛泽西

Rank: 6Rank: 6

积分
1529
威望
795
贡献
444
兑换币
43
注册时间
2010-11-29
在线时间
145 小时
2#
发表于 2011-11-13 20:47:50 | 只看该作者
帮你顶   今年用AD哭做过数字量输出口用
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
3#
发表于 2011-11-14 13:16:27 | 只看该作者
哈哈,前几天刚有个同学问过我这个问题~
这个输入使能寄存器一定得注意
回复 支持 反对

使用道具 举报

6

主题

741

帖子

0

精华

常驻嘉宾

大坏蛋

Rank: 8Rank: 8

积分
3542

优秀会员奖章论坛元老奖章在线王奖章活跃会员奖章

威望
2051
贡献
627
兑换币
193
注册时间
2012-3-11
在线时间
432 小时
4#
发表于 2012-4-16 22:20:37 | 只看该作者
经典、、、、
回复 支持 反对

使用道具 举报

19

主题

239

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2706

优秀会员奖章

威望
1164
贡献
1364
兑换币
14
注册时间
2011-3-27
在线时间
90 小时
5#
发表于 2012-5-21 17:38:08 | 只看该作者
顶一个。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 18:37 , Processed in 0.046255 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表