2014华科光电第三次单片机实验报告-LED灯控制器.pdf

上传人:灯火****19 文档编号:144141990 上传时间:2020-09-06 格式:PDF 页数:10 大小:300.06KB
返回 下载 相关 举报
2014华科光电第三次单片机实验报告-LED灯控制器.pdf_第1页
第1页 / 共10页
2014华科光电第三次单片机实验报告-LED灯控制器.pdf_第2页
第2页 / 共10页
2014华科光电第三次单片机实验报告-LED灯控制器.pdf_第3页
第3页 / 共10页
2014华科光电第三次单片机实验报告-LED灯控制器.pdf_第4页
第4页 / 共10页
2014华科光电第三次单片机实验报告-LED灯控制器.pdf_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《2014华科光电第三次单片机实验报告-LED灯控制器.pdf》由会员分享,可在线阅读,更多相关《2014华科光电第三次单片机实验报告-LED灯控制器.pdf(10页珍藏版)》请在金锄头文库上搜索。

1、 LED 灯控制器 【实验目的】【实验目的】 加深对定时/计数器、中断、IOIO 端口的理解,掌握定时/计数器、中断的应用编程技术 及中断程序的调试方法。 【任务要求任务要求】 利用 C8051F310 单片机设计一个 LED 灯控制器,主要功能和技术指标要求如下: 1. LED 灯外接于 P0.0 端。 2. LED 灯分别按 2Hz,1Hz 和 0.2Hz 三种不同频率闪动,各持续 10s。 3. 在 LED 灯开始和停止闪烁时蜂鸣器分别鸣响 1 次。 4. 利用单片机内部定时器定时,要求采用中断方式。 【设计思路设计思路】 利用定时器 T0 分别实现 0.25s,0.5s 和 1s 的定

2、时,分别得到三种闪烁方式的半周期, 利用定时器 T0 的中断服务程序实现 LED 信号灯的亮灭转换并重新开始计时。三种定时时间 的定时器计数初值存于工作寄存器中, 赋计数初值时取出, 每结束一个闪烁方式后通过改变 相应寄存器内的值以改变半周期, 然后再赋值时取出。 利用另一工作寄存器的值来控制闪烁 次数,以使每种闪烁频率下总的闪烁时间均为 10s。 【资源分配】【资源分配】 工作寄存器 RO、 R1 用于寄存此闪烁方式下的定时器计数初值。 工作寄存器 R2 用于确定 闪烁次数。 【流程图】【流程图】 开始 定时器设定 中断允许设定 赋定时器计数初 值,存于寄存器 R0、R1 闪烁次数R2赋值

3、取定时器计数初值 蜂鸣器鸣响 LED灯点亮 开始计时 等待定时器T0中断 R2=00H? 停止计时 改变定时器计数初 值,存于寄存器 R0、R1 Y 蜂鸣器停止鸣响 LED灯亮灭改变 再次取此时闪烁状态 下定时器计数初值 DEC R2 R2重新赋值 N 【源代码源代码】 ;- ;- Generated Initialization File - ;- $include (C8051F310.inc) public Init_Device INIT SEGMENT CODE rseg INIT ORG 0000H LJMP MAIN ORG 000BH ;定时器 T0 中断入口 LJMP IT0

4、P ORG 1000H MAIN: LCALL Init_Device ;设备初始化 MOV SP, #40H ;置堆栈指针 MOV TMOD, #01H ;定时器 T0 为定时工作方式 1 SETB EA ;中断总允许 SETB ET0 ;定时器 T0 中断源允许 BEGIN1: MOV R0, #0C1H ;设定 2Hz 闪烁方式定时器 T0 计数初值 MOV R1, #0B1H MOV R2, #28H ;置 2Hz 闪烁方式闪烁次数 ACALL ASSIGN ;取定时器 T0 计数初值 SETB P3.1 ;蜂鸣器鸣响一次 SETB TR0 ;启动定时器 T0 CLR P0.0 ;LE

5、D 灯点亮 HERE1: CJNE R2, #00H, HERE1 ;等待中断 CLR TR0 ;2Hz 闪烁方式结束,关闭定时器,准备切换方式 BEGIN2: MOV R0, #83H ;设定 1Hz 闪烁方式定时器 T0 计数初值 MOV R1, #63H MOV R2, #14H ;置 1Hz 闪烁方式闪烁次数 ACALL ASSIGN ;取定时器 T0 计数初值 SETB P3.1 ;蜂鸣器鸣响一次 SETB TR0 ;启动定时器 T0 CLR P0.0 ;LED 灯点亮 HERE2: CJNE R2, #00H, HERE2 ;等待中断 CLR TR0 ;1Hz 闪烁方式结束,关闭定

6、时器,准备切换方式 BEGIN3: MOV R0, #06H ;设定 0.5Hz 闪烁方式定时器 T0 计数初值 MOV R1, #0C6H MOV R2, #0AH ;置 0.5Hz 闪烁方式闪烁次数 ACALL ASSIGN ;取定时器 T0 计数初值 SETB P3.1 ;蜂鸣器鸣响一次 SETB TR0 ;启动定时器 T0 CLR P0.0 ;LED 灯点亮 HERE3: CJNE R2, #00H, HERE3 ;等待中断 CLR TR0 ;0.5Hz 闪烁方式结束,关闭定时器 LJMP BEGIN1 ;重新开始下一轮的闪烁 ASSIGN: MOV A, R0 ;定时器计数初值赋值子

7、程序 MOV TH0, A MOV A, R1 MOV TL0, A RET ORG 1200H IT0P: DEC R2 ;定时器 T0 中断服务程序 MOV A, R0 ;计数初值重新赋值 MOV TH0, A MOV A, R1 MOV TL0, A CLR P3.1 ;蜂鸣器停止鸣响 CPL P0.0 ;LED 灯亮灭切换 RETI ; Peripheral specific initialization functions, ; Called from the Init_Device label PCA_Init: anl PCA0MD, #0BFh mov PCA0MD, #000

8、h ret Timer_Init: mov TMOD, #001h mov CKCON, #002h ret Port_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-

9、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, Digita

10、l ; 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, Digital mov XBR1, #

11、040h ret Interrupts_Init: mov IT01CF, #021h ret ; Initialization function for device, ; Call Init_Device from your main program Init_Device: lcall PCA_Init lcall Timer_Init lcall Port_IO_Init lcall Interrupts_Init ret end 【程序测试方法与结果、软件性能分析程序测试方法与结果、软件性能分析】 1 1、软件仿真结果、软件仿真结果 蜂鸣器蜂鸣器(P3.1P3.1) LEDLED 信号灯灯(信号灯灯(P0.0P0.0) 2 2、硬件调试结果、硬件调试结果 【思考题】【思考题】 若想实现 3 种闪耀方式的持续时间在 5s-20s 范围内可调,且每种方式的持续时间各不相 同,应如何设计程序? 答:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号