下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE5第10章STC15F2K60S2单片机的A/D转换例题例10.l编程实现利用STC15F2K60S2单片机ADC通道1采集外部模拟电压信号,8位精度,采用查询方式循环进行转换,并将转换结果保存于30H单元中,并送P2口LED灯显示(低电平驱动)。假设时钟频率为18.432MHz。解:取8位精度时.可设置ADRJ=0.直接使用转换结果寄存器ADC_RES的值。选择通道1,则(CHS2~CHS0)=001B。按照ADC的编程要点进行初始化后,直接判断ADC_FLAG标志是否为l?若为l,则读出ADC_RES寄存器的值;若为0,则继续查询。汇编语语言参考程序如下:$INCLUDE(STC15F2K60S2.INC);包含STC15F2K60S2单片机寄存器定义文件,若无现成的STC15F2K60S2.INC文件,;则可以用“EQU”和“DATA”直接对A/D转换用到的新增特殊功能寄存器进行定义ADC_DATAEQU30H;定义AD转换结果保存单元ORG 0000HLJMP MAINORG 0000HMAIN:MOVSP,#70H;设置堆栈MOVP1ASF,#02H;设置Pl.1为模拟量输入功能MOVADC_CONTR,#81H;打开A/D转换电源,设置输入通道MOVA,#20HLCALLDELAY;打开A/D转换电源后,延时1ms即可LOOP:MOVADC_CONTR,#10001001B;启动A/D转换NOP;适当延时,确保设置有效NOPNOPNOPWAIT_AD:MOVA,ADC_CONTRJNBACC.4,WAIT_AD;判断A/D转换是否完成MOVADC_CONTR,#81H;将ADC_FLAG清零MOVA,ADC_RES;读取A/D转换结果MOVADC_DATA,A;保存A/D转换结果CPLAMOVP2,A;送P2口LED灯显示LJMPLOOP;循环检测DELAΥ:PUSH02;将寄存器组0的R2、R3、R4入栈PUSH03PUSH04MOVR4,A;取最外循环的循环次数DELAY_LOOP0:MOVR3,#200DELAY_LOOP1:MOVR2,#249DELAY_LOOP:DJNZR2,DELAY_LOOPDJNZR3,DELAY_LOOP1DJNZR4,DELAY_LOOP0POP04;恢复现场POP03POP02RETENDC51语言参考程序如下:#include"STC15F2K60S2.h"//包含STC15F2K60S2单片机寄存器定义文件unsignedchardataadc_data_at_0x30;//定义(保存A/D转换结果)绝对地址变量voidmain(void){unsignedlongi;unsignedcharstatus;P1ASF=0x02;//设置Pl..1为模拟量输入功能ADC_CONTR=0x81;//打开A/D转换电源,设置输入通道for(i=0;i<10000;i++);while(l){ADC_CONTR=0x89;//启动A/D转换_NOP_();_NOP_();_NOP_();_NOP_();status=0;while(status==0)//等待A/D转换结束{status=ADC_CONTR&0x10;}ADC_CONTR=0x81;//清A/D转换结束标志位adc_data=ADC_RES;//保存A/D转换结果P2=~ADC_RES;//送P2口LED灯显示 }}例10.2编程实现利用STC15F2K60S2单片机ADC通道1采集外部模拟电压信号,10位精度,·采用中断方式进行转换,并将转换结果保存于30H和31H单元中,并送P3和P2口LED灯显示(低电平驱动),P3口LED灯显示最高2位,P2口LED灯显示低8位。设时钟频率为18.432MHz。解:设置ADRJ=1,转换结束后,ADC_RES的低2位为转换结果的最高2位,ADC_RESL为转换结果的低8位。汇编语言参考程序如下:$INCLUDE(STC152K60S2.INC)ADC_DATAHEQU31H;定义A/D转换结果高2位存储变量ADC_DATALEQU30H;定义A/D转换结果低8位存储变量ORG 0000HLJMP MAINORG 002BHLJMP ADC_ISR;ADC中断矢量入口ORG 0050HMAIN:MOVSP,#70H;设置堆栈MOVP1ASF,#02H;设置Pl.1为模拟量输入功能MOVADC_CONTR,#81H;打开A/D转换电源,设置输入通道MOVA,#20HLCALLDELAY;开A/D转换电源后要加适当延时,1ms即可ORLCLK_DIV,#20H;设置A/D转换结果存储格式(ADR为1)SETBEADC;开放ADC中断SETBEA;开放CPU总中断MOVADC_CONTR,#10001001B;启动A/D转换SJMP$;循环等待中断ADC_ISR:;ADC中断服务程序入口MOVADC_CONTR,#81H;将ADC_FLAG清零MOVA,ADC_RES;读取A/D转换结果高2位ANLA,#03H;屏蔽高6位MOVADC_DATAH,A;保存A/D转换结果高2位CPLAMOVP3,A;高2位送P3口LED灯显示MOVA,ADC_RESL;读取A/D转换结果低8位MOVADC_DATAL,A;保存A/D转换结果的低8位CPLAMOVP3,A;低8位送P2口LED灯显示MOVADC_CONTR,#89H;重新启动A/D转换RETIDELAΥ:PUSH02;将寄存器组0的R2、R3、R4入栈PUSH03PUSH04MOVR4,A;取最外循环的循环次数DELAY_LOOP0:MOVR3,#200DELAY_LOOP1:MOVR2,#249DELAY_LOOP:DJNZR2,DELAY_LOOPDJNZR3,DELAY_LOOP1DJNZR4,DELAY_LOOP0POP04;恢复现场POP03POP02RETENDC51语言参考程序如下:#include"STC152K60S2.h"//包含STC15F2K60S2单片机寄存器定义文件unsignedchardataadc_datah_at_0x31;//定义(保存A/D转换结果)绝对地址变量unsignedchardataadc_datal_at_0x30;//定义(保存A/D转换结果)绝对地址变量voidmain(void){unsignedlongi;unsignedcharstatus;P1ASF=0x02;//设置Pl..1为模拟量输入功能ADC_CONTR=0x81;//打开A/D转换电源,设置输入通道for(i=0;i<10000;i++);//适当延时CLK_DIV|=0x20;//(ADRJ)=1,设置A/D转换结果的存储格式ADC_CONTR=0x89;//启动A/D转换EADC=1;EA=1;while(1);}/*ADC中断服务子函数*/voidADC_ISR(void)interrupt5{ADC_CONTR=0x81;//将ADC_FLAG清零adc_datah=ADC_RES&0x03;//保存A/D转换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 性能测试环境资源配置规范
- 感恩生命珍惜时光-小学主题班会课件
- 小小音乐家:音符与情感的交响曲小学主题班会课件
- 生物第五节 两栖动物和爬行动物教案
- 家庭紧急物资储备清单预案
- 活动场地安全事故紧急处理活动场地管理方预案
- 企业内训师培训内容与方法研究
- 2026年乡村规划实施评估办法试题
- 2026年移动端数据安全管理与保护题库
- 第六单元夏日情怀《夏夜》教学设计 人教版初中音乐八年级下册
- TSMA0011-2020电力红外热像仪性能评估技术规范
- 雨课堂学堂在线学堂云《科学研究方法与论文写作(复大)》单元测试考核答案
- 网商贷合同协议模板
- 2026年度安全培训计划及培训记录
- (2025年)新能源汽车技术测试题附答案
- 检验科标本采集运输课件
- 时空安全策略-洞察与解读
- 2025中国软件行业基准数据报告
- 基于UE5的《千里江山图》数字复刻与交互体验的设计与实现
- 2025年山东烹饪春考题目及答案
- 贯彻《中国式现代化》解读教案(2025-2026学年)
评论
0/150
提交评论