智能车制作

标题: 还在为缺少IO口头疼吗?——AD口当普通输入输出口使用的实践总结 [打印本页]

作者: guoyaoxd    时间: 2011-11-13 20:41
标题: 还在为缺少IO口头疼吗?——AD口当普通输入输出口使用的实践总结
无线模块和并行液晶的加入使得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
        大家使用出现问题的话可以再讨论。
作者: 赛车新手    时间: 2011-11-13 20:47
帮你顶   今年用AD哭做过数字量输出口用
作者: sonwendi    时间: 2011-11-14 13:16
哈哈,前几天刚有个同学问过我这个问题~
这个输入使能寄存器一定得注意
作者: 一毛钱~~~~~~    时间: 2012-4-16 22:20
经典、、、、
作者: 丁香花    时间: 2012-5-21 17:38
顶一个。




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2