从头开始学51单片机之实例4:用定时器输出方波

这篇具有很好参考价值的文章主要介绍了从头开始学51单片机之实例4:用定时器输出方波。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、仿真环境

  • Proteus8.9
  • Keil5

二、Proteus模型搭建

单片机方波程序怎么写,51学习笔记,51单片机,嵌入式硬件,单片机

三、软件代码

需求:fosc = 12MHz,利用T0实现在P1.0输出周期为1ms的方波

机器周期:T = 12/fosc = 1us

每隔一定时间让P1.0信号翻转,就能得到方波信号

方波周期为1ms,半周期为500us

所以t = 500us,T = 1us

定时器初值:

将TC拆为高8位和低5位,其中高8位1111 0000B(F0H)、低5位0 1100B(0CH),分别送TH0和TL0

T0工作在模式0,因此TMOD=0000 0000

单片机方波程序怎么写,51学习笔记,51单片机,嵌入式硬件,单片机

 写法1:采用while(1)循环,使用查询方式,不使用中断

#include <reg51.h>

sbit rect_wave = P1^0;

void timelover(void);

void main()
{
        TMOD = 0x00; // 不门控,定时器方式,13位定时器/计数器
        TH0 = 0xf0;  // 高8位
        TL0 = 0x0c;  // 低5位
        IE = 0x00;   // 不允许中断,这里采用查询方式,不触发中断
        TR0 = 1;     // 启动T0计数
        while(1)
        {
                if(TF0) // 如果T0溢出
                {
                        timelover();
                        TF0 = 0; // 软件清除标志位                        
                }
        }
} 

void timelover(void)
{
        TR0 = 0;        // 停止计数
        TH0 = 0xf0;     //重赋初值
        TL0 = 0x0c;
        rect_wave = !rect_wave; // 信号反转
        TR0 = 1;        // 启动计数        
}

写法2:使用T0中断实现方波输出

#include <reg51.h>

sbit rect_wave = P1^0;

void timelover(void);

void main()
{
        TMOD = 0x00;
        TH0 = 0xf0;
        TL0 = 0x0c;
        IE = 0x82;      // 1000 0010 允许T0中断
        TR0 = 1;        // 启动T0计数
        while(1)
        {
        
        }
} 

void time0int(void) interrupt 1
{
        EA = 0;         // 禁止所有中断请求
        TR0 = 0;        // 停止计数
        TH0 = 0xf0;     // 重赋初值
        TL0 = 0x0c;
        rect_wave = !rect_wave;
        TR0 = 1;        // 启动计数
        EA = 1;         // 开放中断        
}

四、仿真波形

单片机方波程序怎么写,51学习笔记,51单片机,嵌入式硬件,单片机文章来源地址https://www.toymoban.com/news/detail-519010.html

到了这里,关于从头开始学51单片机之实例4:用定时器输出方波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机定时器实验(汇编)

    基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习。附上注释希望能认真研究,若有错误请指出,谢谢。 一、实验目的 掌握单片机定时器的使用方法。 掌握中断的使用方法。 二、实验内容 采用中断方式控制定时器。使得单片机P1.0引脚产生周期为1S的方波

    2024年02月11日
    浏览(59)
  • 51单片机之定时器篇

    首先,学好单片机必须要搞懂定时器,定时器是单片机重要的组成部分之一,总之,学不好定时器,单片机相当于没学,下面就让我介绍如何学好单片机定时器。 学习单片机首先要明白的: 1,51单片机有两组定时器/计数器,既可以定时,又可以计数,总称之定时器 2,单片

    2024年02月11日
    浏览(54)
  • 51单片机 | 定时器中断实验

      这一节介绍51单片机的定时器中断。 STC89C5X 含有 3 个定时器:定时器 0、定时器 1、定时器 2(注意: 51 系列单片机一定有基本的 2 个定时器(定时器 0 和定时器 1),但不全有 3 个中断,需要查看芯片手册,通常我们使用的是基本的 2 个定时器:定时器 0/1)。本节要实现

    2024年02月06日
    浏览(111)
  • 51单片机PWM(定时器)

    目录 前言 一、PWM的介绍 二、在定时器中配置PWM 三、代码  总结         PWM普遍应用于惯性系统,我们知道单片机几乎只能输出“1”和“0”两种状态,即开和关,想要输出模拟量是不太容易实现的,那么怎样才能使单片机输出平滑的线性信号呢?没接触过PWM的小伙伴可能第

    2024年02月09日
    浏览(56)
  • 51单片机定时器/计数器(定时器中断)

    实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1、51单片机定时器原理 定时器实质上就是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到定数器满时,再输入一个脉冲就使定时器回零

    2024年02月06日
    浏览(57)
  • 51单片机定时器基础知识

    经验总结:定时器0工作方式1的溢出中断初始值计算 1.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 65536-46080=19456(4c00) TH0=0x4c,TL0=0x00 2.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。 65536-50000=15536(3cb0) TH0=0x

    2024年02月04日
    浏览(115)
  • 51单片机定时器中断TMOD

    最近在学定时器中断TMOD,写程序时,要对定时器进行配置 对TMOD进行赋值时,拌了好久。。。。 如何根据所用的      定时器0/1 ,  工作方式0/1/2/3      对TMOD赋值呢? 我们知道: 1.TMOD长这样 :  由八位组成,前四位是T1的参数;后四位是T0的参数;GATE 和 C/T\\\' 不用多讲,

    2024年02月12日
    浏览(47)
  • 51单片机中断定时器1用法

    中断为使单片机具有对内部或外部随机发生的事件实时处理而设置的。 中断技术不仅解决了快速主机与I/O设备的数据传送问题,而且还有具有如下的优点: 1. 分时操作:CPU可以分时为多个I/O设备服务,提高了计算机的利用率。 2. 实时操作:CPU能够及时处理应用系统的随机事

    2024年02月06日
    浏览(61)
  • 【单片机c51】定时器应用1

    1.系统时钟为12MHz,编程实现从P1.0引脚输出一个周期为2ms的方波。 注:要想产生一个周期2ms的方波,定时器应产生1ms的周期性的定时,定时对P1.0求反。选择定时器T0,方式1定时,采用中断方式,GATE不起作用。   注:1.EA=1 所有的中断请求被开放 2.ET0=1  允许T0溢出的请求 3.T

    2024年02月04日
    浏览(54)
  • 51单片机-定时器(简易时钟的实现)

    最近在学习51单片机,学到了 定时器 这块,由于自己的基础不太扎实,在这方面花了很多时间,这里通过对定时器和中断的介绍,用 简易时钟 这个例子来对学习的内容进行加深巩固,把自己的经验分享给大家,希望对大家能够有帮助。 其实就是单片机的内部,通过系统时钟

    2024年02月03日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包