|
项目中,利用ADC+电位器,做一个简单的滚轮,方便设定组号grp。因为组号总数有20个以上,要是用按钮顺序切换,太累,如果用矩阵键盘,似乎有太占用IO口了。当前电位器接在PIN12,P07,AIN0上。
AD转换框图如下:
初始化操作过程如下:
使能:ADCEN@PER0=1,并屏蔽中断ADCMK=1;
精度:用ADTYP指定,暂时用8bit,用define很好用
转换速度:ADM0指定,用define
比较器上电:ADCE=1;
清除ADIF和ADMK,如果不想产生中断,ADMK不用关。
由于对应的AINx默认就是模拟,所以端口不用初始化。
到底使用哪个通道,有ADS寄存器决定,写啥就是啥,因为都是后3位,共8个通道。
使用时,ADCS=1,等待ADIF信号。然后清除ADIF,转换结束后,会自动清除ADCS,进入待机状态。所以通过ADCS信号也可以查询转换情况。
最后返回的是ADCRH>>3+1,也就是可以容纳32组,从应用角度已经够了。测试结果还不错,不过呢,就是存在非线性,在比较低的组号,反应可能会比较快,高组号,反应比较慢。
|
|