51单片机定时器0工作在模式2
时间:12-01
来源:互联网
点击:
51单片机定时器0工作在模式2,INT0(P3.2)引脚控制定时/计数器定时计数,定时/计数器0溢出中断,使P2.0引脚相连的LED灯闪烁。定时/计数器0溢出中断为250μs,与P2_0引脚相连的LED灯每2s亮灭一次。源程序如下:
//51hei单片机网原创作品,版权所有.
#include "reg_c51.h"
#define reload_value 0x06//计数值为250,若时钟频率为12MHz,相当于250μs
unsigned char hex[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管十六进制译码表
unsigned char n,nn; //定义中断次数变量
void main(void) //主函数
{
TMOD = 0xF0; //定时/计数器0工作在模式2,8位重装模式
TMOD |= 0x0A; //GATE0=1; C/T0#=0; M1=1; M0=0;
TL0 = reload_value; //设置初值
TH0 = reload_value; //设置初值
ET0=1; //允许定时/计数器0中断
EA=1; //允许总中断
TR0=1; //启动定时/计数器0
while(1) //无限循环
{
P1=hex[n/10]; //显示中断次数变量n的高位
P0=hex[n%10]; //显示中断次数变量n的低位
}}
void it_timer0(void) interrupt 1 //定时/计数器0中断函数
{
nn=nn++; //每次中断nn加1,每两次中断间隔250μs
if (nn==40) //nn=40,就是中断40次,相当于40*250μs =10ms
{
nn=0;
n++; //每10ms,n加1,
if(n==100) //n=100,相当于时间10ms*100=1s
{n=0;
P2_0 = ~P2_0;//每间隔1s,将P2_0引脚电平取反,使相连的LED灯闪烁
}}}
//51hei单片机网原创作品,版权所有.
#include "reg_c51.h"
#define reload_value 0x06//计数值为250,若时钟频率为12MHz,相当于250μs
unsigned char hex[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管十六进制译码表
unsigned char n,nn; //定义中断次数变量
void main(void) //主函数
{
TMOD = 0xF0; //定时/计数器0工作在模式2,8位重装模式
TMOD |= 0x0A; //GATE0=1; C/T0#=0; M1=1; M0=0;
TL0 = reload_value; //设置初值
TH0 = reload_value; //设置初值
ET0=1; //允许定时/计数器0中断
EA=1; //允许总中断
TR0=1; //启动定时/计数器0
while(1) //无限循环
{
P1=hex[n/10]; //显示中断次数变量n的高位
P0=hex[n%10]; //显示中断次数变量n的低位
}}
void it_timer0(void) interrupt 1 //定时/计数器0中断函数
{
nn=nn++; //每次中断nn加1,每两次中断间隔250μs
if (nn==40) //nn=40,就是中断40次,相当于40*250μs =10ms
{
nn=0;
n++; //每10ms,n加1,
if(n==100) //n=100,相当于时间10ms*100=1s
{n=0;
P2_0 = ~P2_0;//每间隔1s,将P2_0引脚电平取反,使相连的LED灯闪烁
}}}
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)