Microchip
直播中

李阳

7年用户 141经验值
私信 关注
[问答]

使用PIC12F1572不起作用

使用PIC12F1572,我尝试使用ADC转换来测量电压,然后根据输入,RA2引脚将输出高(5伏)或低(0伏)。我已经编写了一个基本代码,但是它似乎不起作用。想知道有没有人能看到我的问题?代码如下:includevoid main(void){PORTA=0b00000000;TRISA=0b010010;//仅配置引脚2和引脚4作为输入,ANSA4=1;//将端口RA4设置为模拟输入ANSA2=0;//将RA2设置为数字I/O/*初始化ADC*/ADCON0=0b001101;//ADC端口通道4(AN3),启用ADCADCON1=0b000000;//使用内部电压参考(Vdd和Vss)ADCON2=0b10101011;//正确判断结果//12TAD,在(1){ADCON0bits.GO=1;//Start Conversion).(ADCON0bits.GO);//等待转换完成值+=((未签名的int)ADRESH<<<8);///获取2位MSB结果//模拟值存储在ai值浮V中存储的2位MSB结果//2位MSB结果//模拟值;浮Vref Vref=5.5;//参考电压Vdd//Vdd//设置AN3输入为变量V V V=====((Vref*ai值)/1023);//转换为V,如果((V>0.2V>0.2)&;&;(V<&&;(V<电压V lt V lt电压V lt{ 2.5){LATA2=1;//输出RA2为高,即5伏}否则{LaTa2=0;//输出RA2为低,即0伏}}。

回帖(3)

张云

2019-9-12 10:04:57
快速查看数据表表明您使用ADCON1和ADCON2可能是错误的。PIC12(L)F1571/2数据表DS40001723D的第136页表明,ADFM(选择左/右对齐)是ADCON1的第7位——而不是如您评论所指示的那样在ADCON2中。我认为ADCON2只处理自动转换触发。噢,顺便说一下,当你说“这个代码不起作用”时,告诉我们它到底起什么作用是有帮助的,例如“RA2总是高的,当我期望它高时,只有当输入电压在x和y之间”。这有助于我们缩小问题,希望这对丹麦有所帮助。
举报

tijing忽忽

2019-9-12 10:21:51
您的代码中缺少了很多东西;一些配置设置和振荡器设置。如果你在硬件上尝试这个,振荡器可能不运行…
举报

丁亚念

2019-9-12 10:35:19
如上所述。在你试着跑之前先走一步,做一个简单的循环,只需慢慢地转动一个针。当你有了这个词,然后继续测量事物。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分