英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4056|回复: 1
打印 上一主题 下一主题

12f675的 D/A转换问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-21 16:52:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人写了一段程序,要求6.7脚作为输入[0-5V],3.5脚作为输出,但工作时,3.5脚始终是低电压,请问各位高手是不是软件问题,非常感谢.程序如下:
#define TMR0 01H                       
#define PCL 02H
#define STATUS 03H
#define FSR 04H
#define GPIO 05H
#define PCLATH 0AH
#define INTCON 0BH
#define ADRES 1EH
#define PIR1 0CH
#define ADCON0 1FH
#define OPTION 81H
#define PIE1 8CH
#define ADCON1 9FH
#define TRIS 85H
#DEFINE CMCON 19H
#define TEMP_WIMAGE 20H
#define WIMAGE 21H
#define TEMP_PCLATH 22H
#define TEMP_FSR 23H
#define TEMP_STATUS 24H
#define TEMP_WREG 25H
#define UPLIMT 26H
#define TWOH 27H
#define THREEH 28H
#define FOURH 29H
#define SIXH 2AH
#define EIGHTH 2BH
#define DSHI1 2CH
#define DSHI2 2DH
#define DSHI3 2EH
#define DFLAG 2FH
#define QUED  30H
#define DELAYTEMP 31H
#DEFINE FLAG 32H
#define ADREH 1EH
#define ADBUF 33H
#define DELAYTEMP1  34H

      ORG 000H
  CLRF PCLATH
  GOTO INITSYS
INITSYS:
  
  BSF STATUS, 5                     ;选择寄存器体1
  MOVLW B'11000111'                 ;设置选项寄存器
  MOVWF OPTION                                                     
  MOVLW B'00100011'
  MOVWF ADCON1                      ; 设置7脚和6脚为A/D信号
  movlw 03H                       ;
  movwf TRIS                      ;设置6、7为输入引脚
  BCF STATUS, 5                    ;选择寄存器体0
  movlw 0ffH                         ;初始化输出寄存器
  MOVWf GPIO               
  CALL WAIT_AD                       
  MOVLW B'00000000'               
  MOVWF FLAG
LOOP:
  CALL WAIT
  BCF GPIO,2
  MOVLW B'00000000'            ;选择模拟信号输入通道为第7脚        
  MOVWF ADCON0
  CALL WAIT
  BSF ADCON0,1                  ;启动A/D
WAIT11:
  BTFSC ADCON0,1
  GOTO WAIT11
  ;BCF PIR1,6
  MOVF ADREH,0H               ;取高位比较(舍去低位),比较结果控制第5脚电平,观察二极管的熄灭察看转换结果。   
  suBLW 040H
  BTFSS STATUS,0            
  GOTO SHURU
  BCF GPIO,4
  CALL WAIT
  CALL WAIT
  GOTO OK
SHURU:
  BSF GPIO,4
  CALL WAIT
  CALL WAIT
OK:
  BSF GPIO,2
  CALL WAIT
  CALL WAIT
  GOTO LOOP
WAIT_AD:                            ;延时子程序
  BCF STATUS,5
  MOVLW 0
  MOVWF DELAYTEMP   
WAITAD:
  DECFSZ DELAYTEMP,1
  GOTO WAITAD
  RETURN
WAIT:                                ;延时子程序
  BCF STATUS,5
  MOVLW 0
  MOVWF DELAYTEMP1   
WAIT1:
  CALL WAIT_AD
  DECFSZ DELAYTEMP1,1
  GOTO WAIT1
  RETURN
  END
2#
 楼主| 发表于 2009-3-21 16:53:12 | 只看该作者
ANSEL 寄存器没有设置,这个寄存器是配置I/O口为模拟口还是数字口,

初始化
bcf STATUS,RP0   ;选择bank0
       clrf GPIO        ;init GPIO
       bsf STATUS,RP0   ;选择bank1
       call 0x3ff       ;读晶振校准值->W
       movwf OSCCAL     ;内部振荡器校准
       ;
       bcf STATUS,RP0   ;选择BANK0
       movlw 07h        ;
       movwf CMCON      ;关掉内部比较器
       movlw 00001101B  ;
       movwf ADCON0     ;AD结果左对齐,VDD参考电压,选择AN3【GP4端口】为模拟通道
       ;
       bsf STATUS,RP0   ;选择BANK1
       movlw 00011011B  ;
       movwf ANSEL      ;AD采用FOSC/8,GP0,GP1,GP4为模拟口,其它为数字口
       movlw 00011011B  ;端口方向置有效
       movwf TRISIO     ;SET GP5&GP2为输出,GP4,GP0,GP1,3路模拟输入,GP3空没用置数字输入
       ;
       bcf STATUS,RP0   ;选择BANK0
       ;端口值置无效×××××××××××
       movlw 0x24        ;主要是保证LED&继电器无效
       movwf GPIO       ;端口初值全部置无效,安全
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-1 10:37 , Processed in 0.051993 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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