您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 2014华科光电第三次单片机实验报告-LED灯控制器
LED灯控制器【实验目的】加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术及中断程序的调试方法。【任务要求】利用C8051F310单片机设计一个LED灯控制器,主要功能和技术指标要求如下:1.LED灯外接于P0.0端。2.LED灯分别按2Hz,1Hz和0.2Hz三种不同频率闪动,各持续10s。3.在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。4.利用单片机内部定时器定时,要求采用中断方式。【设计思路】利用定时器T0分别实现0.25s,0.5s和1s的定时,分别得到三种闪烁方式的半周期,利用定时器T0的中断服务程序实现LED信号灯的亮灭转换并重新开始计时。三种定时时间的定时器计数初值存于工作寄存器中,赋计数初值时取出,每结束一个闪烁方式后通过改变相应寄存器内的值以改变半周期,然后再赋值时取出。利用另一工作寄存器的值来控制闪烁次数,以使每种闪烁频率下总的闪烁时间均为10s。【资源分配】工作寄存器RO、R1用于寄存此闪烁方式下的定时器计数初值。工作寄存器R2用于确定闪烁次数。【流程图】开始定时器设定中断允许设定赋定时器计数初值,存于寄存器R0、R1闪烁次数R2赋值取定时器计数初值蜂鸣器鸣响LED灯点亮开始计时等待定时器T0中断R2=00H?停止计时改变定时器计数初值,存于寄存器R0、R1Y蜂鸣器停止鸣响LED灯亮灭改变再次取此时闪烁状态下定时器计数初值DECR2R2重新赋值N【源代码】;------------------------------------;-GeneratedInitializationFile--;------------------------------------$include(C8051F310.inc)publicInit_DeviceINITSEGMENTCODErsegINITORG0000HLJMPMAINORG000BH;定时器T0中断入口LJMPIT0PORG1000HMAIN:LCALLInit_Device;设备初始化MOVSP,#40H;置堆栈指针MOVTMOD,#01H;定时器T0为定时工作方式1SETBEA;中断总允许SETBET0;定时器T0中断源允许BEGIN1:MOVR0,#0C1H;设定2Hz闪烁方式定时器T0计数初值MOVR1,#0B1HMOVR2,#28H;置2Hz闪烁方式闪烁次数ACALLASSIGN;取定时器T0计数初值SETBP3.1;蜂鸣器鸣响一次SETBTR0;启动定时器T0CLRP0.0;LED灯点亮HERE1:CJNER2,#00H,HERE1;等待中断CLRTR0;2Hz闪烁方式结束,关闭定时器,准备切换方式BEGIN2:MOVR0,#83H;设定1Hz闪烁方式定时器T0计数初值MOVR1,#63HMOVR2,#14H;置1Hz闪烁方式闪烁次数ACALLASSIGN;取定时器T0计数初值SETBP3.1;蜂鸣器鸣响一次SETBTR0;启动定时器T0CLRP0.0;LED灯点亮HERE2:CJNER2,#00H,HERE2;等待中断CLRTR0;1Hz闪烁方式结束,关闭定时器,准备切换方式BEGIN3:MOVR0,#06H;设定0.5Hz闪烁方式定时器T0计数初值MOVR1,#0C6HMOVR2,#0AH;置0.5Hz闪烁方式闪烁次数ACALLASSIGN;取定时器T0计数初值SETBP3.1;蜂鸣器鸣响一次SETBTR0;启动定时器T0CLRP0.0;LED灯点亮HERE3:CJNER2,#00H,HERE3;等待中断CLRTR0;0.5Hz闪烁方式结束,关闭定时器LJMPBEGIN1;重新开始下一轮的闪烁ASSIGN:MOVA,R0;定时器计数初值赋值子程序MOVTH0,AMOVA,R1MOVTL0,ARETORG1200HIT0P:DECR2;定时器T0中断服务程序MOVA,R0;计数初值重新赋值MOVTH0,AMOVA,R1MOVTL0,ACLRP3.1;蜂鸣器停止鸣响CPLP0.0;LED灯亮灭切换RETI;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:anlPCA0MD,#0BFhmovPCA0MD,#000hretTimer_Init:movTMOD,#001hmovCKCON,#002hretPort_IO_Init:;P0.0-Unassigned,Open-Drain,Digital;P0.1-Unassigned,Open-Drain,Digital;P0.2-Unassigned,Open-Drain,Digital;P0.3-Unassigned,Open-Drain,Digital;P0.4-Unassigned,Open-Drain,Digital;P0.5-Unassigned,Open-Drain,Digital;P0.6-Unassigned,Open-Drain,Digital;P0.7-Unassigned,Open-Drain,Digital;P1.0-Unassigned,Open-Drain,Digital;P1.1-Unassigned,Open-Drain,Digital;P1.2-Unassigned,Open-Drain,Digital;P1.3-Unassigned,Open-Drain,Digital;P1.4-Unassigned,Open-Drain,Digital;P1.5-Unassigned,Open-Drain,Digital;P1.6-Unassigned,Open-Drain,Digital;P1.7-Unassigned,Open-Drain,Digital;P2.0-Unassigned,Open-Drain,Digital;P2.1-Unassigned,Open-Drain,Digital;P2.2-Unassigned,Open-Drain,Digital;P2.3-Unassigned,Open-Drain,DigitalmovXBR1,#040hretInterrupts_Init:movIT01CF,#021hret;Initializationfunctionfordevice,;CallInit_DevicefromyourmainprogramInit_Device:lcallPCA_InitlcallTimer_InitlcallPort_IO_InitlcallInterrupts_Initretend【程序测试方法与结果、软件性能分析】1、软件仿真结果蜂鸣器(P3.1)LED信号灯灯(P0.0)2、硬件调试结果【思考题】●若想实现3种闪耀方式的持续时间在5s-20s范围内可调,且每种方式的持续时间各不相同,应如何设计程序?答:
本文标题:2014华科光电第三次单片机实验报告-LED灯控制器
链接地址:https://www.777doc.com/doc-4269966 .html