STC12C2052单片机的AD转换功能进行AD转换初始化设置汇编

2009-4-28 16:02 3191 0 分类: MCU/ 嵌入式

ADC_CONTR        EQU        0C5H         ;A/D转换寄存器


ADC_DATA         EQU        0C6H         ;A/D转换结果寄存器,为10位A/D转化结果的高8位


ADC_LOW2        EQU        0BEH        ;A/D转换结果寄存器,低2位有效,为10位A/D转换结果的低2位


                                    ;如果不用ADC_LOW2的低2位,只有ADC_DATA的8位,则为8位A/D转化


P1M0             EQU         91H         ;P1口模式选择寄存器0


P1M1             EQU         92H         ;P1口模式选择寄存器1


             ADC_POWER_ON_SPEED_CHANNEL_0        EQU        11100000B          ;P1.0作为A/D输入


             ADC_POWER_ON_SPEED_CHANNEL_1        EQU        11100001B          ;P1.1作为A/D输入


             ADC_POWER_ON_SPEED_CHANNEL_2        EQU        11100010B          ;P1.2作为A/D输入


             ADC_POWER_ON_SPEED_CHANNEL_3        EQU        11100011B          ;P1.3作为A/D输入


             ADC_POWER_ON_SPEED_CHANNEL_4        EQU        11100100B          ;P1.4作为A/D输入


             ADC_POWER_ON_SPEED_CHANNEL_5        EQU        11100101B          ;P1.5作为A/D输入


             ADC_POWER_ON_SPEED_CHANNEL_6        EQU        11100110B          ;P1.6作为A/D输入


             ADC_POWER_ON_SPEED_CHANNEL_7        EQU        11100110B          ;P1.7作为A/D输入


        ;定义变量


            ADC_CHANNEL_0RESULT           EQU 30H            ;0通道A/D转换结果


            ADC_CHANNEL_1RESULT           EQU 31H            ;1通道A/D转换结果


            ADC_CHANNEL_2RESULT           EQU 32H            ;2通道A/D转换结果


            ADC_CHANNEL_3RESULT           EQU 33H            ;3通道A/D转换结果


            ADC_CHANNEL_4RESULT           EQU 34H            ;4通道A/D转换结果


            ADC_CHANNEL_5RESULT           EQU 35H            ;5通道A/D转换结果


            ADC_CHANNEL_6RESULT           EQU 36H            ;6通道A/D转换结果


            ADC_CHANNEL_7RESULT           EQU 37H            ;7通道A/D转换结果


         ORG         0000H


         LJMP         MAIN


         ORG         0050H


MAIN:


         MOV         SP,#40H


         ACALL         ADC_POWER_ON         //;开ADC电源,第一次使用时要打开内部模拟电源


                                                   ;开ADC电源,可适当加延时,1MS以内就足够了


         ACALL         SET_P12_OPEN_DRAIN         //;设置P1.2位开漏


         ACALL         SET_ADC_CHANNEL_2           //;设置P1.2作为A/D转换通道


         ACALL         GET_ADC_RESULT         //;测量电压并且取A/D转化结果


ADC_POWER_ON:


         PUSH         ACC


         ORL         ADC_CONTR,#80H         //;开A/D转换电源


         MOV         A,#20H


         ACALL         DELAY         ;开A/D转换电源后要加延时,1MS以内就足够了


         POP         ACC


         RET


 


;设置P1.2,设置A/D通道所在的I/O为开漏模式


SET_P12_OPEN_DRAIN:


         PUSH         ACC


         MOV         A,#00000100B


         ORL         P1M0,A


         ORL         P1M1,A


         POP         ACC


         RET


SET_ADC_CHANNEL_2:


         MOV         ADC_CONTR,#ADC_POWER_ON_SPEED_CHANNEL_2        //;选择P1.2作为A/D转换通道


         MOV         A,#01H        //;更换A/D转换通道后要适当延时,使输入电压稳定


                           ;以后如果不更换A/D转换通道的话,不需要加延时


         ACALL         DELAY        //;切换A/D转换通道,加延时时20US~200US就可以了,与输入电压源的内阻有关


         RET


GET_ADC_RESULT:


         PUSH         ACC


         MOV         ADC_DATA,#0


         ORL         ADC_CONTR,#00001000B        ;启动AD转换


WAIT_AD_FINISH:


         MOV         A,#00010000B        //;判断AD转换是否完成


         ANL         A,ADC_CONTR


         JZ          WAIT_AD_FINISH        //;AD转换尚未完成,继续等待


         ANL         ADC_CONTR,#11100111B


         MOV         A,ADC_DATA       //取10位AD转换数据寄存器的高八位显示到P2口


         CLR         C


         MOV         P2,A


         LJMP         GET_ADC_RESULT       //不停的进行重复的AD采集


DELAY:


         PUSH         02


         PUSH         03


         PUSH         04


         MOV         R4,A


DELAY_LOOP0:


         MOV         R3,#50


DELAY_LOOP:


         DJNZ         R3,DELAY_LOOP


         DJNZ         R4,DELAY_LOOP0


         POP         04


         POP         03


         POP         02


         RET


         END

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
vivi_764430446 2009-04-28 16:17
石油测井耐温元器件
 ...
vivi_764430446 2009-04-28 16:15
供应世界各国知名品牌军工级IC
OP42AZ/883C ADI 500 6OP42AZ/883C AD 32 0612+OP42AZ/883C AD 24 0612+OP42AZ/883C AD 58 525OP42AZ/883C ...
vivi_764430446 2009-04-28 16:12
AD芯片描述
AD586JN 精密 5V电压基准源(民用级)DIPAD586JQ 精密 5V电压基准源(民用级)DIPAD586KN 精密 5V电压基准源(民用级)DIPAD586KQ 精密 5V电压基准源(民用级...
vivi_764430446 2009-04-28 16:09
军工级ATMEL 芯片资料简介
FPGAs设备描述AT40KALFPGA with FreeRAM. AT40KAL FPGA with FreeRAM (Fast Carry) with Dynamic Reconfigurati...
vivi_764430446 2009-04-28 16:06
电压基准源TL431 典型应用电路
电压基准源TL431 典型应用电路TL431精密可调基准电源有如下特点:稳压值从2.5~36V连续可调;参考电压原误差+-1.0%,低动态输出电阻,典型值为0.22欧姆输出电流1.0~100毫安;全温...
vivi_764430446 2009-04-28 16:04
关于加长usb通信线的问题
刚买的一个usb扩展口四个的。线短了点,想加长一下,真好手头一个没用的数据线就加长了,可就是无法识别,不能通信,在网上找了找原来原因是:1.线太长了.供电不足.2.加长线和U盘那边的接口松了3.线可能...
我要评论
0
0
广告