单片机实验报告——LED灯控制器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《微机实验》报告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.27s ,可以满足0.5Hz 是的定时要求。

基础部分:

给TMOD赋值10H,即选用T1 定时器采用定时方式1,三种频率对应的半周期时间为0.25s 、0.5s 、1s。计算得需给TH1和TL1 为C1H、B1H;83H、63H;06H、C6H。

要使闪烁持续10s,三种模式需要各循环40、20、10 次。

用LOOP3:MOV C,PSW.5 ;PSW.5为标志位,进定时器中断后置一

JNC LOOP3

代替踏步程序等待中断,以便中断完后回到主程序继续向下执行。

为了减少代码长度,可以采用循环结构,循环主题中,将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. 主程序流程图(含提高部分):

开始

初始化

允许外部中断0,下降沿触发

允许定时器1中断,定时方式1

Y

R0=02H

N

Y

R0>02H

N

CASE3 CASE1 CASE2

R1 06H R1 0C1H R1 83H

R2 0C6H R2 0B1H R2 63H

R7 0AH R7 28H R7 14H

蜂鸣1s

TH1 R1

TL1 R2

A R7

开定时

等待中断

R7 R7-1

N

R7=0

Y

Y

Y

PSW.1=0 A=14H

跳转到c ase3

N N

N A>14H

跳转到c ase2 蜂鸣1s

Y

等待外部中断

5.外部中断流程图 3.定时器中断流程图

KINT键按下定时器溢出触发中断

PSW.1置 1

重新赋值

T H1R1

TL1R2

R0R0+1

标志位

PSW.1置一N R0=04H

关定时Y

PSW.1清零

R0清零

LED(P0.0)取反关定时器1

返回主程序POP出栈两次

DPTR0036H

DPL先压入栈顶

DPH再压入栈顶

返回主程序

五、源代码(含文件头说明、资源使用说明、语句行注释)

;*****************************************************************

;Filename: LED 灯闪烁.asm

;Decription: LED LED 灯分别按2Hz,1Hz和0.5Hz 三种不同频率闪动,各持续10s。

; 在LED灯开始和停止闪烁时蜂鸣器分别鸣响 1 次。按一次按钮,LED以; 2Hz 频率闪动;按第二次以1Hz 频率闪动;按第二次以0.5Hz 频率闪动;

; 第四次时又顺序执行三种模式(可以在任何时候按按钮,不必等上一模

; 式闪烁完)

;Designed by: gxy

;Date: 2012.10.31

;*****************************************************************

$include (C8051F310.inc)

LED BIT P0.0 ;LED 灯控制端口

BEEP BIT P3.1 ; 蜂鸣器控制端口

KINT BIT P0.1 ;KINT 按钮端口

ORG 0000H ; 复位入口

LJMP MAIN

ORG 0003H ; 外部中断0 入口

LJMP T_KINT

ORG 001BH ; 定时器 1 入口

LJMP TIME1

MAIN: LCALL Init_Device ; 初始化配置

MOV R0,#00H

CLR LED ; 关led 灯

CLR BEEP

CLR PSW.1 ; 标志位 1 清零

CLR PSW.5 ; 标志位 2 清零

SETB EA ; 允许总中断

相关文档
最新文档