问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

能给个STC单片机内部ad转换的程序吗?万谢。。

发布网友 发布时间:2023-06-21 14:13

我来回答

3个回答

热心网友 时间:2023-12-18 00:20

ORG 0000H
AJMP START1
ORG 0040H
START1:
MOV SP,#80H
MOV 0E1H,#00110100B ;启动看门狗
ACALL ADC_Power_On ;开ADC电源, 第一次使用时要打开内部模拟电源
;开ADC电源, 可适当加延时,1mS以内就足够了
ACALL Set_P17_ASF ;设置 P1.7 为模拟功能口
ACALL Set_ADC_Channel_7 ;设置 P1.7 作为A/D转换通道
MOV TL0,#0B0H
MOV TH0,#3CH
MOV TMOD,#21H ;置计数器模式
MOV IE,#8AH ;;EA,ET0,ET1
SETB TR0 ;启动定时器
START2:
NOP
NOP
ACALL Get_AD_Result
MOV 30H, ADC_Channel_7_Result
ACALL DISP ;调入其他程序,或AD取值在中断中
;------------------------------
ADC_CONTR EQU 0BCH ;A/D转换寄存器
ADC_RES EQU 0BDH ;8位A/D转换结果寄存器
P1ASF EQU 9DH ;P1口中的相应位作为模拟功能使用时的控制寄存器,如做A/D用,相应位要置1
ADC_Power_On_Speed_Channel_7 EQU 10100111 ;P1.7作为A/D输入
ADC_Channel_7_Result EQU 32H ;7通道A/D转换结果(32H,31H)
;数据在A中,地址按8951芯片 10H
BYTE_ADDR_HIGH EQU 00H ;字节地址高位
BYTE_ADDR_LOW EQU 00H
SECTOR_ADDR_HIGH EQU 00H ;扇区地址高位
SECTOR_ADDR_LOW EQU 00H
IAP_DATA EQU 0C2H
IAP_ADDRH EQU 0C3H
IAP_ADDRL EQU 0C4H
IAP_CMD EQU 0C5H
IAP_TRIG EQU 0C6H
IAP_CONTR EQU 0C7H
;定义ISP/IAP命令及等待时间
ISP_IAP_BYTE_READ EQU 1 ;字节读
ISP_IAP_BYTE_PROGRAM EQU 2 ;字节写
ISP_IAP_SECTOR_ERASE EQU 3 ;扇区擦除
WAIT_TIME EQU 3 ;等待时间
;--------------------------------------------------------------
ADC_Power_On:
PUSH ACC
ORL ADC_CONTR, #80H ;开A/D转换电源
;MOV A, #20H
ACALL Delay ;开A/D转换电源后要加延时,1mS以内就足够了
POP ACC
RET
;-------------------------------------------------------------
;设置P1.7为模拟功能
Set_P17_ASF:
PUSH ACC
MOV A, #10000000B
ORL P1ASF, A
POP ACC
RET
;-------------------------------------------------------------
;设置 P1.7 为普通IO
Set_P17_Normal_IO:
PUSH ACC
MOV A, #01111111B
ANL P1ASF, A
POP ACC
RET
;-------------------------------------------------------------
Set_ADC_Channel_7:
MOV ADC_CONTR, #ADC_Power_On_Speed_Channel_7
;选择P1.7作为A/D转换通道
;MOV A, #05H ;更换 A/D 转换通道后要适当延时, 使输入电压稳定
;以后如果不更换 A/D 转换通道的话, 不需要加延时
ACALL Delay ;切换 A/D 转换通道,加延时20uS~200uS就可以了,与输入电压源的内阻有关
;如果输入电压信号源的内阻在10K以下,可不加延时
RET
;-------------------------------------------------------------

Get_AD_Result:
PUSH ACC ;入栈保护
MOV ADC_RES, #0
ORL ADC_CONTR, #00001000B ;启动 AD 转换
NOP ;在对ADC_CONTR寄存器进行写操作后,要加4个空操作延时,才能够正确读到ADC_CONTR的值
NOP
NOP
NOP
Wait_AD_Finishe:
MOV A, #00010000B ;判断 AD 转换是否完成
ANL A, ADC_CONTR
JZ Wait_AD_Finishe ;AD 转换尚未完成, 继续等待
ANL ADC_CONTR, #11100111B ;清0 ADC_FLAG, ADC_START 位, 停止A/D转换
MOV A, ADC_RES
MOV ADC_Channel_7_Result, A ;保存 AD 转换结果
POP ACC
RET
;---------------------------------------------------------------
Delay:
PUSH 02 ;将寄存器组0 的 R2 入栈
PUSH 03 ;将寄存器组0 的 R3 入栈

MOV R3, #02 ;2 CLOCK ---------------------+
Delay_Loop1: ;
MOV R2, #249 ;2 CLOCK ------+
Delay_Loop: ; | 1002 CLOCK
DJNZ R2, Delay_Loop ;4 CLOCK |
DJNZ R3, Delay_Loop1 ;4 CLOCK ------+
POP 03
POP 02
RET

;-------------------------------------------------------

END

热心网友 时间:2023-12-18 00:20

#include <intrins.h>
sfr ADC_CONTR= 0XBC;
sfr P1ASF= 0X9D;
sfr ADC_RES= 0XBD;
sfr ADC_RESL= 0XBE;
#define AD_SPEED 0x60

void init_adc()
{
ADC_CONTR = ADC_CONTR|0x80; //打开adc电源
P1ASF = 0X01; //设置P1.7为模拟功能
}

void adc_delay(unsigned char delay_time) // 延时函数
{
unsigned int n;
while(delay_time--)
{
n = 6000;
while(--n);
}
}
unsigned int get_AD_result(unsigned char channel)
{
unsigned char AD_finished=0;
unsigned int h_val;
unsigned int l_val;
ADC_RES = 0;
ADC_RESL = 0;

channel &= 0x07;
ADC_CONTR = AD_SPEED;
_nop_();
ADC_CONTR |= channel;
_nop_();
ADC_CONTR |= 0x80;
adc_delay(1);
ADC_CONTR |= 0x08;
AD_finished = 0;
while ( AD_finished ==0 )
{
AD_finished = (ADC_CONTR & 0x10);
}
ADC_CONTR &= 0xE7;
h_val = ADC_RES;
h_val = h_val<<2;
l_val = ADC_RESL & 0X03;
h_val = h_val | l_val;
return (h_val);
}

热心网友 时间:2023-12-18 00:20

单片机型号呢
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我家300多k的网速为什么玩cf总是很迟钝,连切枪都很慢 CF切换枪的速度很慢 ...东西需要输入apple ID密码 我不知道怎么办?更新微信需要appleID_百... ...一遍id苹果手机的每次更新软件都需要输入id和密码请问怎么解决_百度... ...ID 我不知道密码是什么,也不懂怎么申请,想下个软件都下不了... 微信直播王者荣耀有收益吗 王者荣耀新手主播能挣多少 华为是如何进入手机市场的? ...用的那种安在船边上承鱼竿的那个座子中文叫什么?就是下图中的那个... 放在哪里不动钓鱼的叫什么? 樱桃的描写优美句子 关于苹果24期免息真的不要利息吗?的信息 女儿茶的功效与作用,女儿茶的功效与作用是什么 男生怎么去除脚臭和鞋臭?怎样去除脚臭和鞋臭 原神最丑的男up角色是谁 男生脚臭用什么 原神夜兰有狐臭吗 原神荧的脚臭不臭 神里绫华的脚臭吗 把酒精倒在冰上,液体倒出来为什么也会变成火? 外甥过生日写作文 舅父给病世的外甥!送什么 外甥病了,舅舅怎么安慰 外甥的宝宝生病了?舅爹去看他,该买东西吗? 生姜最佳种植时间是什么时候?清明还是谷雨后哇,几年没种忘记了 袁紫衣为什么出家了? 关键词黄芪环境条件生长特性 大红袍的原产地在哪里? 枸杞是一种滋补养生的食物,想要实现高产,种植过程中要注意些什么?_百 ... 枸杞怎么施肥好,施肥技巧,高产施肥技术 求大神帮忙编写单片机STC12C5620AD,ADC采集处理和PWM子程序,或类似芯片... stc12c5a60s2单片机采集电流方法和采集电压的方法一样吗??只有一个有... 小榕树种在阴面可以吗 榕树可以放在阴面室内吗 人参榕树喜阴还是喜阳? 爱国主义电视剧《功勋》观后感精选范文6篇 小猫氨基末端脑钠肽前体检测偏高 请问我该用生黄芪还是炙黄芪? 关于桂皮你知道多少? 家里面的东西总是丢是怎么回事啊? 山东省玛格全屋定制的周期 全屋定制 比佐迪全屋定制工期多长时间 长羽蟋蟀? 全屋定制计费方式全屋定制有什么好处和坏处 京东上的苹果13是正品吗 于和伟在闯关东扮演夏掌柜吗 各位请你们帮忙给我儿子起个名字 我姓 贺起3个字的 小弟再这里先谢谢大... 百家姓起名:梁姓宝宝好听名字大全 高大上的科技公司起名大全