定时器实验报告

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

定时器实验报告

自动化1003 徐磊 201003120325 1.实验目的

1、掌握定时器的工作原理。

2、学习单片机定时器的应用设计和调试。

2.实验原理

系统8051中有三个16 位定时器/计数器:定时器0、定时器1 和定时器2。每一个包含两个8 位寄存器,THx和TLx(这里,x=0、1 或2)。所有这些操作既可配置为定时器或事件记数器。定时器功能,TLx 寄存器每12 个时钟周期或1个周期加1,通过软件来选择。因此可认为为计数器时钟周期。每记12个时钟周期,计数速率达1/12 的晶振频率。

计数器功能,下降沿时寄存器加1,根据外部输入引脚T0、T1 或T2。在这些功能中,每个时钟周期对外部输入信号(T0 引脚和T1 引脚)进行采样,每12个时钟周期对T2 引脚采样。当采样信号出现一个高电平接着一个低电平,计数加1。当检测到跳变时新计数值出现在寄存器中。对定时器0 和定时器1 来说,需要用两个时钟周期来识别下降沿跳变,最大的计数速率为1/2 的晶振频率;对于定时器2,需要用24个时钟周期来识别下降沿跳变,最大计数速率为1/24的晶振频率。外部输入信号没有严格的周期限制,但是要确保在电平改变前至少有一次采样,对定时器0 和定时器1来说信号应该至少保持一个时钟,定时器2 需要12 个时钟周期。

对定时器0 和定时器2 来说,除了标准8051 定时器的功能之外,添加了一些新的特征。

3.实验系统的原理图如下:

4.示例程序如下:

;做实验前请将对应“Digital LED Power”位置的红色拨码开关打到ON 的位置

ORG 0000H

SJMP MAIN

ORG 0030H ;将数码管所要显示的数据保存在30H~35H之中

SJMP T0_INT

MAIN:

MOV TMOD,#01H ;T0定时方式1

MOV TH0,#0DCH ;定时10ms@11.0592MHz

MOV TL0,#00H ; TH0和TL0,即:0XDC00

SETB TR0 ;启动T0

MOV IE,#82H ;开中断

MOV DPTR,#TAB

LOOP1:; 将30H~35H地址内的值均赋为9 ;注意:只有R0、R1可以间接赋值MOV R1,#30H

LOOP2: MOV @R1,#09H

INC R1

CJNE R1,#36H,LOOP2

START: MOV R2,#00H

MOV R1,#30H

LED_123: ;控制前3个数码管的显示

MOV A,@R1

MOVC A,@A+DPTR

CALL CONTROL_164

CALL CONTROL_138

CALL DELAY

INC R2 ;间接通过R2的值控制数码管显示的次序

INC R2 ;

INC R1

CJNE R1,#33H,LED_123

LED_4: ;控制第4个数码管的显示(带小数点)

MOV A,@R1

MOVC A,@A+DPTR

ADD A,#80H

CALL CONTROL_164

CALL CONTROL_138

CALL DELAY

INC R1

LED_56: ;控制第5、6个数码管的显示

INC R2

INC R2

MOV A,@R1

MOVC A,@A+DPTR

CALL CONTROL_164

CALL CONTROL_138

CALL DELAY

INC R1

CJNE R1,#36H,LED_56

JMP START

CONTROL_164:MOV R3,#08H

LOOP_0: CLR P2.0

MOV R4,A

ANL A,#080H

CJNE A,#080H,LOOP_1

SETB P2.7

JMP LOOP_2

LOOP_1: CLR P2.7

LOOP_2: SETB P2.0

MOV A,R4

RL A

DJNZ R3,LOOP_0

RET

CONTROL_138:MOV A,#0F0H ; 0xF0=11110000(二进制)

ADD A,R2 ; 需直接通过P21、P22、P23的值控制数码管显示的次序

MOV P2,A ; 将A的值赋给P2端口,则,R2需每次加2才能使P21发生一次改变RET

T0_INT: ;定时中断0

PUSH PSW

PUSH ACC

CLR EA

MOV TH0,#0DCH ;定时10ms@11.0592MHz

MOV TL0,#00H ; TH0和TL0,即:0XDC00

将30H~35H内改值,使每进入一次定时中断,30H~35H内数字组成的6位数减1 MOV R0,#35H

T0_LOOP0: CJNE@R0,#0H,T0_END

MOV @R0,#9H

DEC R0

JMP T0_LOOP0

T0_END: DEC@R0

SETB EA ;开启全局中断

POP ACC ;取出保存寄存器数据。

POP PSW

RETI

DELAY: ;延迟程序。

MOV R6,#0EEH

DELAY_0: MOV R7,#09H

DJNZ R7,$

DJNZ R6,DELAY_0

RET

TAB: DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh

; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

END

相关文档
最新文档