单片机
返回首页

手把手教学51单片机 | 第三课之 定时器中断

2022-03-16 来源:eefocus

1. 中断

在这里插入图片描述

(1)外部中断

打开总中断EA,选择外部中断EX0或EX1,因为ie可寻址,所以直接对EX0或者EX1操作,然后设置IT0(TCOD中)为电平触发还是跳变沿触发(上电默认寄存器0,为电平触发方式),然后写中断处理函数根据下表优先级确定 interrupt 后面的数字

在这里插入图片描述

(2)定时器中断

TMOD是定时器/计数器的工作方式寄存器,

TCON是控制寄存器,控制T0T1的启动和停止及设置溢出标志

先设置定时模式
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

如果选用01工作方式,TH TL是16位

2^16=65536

(65536-N)/256相当于一个能装65536的水桶舀出N单位的水,然后每1us加入1单位的水的时间,最后用了5000us=50ms


接下来是TCON的详解

在这里插入图片描述
在这里插入图片描述

//用定时器代替上节课的延迟子函数

#include

#define uchar unsigned char 

#define uint unsigned int 

sbit dula=P2^6;

sbit wela=P2^7;

uchar num;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void Time0_delay();

void main()

{

wela=1;

P0=0xc0;

wela=0;

while(1)

{

for(num=0;num<16;num++)

{

dula=1;

P0=table[num];

dula=0;

Time0_delay();

}

}

}

void Time0_delay()

{

unsigned int i;

TMOD&=0xF0;//有效避免打乱高四位

TMOD|=0X01;//最终TMOD=  ABCD 0001

for(i=0;i<20;i++)

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;//开启定时器

while(!TF0);//延时50ms

TF0=0;//溢出位清零

TR0=0;//关闭定时器

//重复20次就是1s

}

}


3.代码

//中断和定时器的综合运用

#include

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^6;

sbit wela=P2^7;

sbit d1=P1^0;

uchar num,tt;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};


void main()

{

num=0;

tt=0;

TMOD=0x01;//设置定时器0为工作方式1

//赋初值

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;//打开总中断

ET0=1;//打开定时器0的中断

TR0=1;//启动定时器0,只要开着就会一直运作

wela=1;

P0=0xfe;//第一位数码管

wela=0;

dula=1; P0=0x3f;//避免乱码 先赋初值0

dula=0;

while(1)

{

//20次就是1s 进行1次if

if(tt==20)

{

tt=0;

  num++;

if(num==16)

num=0;//清零!!!

dula=1;

P0=table[num];

dula=0;

}

}

}


/*void delay(uint z)

{

uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}*/


void exter0()interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

}


4.总结

在这里插入图片描述

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章