蓝桥杯笔记之 定时/计数器中断程序设计(三)

蓝桥杯定时/计数器中断程序设计

一、部分中断源信息

中断源中断号中断优先级设置优先级1(最高)中断请求标志中断允许控制
INT0(外部中断0)0PX01IE0EX0/EA
Timer 01PT01TF0ET0/EA
INT1(外部中断1)2PX11IE1EX1/EA
Timer 13PT11TF1ET1/EA
UART14PS1RI+TIES/EA

二、寄存器信息

1.辅助寄存器AUXR

B7B6B5B4B3B2B1B0
名字T0x12T1x12UART_Mox6T2RT2_C/T’T2x12EXTRAMS1ST2

T0x12:定时器0速度控制位,置0时12分频,置1时不分频,默认置0
T1x12:定时器1速度控制位
UART_Mox6:串口1 模式0 的通信速率控制位。置0时12分频,置1时不分频,默认为0

S1ST1:UART1波特率发生器控制位,置0时 选择T1;置1时选择T2,此时T1可作为独立定时器使用,默认为0

2.定时/计数器工作模式寄存器TMOD

B7B6B5B4B3B2B1B0
GATEC/T’M1M0GATEC/T’M1M0

高四位设置定时器1;低四位设置定时器0
GATA:置0时 定时/计数器工作;置1时 需要在INT0(P32)为高电平条件下才工作

C/T’:置0时 定时模式;置1时计数模式

M1和M0:工作方式控制位,共四种工作方式

M1M0工作模式
0016位自动重新加载模式
0116位不可重新加载模式,溢出时需软件重新写入TH1,TL1初值
10八位自动重新加载模式
11,,,

3.TH1寄存器:

定时/计数器1 计数初值高8位

4.TL1寄存器:

定时/计数器1 计数初值低8位

三、程序例程

#include<stc15f2k60s2.h>
sbit led1=P0^0;

int i=0;

void timer0_init()
{
	TMOD=0X01;	//定时器模式为 16位不可重新装载
	EA=1;	//	开总中断
	ET0=1;	//定时器0使能
	TR0=1;	//开始工作

	TH0=0xfc;	//延时1ms,单片机时钟12分频,即1hz,即计数一次1us,
	TL0=0x18;	//计数1000次就是1ms,(65536-1000)d=(fc18)h

}

void led_init()
{
	P2=0x80;	//译码器输出选择Y4 ,p27,p27,p25控制译码器输出
	P0=0x00;
}

void close_buzz()
{
	P2=0xa0;	//ULN2003
	P0=0x00;	//主要是想关了蜂鸣器	
}

void main(void)
{	
	close_buzz();
	led_init();
	timer0_init();
		
    while(1);
}

void timer0(void) interrupt 1
{ 
	i++;
	if(i==1000)	//1ms进入中断一次并对i加1,一千次就是1s
	{
	 	led1=~led1;
		i=0;	//重新置0
	}
	TH0=0xfc;	//重新加载初值,
	TL0=0x18;	//
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值