基于proteus的51单片机仿真实例五十六、定时器/计数器T0的外部计数实例
2017-05-08 21:27
393 查看
1、本例使用定时器/计数器T0的外部计数方式统计计按键次数,并将结果送P1口的8位LED显示,程序实现每按一次按键,按键次数加1,
2、在keil c51中新建工程ex44,编写如下程序代码,编译并生成ex44.hex文件
#include <reg51.h> //包含头文件
unsigned char counter; //全局变量,定义按键次数
//
void main(void)
{
counter = 0; //按键次数清0
P1 = 0xff; //关闭所有LED
TMOD = 0X06; //使用定时器T0的计数工作方式,工作于工作方式2
TH0 = 256-1; //定时器T0的高8位赋值,计数值为1
TL0 = 256-1; //定时器T0的低8位赋值
ET0 = 1; //允许计数中断
EA = 1; //开总中断
TR0 = 1; //启动计数方式工作
while(1)
{
P1 = counter; //按键次数送P1口
}
}
//T0计数中断服务函数
void counter0(void) interrupt 1 using 0
{
counter++; //按键次数加1
}
3、在proteus中新建仿真文件ex44.dsn,电路原理图如下所示:
5、将ex44.hex文件载入at89c51中,启动仿真,按动按键,观察程序运行结果。下图是按动三次按键后的运行结果
6、可以看到,程序运行后,没有按键按下时,所有LED都被点亮了(但是程序开始我们设置了一句P1=0xff,关闭了所有LED,想一下,这是为什么?)
仔细观察当按动按键时,8位LED的变换情况,是否能够做出正确解释?
2、在keil c51中新建工程ex44,编写如下程序代码,编译并生成ex44.hex文件
#include <reg51.h> //包含头文件
unsigned char counter; //全局变量,定义按键次数
//
void main(void)
{
counter = 0; //按键次数清0
P1 = 0xff; //关闭所有LED
TMOD = 0X06; //使用定时器T0的计数工作方式,工作于工作方式2
TH0 = 256-1; //定时器T0的高8位赋值,计数值为1
TL0 = 256-1; //定时器T0的低8位赋值
ET0 = 1; //允许计数中断
EA = 1; //开总中断
TR0 = 1; //启动计数方式工作
while(1)
{
P1 = counter; //按键次数送P1口
}
}
//T0计数中断服务函数
void counter0(void) interrupt 1 using 0
{
counter++; //按键次数加1
}
3、在proteus中新建仿真文件ex44.dsn,电路原理图如下所示:
5、将ex44.hex文件载入at89c51中,启动仿真,按动按键,观察程序运行结果。下图是按动三次按键后的运行结果
6、可以看到,程序运行后,没有按键按下时,所有LED都被点亮了(但是程序开始我们设置了一句P1=0xff,关闭了所有LED,想一下,这是为什么?)
仔细观察当按动按键时,8位LED的变换情况,是否能够做出正确解释?
相关文章推荐
- 基于proteus的51单片机仿真实例五十七、定时器/计数器T0的定时实例
- 基于proteus的51单片机仿真实例五十八、定时器/计数器T1的定时实例
- 基于proteus的51单片机仿真实例五十四、中断的概念和外部中断实例1
- 基于proteus的51单片机仿真实例五十五、外部中断1演示实例
- 基于proteus的51单片机仿真实例二、关于proteus
- 基于proteus的51单片机仿真实例六、运行你的第一个仿真实例
- 基于proteus的51单片机仿真实例十六、51单片机的C语言的标识符和关键字
- 基于proteus的51单片机仿真实例二十五、C51中移位位运算符演示实例
- 基于proteus的51单片机仿真实例二十、用单片机端口演示数据的除法运算结果
- 基于proteus的51单片机仿真实例十一、51单片机的P0口控制实例--流水灯
- 基于proteus的51单片机仿真实例十七、用不同的数据类型控制LED灯的闪烁频率
- 基于proteus的51单片机仿真实例十三、51单片机的C语言宏定义应用实例
- 基于proteus的51单片机仿真实例二十三、C51条件运算符演示实例
- 基于proteus的51单片机仿真实例二十八、C语言的if条件语句演示实例
- 基于proteus的51单片机仿真实例二十七、C语言的语句演示实例
- 基于proteus的51单片机仿真实例十四、51单片机的C语言文件包含应用实例
- 基于proteus的51单片机仿真实例一、说明
- 基于proteus的51单片机仿真实例八、关于proteus常用操作的补充说明
- 基于proteus的51单片机仿真实例二十一、C语言的自增和自减运算演示实例
- 基于proteus的51单片机仿真实例十九、用单片机端口演示数据的乘法运算结果