




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《微机实验》报告LED灯控制器指导教师:专业班级:姓名:学号:联系方式:任务规定实验目的:加深对定期/计数器、中断、IO端口的理解,掌握定期/计数器、中断的应用编程技术及中断程序的调试方法。实验内容:运用C8051F310单片机设计一个LED灯控制器重要功能和技术指标规定:1.LED灯外接于P0.0端。2.LED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各连续10s。3.在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。4.运用单片机内部定期器定期,规定采用中断方式。提高规定:使用按键(KINT)控制LED灯闪烁模式的切换。设计思绪C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz,输入时钟信号为48个机器周期,所以T1定期器采用定期方式1,单次定期最长可以达成的时间为1.027s,可以满足0.5Hz是的定期规定。基础部分:给TMOD赋值10H,即选用T1定期器采用定期方式1,三种频率相应的半周期时间为0.25s、0.5s、1s。计算得需给TH1和TL1为C1H、B1H;83H、63H;06H、C6H。要使闪烁连续10s,三种模式需要各循环40、20、10次。用LOOP3:MOVC,PSW.5;PSW.5为标志位,进定期器中断后置一JNCLOOP3代替踏步程序等待中断,以便中断完后回到主程序继续向下执行。为了减少代码长度,可以采用循环结构,循环主题中,将R1、R2分别赋给TH1、TL1,R7为循环次数(用DJNZ语句实现);定期中断里,重新给TH1、TL1赋值时同理。这样,循环时只要把定期时间和循环次数赋给R1、R2、R7即可,达成减少代码长度的效果。蜂鸣器也采用T1定期方式1,定期一秒。提高部分:采用外部中断0,下降沿触发。外部中断程序里置标志位PSW.1和R0,PSW.5用于判断执行完一种模式后,是否跳出循环结束。R0用于判断执行何种模式,每按一次后RO加一,第四次时就将R0和PSW.5清零,这样程序就又回到了基础部分的循序执行。由于中断程序执行完后,会回到本来程序中断的地方,继续向下执行而给程序运营带来诸多不便。所以,查看了RETI语句的实现形式:将栈顶压入PCH,POP后再将栈顶压入PCL,运用这个定义,只要将需要返回的地址压入PCH和PCL就能返回到指定地址。资源分派P0.0:为LED灯控制端口,高电平触发。P3.1:为蜂鸣器控制端口,高电平触发。P0.1:为KINT键控制端口,下降沿触发。R1、R2:用于存放计时器计时数据,R1赋给TH1、R2赋给TL1。R7:存放三种模式的循环次数。R0:在外部中断程序中赋值,用于判断采用何种模式。PSW.1:为标志位,用于等待定期器中断,中断执行完清零,并在中断处向下继续执行程序。PSW.5:为标志位,用于判断执行一种中断还是三种,在外部中断程序中改变。流程图1.主程序流程图(含提高部分):2.外部中断流程图3.定期器中断流程图3.定期器中断流程图源代码(含文献头说明、资源使用说明、语句行注释);*****************************************************************;Filename:LED灯闪烁.asm;Decription:LEDLED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各连续10s。;在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。按一次按钮,LED以;2Hz频率闪动;按第二次以1Hz频率闪动;按第二次以0.5Hz频率闪动;; ﻩﻩ第四次时又顺序执行三种模式(可以在任何时候按按钮,不必等上一模;式闪烁完);Designedby:gxy;Date:ﻩﻩ2023.10.31;*****************************************************************$include(C8051F310.inc)LEDBITP0.0;LED灯控制端口BEEPBITP3.1;蜂鸣器控制端口KINTBITP0.1;KINT按钮端口ORG0000Hﻩﻩﻩ;复位入口LJMPMAINORG0003H ﻩﻩ;外部中断0入口LJMPT_KINTORG001BH ﻩ ;定期器1入口LJMPTIME1MAIN:LCALLInit_Device;初始化配置MOVR0,#00HCLRLED;关led灯ﻩCLRBEEPﻩCLRPSW.1ﻩ ﻩ;标志位1清零 CLRPSW.5 ;标志位2清零 SETBEAﻩﻩ ;允许总中断ﻩSETBEX0 ﻩ;外部中断0允许ﻩSETBIT0 ;下降沿延触发ﻩMOVTMOD,#10H ;置T1为定期方式1 SETBET1ﻩﻩﻩ;定期器T1允许中断;*****************************************************************;外部中断返回处,选择模式;*****************************************************************CHOO:CJNER0,#02H,LOOP ;选择模式LJMPCASE2;R0等于02H,跳转到模式2LOOP:JCCASE1;R0小于02H,跳转到模式1 LJMPCASE3;R0大于02H,跳转到模式3;*****************************************************************;模式1,2Hz闪烁10s;*****************************************************************CASE1:MOVR1,#0C1HMOVR2,#0B1HﻩMOVR7,#28HﻩLJMPSTART;*****************************************************************;模式2,1Hz闪烁10s;*****************************************************************CASE2:MOVR1,#83HMOVR2,#63HﻩMOVR7,#14H LJMPSTART;*****************************************************************;模式3,0.5Hz闪烁10s;*****************************************************************CASE3:MOVR1,#06HMOVR2,#0C6H MOVR7,#0AHﻩLJMPSTART;*****************************************************************;闪烁控制程序;*****************************************************************START:LCALLVOICE;蜂鸣1sMOVTH1,R1 MOVTL1,R2ﻩMOVA,R7BACK:SETBTR1;开定期LOOP1:MOVC,PSW.5;等待中断,中断会置一标志位PSW.5JNCLOOP1;中断结束,继续向下运营 CLRPSW.5;清零标志位 DJNZR7,BACK;循环,使闪烁达成10s MOVC,PSW.1ﻩJCTHERE;PSW.1为1则只执行一种模式跳转到THERE等待外;部中断 CJNEA,#14H,LOOP2;顺序执行时,判断下一模式ﻩLJMPCASE3;A=14H则跳转到模式3LOOP2:JCTHEREﻩLJMPCASE2;A<14H则跳转到模式2THERE:LCALLVOICE;蜂鸣1sSJMP$;踏步,等待外部中断;*****************************************************************;蜂鸣器响1s;*****************************************************************VOICE:SETBBEEPﻩﻩ ;开蜂鸣MOVTH1,#06H MOVTL1,#0C6H CLRPSW.5SETBTR1;开定期器1LOOP3:MOVC,PSW.5;等待中断JNCLOOP3ﻩCLRBEEPﻩ ﻩ;关蜂鸣 RET;*****************************************************************;外部中断0;*****************************************************************T_KINT:SETBPSW.1;标志位1置一,用于判断是否顺序执行三种模式INCR0;R0加一,用于判断何种模式ﻩCJNER0,#04H,K_RET CLRPSW.1;R0到04H时清零标志位和R0ﻩMOVR0,#00HK_RET:CLRTR1;关定期器1ﻩPOPSPﻩPOPSP;出栈两次 MOVDPTR,#0036H;0036H为选择处地址 PUSHDPL;DPL压入栈顶 PUSHDPH;DPH压入栈顶RETI;返回到知道位置;*****************************************************************;定期器1中断;*****************************************************************TIME1:MOVTH1,R1MOVTL1,R2;重新置数ﻩSETBPSW.5;标志位置一ﻩCLRTR1;关定期 CPLLED;LED取反 RETI;*****************************************************************;初始化配置;*****************************************************************PCA_Init:;关闭看门狗anlPCA0MD,#0BFhmovPCA0MD,#000hretTimer_Init:;定期器1初始化配置movTMOD,#010hmovCKCON,#002hretPort_IO_Init:;端口初始化配置movXBR1,#040hretInterrupts_Init:;中断初始化配置movIE,#009hretInit_Device:lcallPCA_InitlcallTimer_InitlcallPort_IO_InitlcallInterrupts_InitretEND程序测试方法与结果、软件性能分析1、软件调试总体界面:2、定期器1测试软件调试时运用标志位用LOOP1:MOVC,PSW.5JNCLOOP1语句,可以在中断返回后,在中断处继续向下执行代码硬件调试时,可以顺序以2Hz,1Hz和0.5Hz三种不同频率闪动,各连续10s,并且蜂鸣器鸣叫1s正常3、定期循环代码测试:例如执行模式1定期0.25s,要循环40次才干跳出一次循环后R7为27H开始时,R7为28H一次循环后R7为27H跳出循环时,R7为0所以,定期循环程序正常4、外部中断测试如图,软件调试时,进入中断程序执行到RETI后,DPTR被赋为0036H,pc在00ACH处再执行一步Pc在0036H处,返回到了指定位置。所以,这说明不管程序运营到了哪里,只要按下KINT键,就会返回到指定位置,选择下一种模式运营。ProgramSize:data=8.0xdata=0code=219代码运用合理空行和注释,不仅在视觉上美化了,并且让各个子段程序的功能一目了然,方便调试和检错硬件调试时,在C8051F310单片机开发板上跑代码:不按KINT键时,LED灯以2Hz,1Hz和0.5Hz三种不同频率闪动,各连续10s,在开始、结束和切换模式时,蜂
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年计算机基础考试的成果分享试题及答案
- 山村老屋测试题及答案解析
- 如何评估药理学考试自己的水平及试题答案
- 汽车美容师沙龙活动组织试题及答案
- 2024年公务员考试各科知识框架试题及答案
- 宠物饮食对健康的影响因素试题及答案
- 美容师行业的多样性与挑战及试题及答案
- 公务员省考时间安排与调整研究试题及答案
- 心内科介入术前术后护理
- 环境因素对药物作用的影响试题及答案
- GB/T 32124-2024磷石膏的处理处置规范
- DB32∕T 3698-2019 建筑电气防火设计规程
- 2022年大学生就业指导综合测试卷及答案(题库)
- Mtqnqk吉祥时轮金刚圆满次第六支瑜伽修习次第11
- 2024年甘肃定西中考数学试卷试题真题及答案详解(精校打印)
- 砌石工程承包合同
- 穿越铁路顶管施工方案
- 2024-2029年中国可再分散乳胶粉(RDP)行业市场现状供需分析及市场深度研究发展前景及规划战略投资分析研究报告
- 中医药文化进校园模式研究
- 小学科学湘科版六年级下册全册同步练习含答案
- T-CPQS C011-2023 鉴赏收藏用潮流玩偶及类似用途产品挥发性有机物(VOC)安全限量及测试方法
评论
0/150
提交评论