| 
| 
查看: 2068|回复: 11
 | 
关于ADC问题。
[复制链接] |  
 |  | 
 
| 本帖最后由 wilson16 于 20-4-2012 06:32 PM 编辑 
 
 | i. 你要想做什么? 你的应用是什么?
 想学习关于一些简单ADC。
 
 ii. 你想要拿到什么效果
 当analog 2.4v input  时,LED on.....少过时,就off。
 iii. 你做了什么
 用了mplab写好program了。
 
 iv. 你遇到了什么问题。
 其实可以得到我要的结果了,可是但我用proteus simulate时,会有error msg  出来,我想是timing的问题。但不懂问题在那里。同时还会弄到我的电脑很lag去。
 
 v. 你用什么MCU?
 pic16f877a
 
 vi. 你用什么语言? ASM /C/PICBasic/Keil?Compiler 版本?
 ASM
 vii. 有源码吗? 如是抄来的请注明出处, 请放链接。
 http://uploading.com/files/e1ba4a67/ADC.rar/
 viii. 有电路图吗?
 有。
 ix. 你google 了吗? 你的搜索关键字是什么?
 有,但多数是用C比较多。
 
 x. 有照片证明你做的东西吗?还是只是概念性的空谈?
 有upload一些link了。
 
 xi. 是你自己的问题? 还是你帮人问的? 请说明。
 是我的.
 
 
 
 
 
 
 复制代码这是我的program。
list p=16f877
include <p16f877.inc>
PORTA       EQU 05H
PORTB       EQU 06H
ADCON0     EQU 1FH
ADCON1     EQU 9FH
STATUS      EQU 03H
ADRESL      EQU 9EH
                                     ORG 0x000
                                     NOP
             START             BCF STATUS,6
                                     BSF STATUS,5
                                     MOVLW B'00011111'
                                     TRIS PORTA
                                     MOVLW B'00000000'
                                     MOVWF ADCON1
                                     MOVLW B'00000000'
                                     TRIS PORTB
                                     BCF STATUS,5
                                     BCF STATUS,6
                                     MOVLW B'10000001'
                                     MOVWF ADCON0
                                     CLRF PORTA
                                     CLRF PORTB
             
               BEGIN            BSF ADCON0,2                   ; WAITING UNTIL GO/DONE CLEAR
              WAIT               BTFSC ADCON0,2
                                     GOTO WAIT
 
                                     MOVF ADRESL,W              ;
                                     SUBLW .122
                                     BTFSC STATUS,0              ; CLEAR IF ADRESL >122
                                     GOTO a1
                                     GOTO a2
                  a1               BCF PORTB,0                  ;LED OFF
                                     GOTO BEGIN
                 a2                BSF PORTB,0                    ;LED ON
                                     GOTO BEGIN
                                     
                                     END
 
 
 
 
 
 
 
 
 
 
 
 
 | 
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 19-4-2012 08:39 PM
|
显示全部楼层 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 19-4-2012 08:40 PM
|
显示全部楼层 
| 本帖最后由 wilson16 于 22-4-2012 01:09 PM 编辑 
 
  | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 19-4-2012 10:12 PM
|
显示全部楼层 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 20-4-2012 12:04 AM
|
显示全部楼层 
| 可以用C 写吗?
 里面有一些用C 的范例。
 pic 发表于 19-4-2012 10:12 PM
 
 不能了,因为我们老师只可以用ASM而已。。。
  | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 20-4-2012 11:47 AM
|
显示全部楼层 
| 回复 1# wilson16复制代码BEGIN
BSF ADCON0,2
WAIT
BTFSC ADCON0,2
GOTO WAIT
 我没写过 PIC的 ASM,不过以逻辑分析,感觉上,这块有问题!
 
 一直在loop,即使条件成立后,还是在这个范围内,完全不离开!
 下面的code完全没机会去到。。。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 20-4-2012 06:21 PM
|
显示全部楼层 
| 回复  wilson16 
 我没写过 PIC的 ASM,不过以逻辑分析,感觉上,这块有问题!
 
 一直在loop,即使条件成 ...
 wkloh 发表于 20-4-2012 11:47 AM
 
 不会啊,当ADCON0里面的BIT2 CLEAR后就skip next 。可是我把它接成在circuit board就可以运用。问题是为什么在simulation 就有很多error msg 出来,有6000+多条咯。。。
  | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 21-4-2012 08:15 AM
|
显示全部楼层 
| 本帖最后由 wkloh 于 21-4-2012 08:17 AM 编辑 
 不会啊,当ADCON0里面的BIT2 CLEAR后就skip next 。可是我把它接成在circuit board就可以运用。问题是为 ...wilson16 发表于 20-4-2012 06:21 PM
 刚下载,看过你的 2楼 贴出 的 error msg,很明显的,你的错误信息,跟我 之前提到,可疑地方,不谋而合。
 
 
 不会啊,当ADCON0里面的BIT2 CLEAR后就skip next 。可是我把它接成在circuit board就可以运用。
 既然在circuit board 能运行,就行了啊!何必硬要通过 protues simulation?
 
 Protues Simulation主要是在还没设计电板,模拟硬件运行的功能。
 
 
 复制代码
BEGIN            BSF ADCON0,2                   ; WAITING UNTIL GO/DONE CLEAR
WAIT               XXXXXXXXXXX
                         BTFSC ADCON0,2
                         GOTO WAIT
 我个人认为, XXXXXXXXXXX,因该加入判断程式,检查 ADC flag 是否完成,以离开此wait地段。
 
 记得下次,直接post 出图片来,看贴解答问题的人也比较直接看到你的问题。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 22-4-2012 01:07 PM
|
显示全部楼层 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 23-4-2012 08:30 AM
|
显示全部楼层 
| 回复 9# wilson16 
 复制代码BEGIN            BSF ADCON0,2                   ; WAITING UNTIL GO/DONE CLEAR
WAIT               “XXXXXXXXXXX”
                         BTFSC ADCON0,2
                         GOTO WAIT
 请在                “XXXXXXXXXXX”,写入 判断 ADC conversion 是否完成的指令,如完成就跳了wait 咋个区块。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 23-4-2012 10:21 AM
|
显示全部楼层 
| 回复  wilson16 
 
 请在                “XXXXXXXXXXX”,写入 判断 ADC conversion 是否完成的指令,如 ...
 wkloh 发表于 23-4-2012 08:30 AM
 
 好的我先试看。。。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 21-5-2012 02:00 PM
|
显示全部楼层 
| 最近比较忙。已经ok了,原来只是  在BTFSC ADCON0,2 之前加一些delay 给它就行了。 | 
 评分
查看全部评分
 |  |  |  |
 
|  |  |  
|  |  |  |  | 
            本周最热论坛帖子 |