一.实验目的:
1.熟悉MCS-51单片机定时/计数器的外部计数原理;
2.进一步掌握定时/计数器的计数功能的初始化和编程方法。
二.实验内容:
模拟产品包装线上对物品件数的计数,假设每个包装箱10件物品,每个物品经过传送带时,光电传感器将发出一个脉冲信号,利用T0定时计数器对该脉冲进行计数,每计满10个物件,将箱数计数器加1,同时将箱数计数器的值以二进制的形式显示在8个LED发光二级管中。
光电传感器脉冲由实验仪器上的K3按键来模仿。
三.实验步骤:
1.理解TCON寄存器中TF0 TF1的设置,IE的EA和ET0的正确设置。
2.理解定时计数器的外部计数的触发原理.
2.编写汇编程序,并生成HEX文件,烧入实验板。
4.按键并保持100毫秒以上,模拟光电传感器的脉冲,记录按键次数,并观察发光二极管组的显示,验证其代表的计数(二进制形式)正确情况情况。
四.实验参考程序
ORG 0000H
SJMP MAIN
ORG 000BH
SJMP PRO
ORG 0030H
MAIN:
MOV R1,#0FFH
MOV TMOD,#0110B;T0方式2
MOV TH0,#0F6H;计数器次数为10,2^8-10=246
MOV TL0,#0F6H
SETB ET0;开计数器0中断
SETB EA;开总中断
SETB TR0;允许计数器
LOOP: LCALL DELAY
MOV C,P3.2
MOV P3.4,C;将3.2的值赋给3.4
SJMP LOOP;跳回循环开头
PRO:
DEC R1;循环减一
MOV P2,R1;控制灯亮
RETI
DELAY: ;延时
D1: MOV R6,#20;延时程序次外层循环次数
D2: MOV R5,#250;延时程序内存循环次数
DJNZ R5,$;内存循环
DJNZ R6,D2;次外层循环
RET
END
五、实验结果
六、实验小结
规定按动K310下,并且每次按动时间大于等于100ms才算做有效脉冲,进计数,在写代码的时候就要考虑两方面因素,否则单片机闪动频率不稳定,有时才按动一下或两下就开始计数,要尽可能使用能让单片机功能稳定的代码。