当前位置:首页 > 单片机 > 单片机
[导读] ad574a程序:sbit ad_status = P3^3;uchar xdata ad_convert _at_ 0x6000; //开始转换uchar xdata ad_read_hi _at_ 0x6002; //读取高字节uchar xdata ad_read_lo _at_ 0x6003; //读取低字节uint ad_

ad574a程序:

sbit ad_status = P3^3;

uchar xdata ad_convert _at_ 0x6000; //开始转换

uchar xdata ad_read_hi _at_ 0x6002; //读取高字节

uchar xdata ad_read_lo _at_ 0x6003; //读取低字节


uint ad_1674 (void)

{

union adc

{

uint adCC;

uchar ad[2];

};

union adc add;

ad_convert=0xff;

while(ad_status);

add.ad[0]=ad_read_hi;

add.ad[1] =ad_read_lo;

add.adcc=add.adcc>>4;

return add.adcc;

}ORG 0000H

AJMP MAIN ;主程序

ORG 0013H

LJMP XAD ;中断1A/D采样子程序

;*********************************************

;* 初始化 ad574a程序 *

;*********************************************

ORG 0030H

MAIN: MOV SP,#60H ;设置堆栈

;SETB EA

clr ie1

SETB IT1

START: LCALL MNLCJ

;*****************************************

;* A/D采样子程序 初始化 *

;*****************************************

AD1: PUSH DPH

PUSH DPL

PUSH ACC

MOV DPTR,#0C000H;打开 0 通道

MOV A,#08H

MOVX @DPTR,A

MOV DPTR,#9000H ;启动A/D转换

MOVX @DPTR,A

SETB EX1

POP ACC

POP DPL

POP DPH

RET

;*****************************

;* A/D 574的中断子程序 *

;*****************************

XAD: PUSH DPH

PUSH DPL

PUSH ACC

MOV DPTR,#9002H;读入高8位结果放入50H

MOVX A,@DPTR

MOV 50H,A

INC DPTR

MOVX A,@DPTR ;读入低4 位结果放入51H

MOV 51H,A

CLR EX1

POP ACC

POP DPL

POP DPH

RETI

;*********************************************

;模拟量采集 *

;*********************************************

MNLCJ: MOV R0,#40H

LCALL AD1 ;第一端口模拟量采集

ajmp $

; MOV A,50H

; MOV @R0,A

;INC R0

;MOV A,51H

;MOV @R0,A

END

NOP

NOP

LJMP main


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭