Mcs51系列单片机实训指导书
实验五 频率计(定时器、计数器、中断综合实验)
一、实验目的
熟悉MCS51类CPU的定时器、计数器、中断系统编程方法,了解定时器、计数器的应用、实时程序的设计和调试技巧。
二、实验内容
使用定时器0产生定时,使用计数器1计数外部脉冲,用P3.5测量信号频率(最大不能超过0.5MHZ),将频率值显示在数码管上。
三、程序框图
开始初始化堆栈T0定时器,T1计数器T0 50ms产生一次中断0→TH1,TL1,PulseCout开中断使能开T0定时,开T1计数0→TH1,TL1,PulseCount是否禁止了T0定时?Y开T0定时,开T1计数十六进制频率值转换为十进制刷新频率显示中断返回主程序频率计程序框图T1计数器处理程序N中断返回T0定时中断处理程序中断开始PulseCount + 1中断开始TH0,TL0恢复初值定时中断次数=20?Y满1S,禁止T0定时,禁止T1计数保存TH1,TL1,PulseCount得到频率值N
四、实验步骤
1、连线说明:
D3区 :CLK D3区 :CS D3区 :A0 —— B2区:2M —— A3区:CS5 —— A3区:A0 2、将导线的一头插入A3区的T1(P3.5) 3、打开实验仪的电源
4、将导线的另一头与B2区的500K~1953的信号相连,对应的频率值显示在数码管上
五、程序清单
; 程序名称:频率计(P3.5计数 1秒处理一次) Count50ms DATA 30H PulseCount DATA 31H
11
;脉冲计数第三个字节
Mcs51系列单片机实训指导书
buffer EXTRN
STAR:
STAR1:
Display:
TimerT0: DATA 32H CODE(Display8) ORG 0000H LJMP STAR ORG 000BH LJMP TimerT0 ORG 001BH LJMP CounterT1 ORG 0100H MOV SP,#60H MOV TMOD,#01010001B MOV TH0,#03CH MOV TL0,#0B0H MOV Count50ms,#20 MOV TH1,#00H;计数 MOV TL1,#00H MOV PulseCount,#0 SETB EA SETB ET1 SETB ET0 SETB TR0 SETB TR1 JB TR0,$ SETB TR0 SETB TR1 ACALL B4toD4 MOV R0,#buffer MOV A,R7 ACALL B1toB2 MOV A,R6 ACALL B1toB2 MOV A,R5 ACALL B1toB2 MOV A,R4 ACALL B1toB2 MOV R0,#buffer+7 MOV R7,#7 ACALL BlackDisplay MOV R0,#buffer LCALL Display8 SJMP STAR1 MOV TH0,#03CH MOV TL0,#0B0H DJNZ Count50ms,TimerT0_exit
12
;8个字节显示缓冲区
;T0计时中断处理入口
;T1计数中断处理入口
;T0定时,T1计数,方式1 ;50ms定时
;20 * 50ms = 1s
;刷新显示
;显示结果 ;低位
;压缩BCD码转换成非压缩BCD码
;高位
;将高位0消隐
;50ms定时
Mcs51系列单片机实训指导书
MOV Count50ms,#20 CLR TR0 CLR TR1 MOV R1,PulseCount MOV R2,TH1 MOV R3,TL1 MOV PulseCount,#0 MOV TH1,#0 MOV TL1,#0 TimerT0_exit: RETI CounterT1: INC PulseCount RETI
;B4toD4子程序请参阅实验四、B1toB2、BlackDisplay子程序请参阅实验二 END
六、思考题
1、为什么测试较高频率信号时,数码管上显示的数据一直在变化? 2、为什么频率信号不能超过0.5MHZ?
13
Mcs51系列单片机实训指导书
硬件实验
实验一
跑马灯实验
一、实验目的与要求
熟悉星研集成环境软件或熟悉Keil C51集成环境软件的使用方法。 熟悉MCS51汇编指令,能自己编写简单的程序,控制硬件。
二、实验设备
STAR系列实验仪一套、PC机一台 三、实验内容
1、熟悉星研集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。
2、照接线图编写程序:使用P1口控制F5区的8个指示灯,循环点亮,瞬间只有一个灯亮。
2、观察实验结果,验证程序是否正确。 四、实验原理图
五、实验步骤
1、连线说明: A3区:JP51 —— F5区:JP65 2、编写程序或运行参考程序。
3、实验结果:通过F5区的LED指示灯(8个指示灯轮流点亮),观察实验的输出结果是否正确。
六、演示程序 ORG 0000H LJMP START ORG 0100H START: MOV SP,#60H MOV A,#0FFH CLR C START1: RLC A
14
Mcs51系列单片机实训指导书
MOV P1,A
ACALL Delay
SJMP START1 Delay: MOV R5,#2 ;延时 Delay1: MOV R6,#0 Delay2: MOV R7,#0 DJNZ R7,$ DJNZ R6,Delay2 DJNZ R5,Delay1 RET END
如果读者使用星研集成环境软件,请考虑以下问题? 1、运行程序前,打开变量窗;
2、使用单步进入命令,运行到第六行后,运行过程中变量窗有何变化?将鼠标停留在A、SP上一秒后,出现什么?,它与变量窗使用场合的区别?
3、第九行是调用延时子程序,如何进入延时子程序(使用单步进入命令)?如何将延时子程序一下子运行完毕(使用单步命令;也可以将光标移到下一行,使用运行到光标处命令;)?单步进入命令与单步命令有何区别?
4、运行几次后,在第十行设置一个断点,使用全速断点命令运行几次,观察运行结果,它与运行到光标处命令有何区别?
5、Delay是一个延时子程序,改变延时常数,使用全速运行命令,显示发生了什么变化?
6、观察寄存器,有哪几种方法?
1)在工作区窗的通用寄存器标签视中; 2)变量窗
3)鼠标停留在寄存器上 4)观察窗 5)寄存器窗
实验二 74HC138译码器实验
一、实验目的与要求
15