单片机设计实验--脉冲计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八脉冲计数实验
一、实验目的:
(1)掌握定时器/计数器的计数工作方式;
(2)掌握用定时器/计数器实现脉冲计数的方法;
(3)掌握用Keil实现软件调试的方法;
(4)掌握用Proteus实现电路设计,程序设计和仿真的方法。
二、实验内容:
定时器0外部输入端(P3.4)和定时器1外部输入端(P3.5)作为计数脉冲输入端,利用按钮手控产生单脉冲信号作为计数输入脉冲,编写程序控制,每输入一个(5个)脉冲,工作寄存器R0(R1)的内容加1,同时将R0(R1)的内容送到两位LED数码管中显示出来,晶振频率6MHZ。
三、实验参考电路:
P1口接两位数码管显示工作寄存器R0的内容,P2口接两位数码管显示工作寄存器R0的内容,两只按钮分别接P3.2(外部中断0中断输入端)和P3.3(外部中断1中断输入端)。实验电路如图:
四、实验参考程序:
ORG 0000H
LJMP MAIN 指向主程序;
ORG 000BH 定时器/计数器0的入口地址;
LJMP T0C 指向中断服务程序;
ORG 001BH 定时器/计数器1的入口地址;
LJMP T1C 指向中断服务程序;
ORG 0030H
MAIN: MOV R0,#00H 清零;
MOV R1,#00H
MOV P1,#00H
MOV P2,#00H
MOV TMOD,#66H 置计数器0,计数器1为方式2;
MOV TH0,#0FFH 置1次计数初值;
MOV TL0,#0FFH
MOV TH1,#0FBH 置5次计数初值;
MOV TL1,#0FBH
SETB EA 开中断;
SETB ET0
SETB ET1
SETB TR0 启动计数器0;
SETB TR1 启动计数器1;
SJMP $
ORG 0100H
T0C: MOV A,R0 计数器0中断服务程序;
ADD A,#01H
DA A 十进制调整;
MOV R0,A 保存计数器;
MOV P1,A 计数值送显示器;
RETI
ORG 0200H
T1C: MOV A,R1 计数器1中断服务程序;
ADD A,#01H
DA A 十进制调整;
MOV R1,A 保存计数器;
MOV P2,A 计数器送显示器;
RETI
END
五、实验步骤:
(1)建立工程文件,选择单片机型号,生成asm文件,在所生成文件中输入参考程序并调试如下:
如图可以看出程序调试无错误,所以可以将其生成HEX文件。
(2)打开Proteus软件,新建设计文件,根据脉冲计数原理图选择元器件,将元器件用连线或者总线连接起来如下图:
(3)将生成的HEX文件下载到芯片中单击仿真工具栏“运行”按钮,单片机全速运行程序,如下图所示:
A、每输入一个(5个)脉冲,工作寄存器R0(R1)的内容加1,同时将R0(R1)的内容送到两位LED数码管中显示出来,如下图所示:
六、实验总结:
(1)按动按钮,可以从数码管显示器上看到,每输入一个(5个)脉冲,工作寄存器R0(R1)的内容加1,同时将R0(R1)的内容送到两位LED显示管中显示出来;
(2)通过实验,更加了解定时器/计数器的工作方式与工作原理;
(3)更加掌握Keil与Proteus的配套使用,且掌握电路设计,程序设计与仿真的方法。