版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机实验报告LED灯控制器指导教师:专业班级:XX:学号:联系方式:一、任务要求实验目的:加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术及中断程序的调试方法。实验内容:利用C8051F310单片机设计一个LED灯控制器主要功能和技术指标要求:1.LED灯外接于P0.0端。2.LED灯分别按,1Hz和0.5Hz三种不同频率闪动,各持续10s。3.在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。4.利用单片机内部定时器定时,要求采用中断方式。提高要求:使用按键()控制LED灯闪烁模式的切换。二、设计思路C8051F310单片机片上晶振为24.5MHz,采用8分频后为3
2、.0625MHz号为48个机器周期,所以T1定时器采用定时方式11.027s,可以满足0.5Hz是的定时要求。基础部分:给TMOD赋值10H,即选用T1定时器采用定时方式1,三种频率对应的半周期时间为0.25s、0.5s、1s。计算得需给TH1和TL1为C1H、B1H;83H、63H;06H、C6H。要使闪烁持续10s,三种模式需要各循环40、10次。用LOOP3:MOVC,PSW.5;为标志位,进定时器中断后置一JNCLOOP3代替踏步程序等待中断,以便中断完后回到主程序继续向下执行。为了减少代码长度,可以采用循环结构,循环主题中,将R1、R2分别赋给TH1、,R7为循环次数(用语句实现);
3、定时中断里,重新给TH1、TL1赋值时同理。这样,循环时只要把定时时间和循环次数赋给R1、R2、R7即可,达到减少代码长度的效果。蜂鸣器也采用T1定时方式1,定时一秒。提高部分:采用外部中断0,下降沿触发。外部中断程序里置标志位PSW.1和R0,用于判断执行完一种模式后,是否跳出循环结束。R0用于判断执行何种模式,每按一次后RO加一,第四次时就将R0和清零,这样程序就又回到了基础部分的循序执行。因为中断程序执行完后,会回到原来程序中断的地方,继续向下执行而给程序运行带来诸多不便。所以,查看了RETI语句的实现形式:将栈顶压入PCH,POP后再将栈顶压入PCL,利用这个定义,只要将需要返回的地址
4、压入PCH和PCL就能返回到指定地址。三、资源分配P0.0:为灯控制端口,高电平触发。P3.1:为蜂鸣器控制端口,高电平触发。P0.1:为KINT键控制端口,下降沿触发。R1、R2:用于存放计时器计时数据,R1赋给TH1、R2赋给。R7:存放三种模式的循环次数。R0:在外部中断程序中赋值,用于判断采用何种模式。PSW.1:为标志位,用于等待定时器中断,中断执行完清零,并在中断处向下继续执行程序。PSW.5:为标志位,用于判断执行一种中断还是三种,在外部中断程序中改变。四、流程图1.主程序流程图(含提高部分):开始初始化允许外部中断0,下降沿触发允许定时器中断,定时方式1YR0=02HNYR00
5、2HNCASE3CASE1CASE2R106HR10C1HR183HR20C6HR20B1HR263HR70AHR728HR714H蜂鸣1sTH1R1TL1R2AR7开定时等待中断R7R7-1NR7=0YYPSW.1=0A=14HY跳转到case3NNNA14H跳转到case2蜂鸣1sY等待外部中断外部中断流程图3.定时器中断流程图KINT键按下定时器溢出触发中断PSW.1置1重新赋值TH1R1TL1R2R0R0+1标志位PSW.1置一NR0=04H关定时YPSW.1清零R0清零LED(P0.0)取反关定时器1返回主程序POP出栈两次DPTR0036HDPL先压入栈顶DPH再压入栈顶返回主程序
6、五、源代码(含文件头说明、资源使用说明、语句行注释);*;Filename:LED灯闪烁.asm;Decription:LEDLED灯分别按,1Hz和0.5Hz三种不同频率闪动,各持续10s。;在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。按一次按钮,以;2Hz频率闪动;按第二次以1Hz频率闪动;按第二次以0.5Hz频率闪动;;第四次时又顺序执行三种模式(可以在任何时候按按钮,不必等上一模;式闪烁完);Designedby:gxy;Date:2012.10.31;*$include(C8051F310.inc)LEDBITP0.0;LED灯控制端口BEEPBITP3.1;蜂鸣器控制端口KINT
7、BITP0.1;KINT按钮端口ORG0000H;复位入口LJMPMAINORG0003H;外部中断0入口LJMPT_KINTORG001BH;定时器1入口LJMPTIME1MAIN:LCALLInit_Device;初始化配置MOVR0,#00HCLRLED;关led灯CLRBEEPCLRPSW.1;标志位1清零CLRPSW.5;标志位2清零SETBEA;允许总中断SETBEX0;外部中断0允许SETBIT0;下降沿延触发MOVTMOD,#10H;置T1为定时方式1SETBET1;定时器T1允许中断;*;外部中断返回处,选择模式;*CHOO:CJNER0,#02H,LOOP;选择模式LJMP
8、CASE2;R0等于02H,跳转到模式2LOOP:JCCASE1;R0小于02H,跳转到模式1LJMPCASE3;R0大于02H,跳转到模式3;*;模式1,2Hz闪烁10s;*CASE1:MOVR1,#0C1HMOVR2,#0B1HMOVR7,#28HLJMPSTART;*;模式,1Hz闪烁10s;*CASE2:MOVR1,#83HMOVR2,#63HMOVR7,#14HLJMPSTART;*;模式,0.5Hz闪烁10s;*CASE3:MOVR1,#06HMOVR2,#0C6HMOVR7,#0AHLJMPSTART;*;闪烁控制程序;*START:LCALLVOICE;蜂鸣1sMOVTH1,R
9、1MOVTL1,R2MOVA,R7BACK:SETBTR1;开定时LOOP1:MOVC,PSW.5;等待中断,中断会置一标志位PSW.5JNCLOOP1;中断结束,继续向下运行CLRPSW.5;清零标志位DJNZR7,BACK;循环,使闪烁达到10sMOVC,PSW.1JCTHERE;PSW.1为1则只执行一种模式跳转到THERE等待外;部中断CJNEA,#14H,LOOP2;顺序执行时,判断下一模式LJMPCASE3;A=14H则跳转到模式3LOOP2:JCTHERELJMPCASE2;A14H则跳转到模式2THERE:LCALLVOICE;蜂鸣1sSJMP$;踏步,等待外部中断;*;蜂鸣器
10、响1s;*VOICE:SETBBEEP;开蜂鸣MOVTH1,#06HMOVTL1,#0C6HCLRPSW.5SETBTR1;开定时器1LOOP3:MOVC,PSW.5;等待中断JNCLOOP3CLRBEEP;关蜂鸣RET;*;外部中断0;*T_KINT:SETBPSW.1;标志位1置一,用于判断是否顺序执行三种模式INCR0;R0加一,用于判断何种模式CJNER0,#04H,K_RETCLRPSW.1;R0到04H时清零标志位和R0MOVR0,#00HK_RET:CLRTR1;关定时器1POPSPPOPSP;出栈两次MOVDPTR,#0036H;0036H为选择处地址PUSHDPL;DPL压入
11、栈顶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_D
12、evice:lcallPCA_InitlcallTimer_InitlcallPort_IO_InitlcallInterrupts_InitretEND六、程序测试方法与结果、软件性能分析1、软件调试总体界面:2、定时器1测试软件调试时利用标志位用LOOP1:MOVC,PSW.5JNCLOOP1语句,可以在中断返回后,在中断处继续向下执行代码硬件调试时,可以顺序以2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s,并且蜂鸣器鸣叫1s正常、定时循环代码测试:例如执行模式1定时0.25s,要循环40次才能跳出开始时,R7为28H一次循环后R7为27H跳出循环时,R7为0所以,定时循环程序正
13、常、外部中断测试如图,软件调试时,进入中断程序执行到RETI后,DPTR被赋为0036H,pc在00ACH处再执行一步Pc在0036H处,返回到了指定位置。所以,这说明不管程序运行到了哪里,只要按下KINT键,就会返回到指定位置,选择下一种模式运行。ProgramSize:data=8.0 xdata=0code=219代码利用合理空行和注释,不仅在视觉上美化了,而且让各个子段程序的功能一目了然,方便调试和检错硬件调试时,在C8051F310单片机开发板上跑代码:不按KINT键时,灯以2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s,在开始、结束和切换模式时,蜂鸣器都响1s,按下一次时
14、,LED灯以2Hz闪烁10s后结束;按下两次时,LED灯以1Hz闪烁10s后结束;按下三次时,LED灯以0.5Hz闪烁10s后结束;当按下第四次时,又切换回顺序执行三种模式,在上述过程,蜂鸣器君鸣叫正常。综上:此次程序,运行正常,很好的完成了要求的基础部分和提高部分七、思考题.若想实现3种闪耀方式的持续时间在5s-20sX围内可调,且每种方式的持续时间各不相同,应如何设计程序?答:三种闪烁方式利用定时器执行,定时时间为0.25s、0.5s、1s通过循环次数来控制持续时间,所以只要改变循环次数,就能改变持续时间(初始持续时间可设为10s)可以利用矩阵键盘来实现,通过键值扫描程序来判断按下了什么键,再通过键值处理来执行按键的功能可以设置-键、和输入键按下+键,寄存器如R5加一;按下-键,寄存器如R5减一再按输入键后,模式1循环次数加4*R5;模式1循环次数加2*R5;模式1循环次数加1*R5,再执行程序来达到改变持续时间的功能。八、实验小结通过本实验,我们一方面熟悉了C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手机购车协议书
- 苗木清收协议书
- 苹果达成协议书
- 认筹协议书模板
- 设备工期合同范本
- 设备运营协议书
- 设计劳动协议书
- 试管解冻协议书
- 手机制作合同范本
- 工业住宅合同范本
- 中西医结合糖尿病足分级治疗策略
- 垃圾焚烧发电厂安全事故
- 2024年城银清算服务有限责任公司招聘考试真题
- 云南中烟工业公司招聘考试真题2025
- 安全操作规程管理制度(完整版合同模板)
- 贾玲春晚搞笑公司年会小品《真假老师》台词剧本完整版
- 涉诈风险账户审查表
- 测绘资质分级标准规定(2014版)
- 家谱序言经典范文(12篇)
- GA/T 1556-2019道路交通执法人体血液采集技术规范
- 以此为主GS-操作手册(中文简体) 含精度检验表200807
评论
0/150
提交评论