51单片机——第七章

一、定时器(内设)

1.作用:

        1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作

        2)替代长时间的delay,提升CPU的运行效率和处理速度

2.定时器个数:

        T0,T1,T2

        T0,T1一般都可以兼容,T2是STC89C52新增的

3.定时器的功能实现:

4.单片机的工作模式:

        1)T1和T0均有四种工作模式:

                模式0:13位定时器/计数器

                模式1:16位定时器/计数器(常用)

                模式2:8位自动重装模式

                模式3:两个8位计数器

        2)模式1:

                        (从左到右分别是:时钟、计数单元、中断系统)

        3)时钟:

                SYSclk:系统时钟,即晶振周期(1M是一百万,12MHz就是一秒一千两百万,换算成                     一次就是一微秒一次)

        4)中断系统:

                a.定义

                b.流程

                c.中断资源

                中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器1中断、定时器2中                    断、串口中断、外部中断2、外部中断3)

                中断优先级个数:4个

                中断号:

                d.结构

二、代码示例

1.开头设置函数:

        TMOD:定时器/计数器模式控制

        TF0=0,初始中断,避免中断系统开始

        TR0=1:电机开始工作

void Timer0_Init()
{
    TMOD=0x01;
    TF=0;
    TR0=1;
    TH0=64535/256;
    TL0=64535%256;
    ET0=1;
    EA=1;
    PT0=0;
}

2.中断程序:

中断函数要记得复制初始值!!!

unsigned int T0Count;
void Timer0_Routine() interrupt 1
{
    TH0=64535/256;
    TL0=64535%256;
    T0Count++;
    if(T0Count>=1000)
    {
        T0Count=0;
        P2_0=~P2_0;
    }
}

3.使用与/或进行清零和置一

        TMOD&=0xF0;//把TMOD的低四位清零,高四位保持不变

        TMOD|=0x01;//把TMOD的最低位置一,高四位保持不变

4.使用stc自动生成定时函数:

        记得改【系统频率】、【定时器模式】、【定时器时钟】

        复制完记得把第一句删掉!!

 5.步骤:

        1)复制代码(复制的时候记得删掉去第一句)
        2)增加中断代码

ET0=1;
EA=1;
PT0=0;


        3)改函数名(保持统一)
        4)加中断函数(中断函数要复制初值!!)

6.static:

        运用在子函数中,在离开子函数时,变量值不清零,而是保持不变

7.独立按键模块

unsigned char Key()
{
    unsigned char KeyNumber=0;
    if(P3_1==0){Delay(20);while(P3_1==1);Delay(20);KeyNumber=1;};
    if(P3_0==0){Delay(20);while(P3_1==1);Delay(20);KeyNumber=2;};
    if(P3_2==0){Delay(20);while(P3_1==1);Delay(20);KeyNumber=3;};
    if(P3_3==0){Delay(20);while(P3_1==1);Delay(20);KeyNumber=4;};
}

8.循环移动函数:

#include<INTRINS.H>

左移:extern unsigned char _cror_(,)
右移:extern unsigned char _iror_(,)

例子:P2=—_cror_(P2,1)

9.本期自己动手:

        做一个时钟(显示小时、分钟、秒)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值