要求:从P1^0口输出50Hz的方波,并通过S1,S2调整方波的频率。按下S1 频率以1Hz为单位增大,按下S2 频率以1Hz为单位减小。

(代码仅进行过初步验证,可能存在一定的BUG,谨慎使用)

#include<reg52.h>#define uchar unsigned char
#define uint unsigned intsbit Iput = P1^0;//------------------------变量区------------------------float Temp = 50;//初始频率 Hz
uint F ;//周期
float a=0;//中间变量//------------------------函数区------------------------
void Delay(uint t)//延时函数
{while(t--);
}void Init_ET_0()//定时器初始话函数 50ms
{F = a*500000;//将周期值换算成微秒并除二TMOD = 0x01;//定时器0 工作方式 1EA  = 1;    //开总中断ET0 = 1;   //开定时器开关TR0 = 1;   //启动定时器TH0 = (65536 - F)/256;  //给高八位赋初值TL0 = (65536 - F)%256;  //给低八位赋初值//---------------------外部中断配置-------------------------EX0 = 1;EX1 = 1;IT0 = 1;IT1 = 1;
}void Servoic_ET_0() interrupt 1   //定时器服务函数
{F = a*500000;//将周期值换算成微秒并除二TH0 = (65536 - F)/256;   //重装高八位TL0 = (65536 - F)%256;   //重装低八位Iput = ~Iput;
}void Servoic_EX_0() interrupt 0   //外中断0
{EX0 = 0;Delay(100);EX0 = 1;     //消抖处理Temp = Temp++;//频率加一
}void Servoic_EX_1() interrupt 2   //外中断1
{EX1 = 0;Delay(100);EX1 = 1;Temp = Temp--;//频率减一
}void main()
{Init_ET_0();//定时器0初始化while(1){a = 1/Temp;//不断更新周期值}
}

仿真图如下:

都看到这了给个赞支持一下呗

利用定时器产生方波并通过中断调节方波频率相关推荐

  1. 51单片机实例学习二 按键中断识别、定时器、利用定时器产生乐曲、数摸转换 ADC0804和DAC0832

    六.按键中断识别 [实验任务] 采用中断技术,每按一下按键,计数器加1,并用LED显示出来. [硬件电路] 注意:我们只用4位数码管中的两位. 注意:a接P0.0;b接P0.1;c接P0.3-- 注意 ...

  2. 51单片机的应用——利用定时器控制输出对称方波

    单片机晶振为12MHz,编程实现T0模式1下在P1.1处输出周期为td的对称方波. 分析:利用定时器定时溢出控制P1.1输出的反相,达到输出周期方波 51的TOMD控制着定时器T0的工作,首先设置TM ...

  3. STM8S903K3基于STVD开发,利用定时器5中断实现毫秒时基延时

    STM8S903K3基于STVD开发,利用定时器5中断实现毫秒时基延时

  4. STM32 定时器的简单应用 1ms中断代码

    引言:利用定时器TIM8产生1ms中断,每中断一次,全局变量+1,计数到10即10ms,使得输出引脚翻转一次.芯片采用STM32F103VCT6,系统输入时钟12MHz,完成代码并用示波器输出. 根据 ...

  5. 8、TM4单片机的滴答定时器,及利用定时器精确延时

    在我们日常使用单片机的时候,延时一般采用循环的方式,但是这样的方式只能用于粗略的延时,但我们需要精准的时间控制的时候,便需要利用定时器获得精确的延时. 本次采用TM4内的滴答定时器. 文章目录 1.滴 ...

  6. [STM32F10x] 利用定时器测量脉冲宽度

    转载http://www.cnblogs.com/mr-bike/p/4199751.html 硬件:STM32F103C8T6 平台: ARM-MDk V5.11 前面一篇文章讲过如何利用定时器测量 ...

  7. stm32h7关串口中断怎么弄_【STM32H7教程】第33章 STM32H7的定时器应用之TIM1-TIM17的中断实现...

    第33章       STM32H7的定时器应用之TIM1-TIM17的中断实现 本章教程为大家讲解定时器应用之TIM1 – TIM17所有定时器的周期性中断实现.实际项目中用到的地方较多,特别是周期 ...

  8. 安卓案例:利用定时器实现逐帧动画

    安卓案例:利用定时器实现逐帧动画 一.运行效果 单击[开始]按钮,可以看到逐帧动画效果: 单击[停止]按钮,可以停止动画效果. 二.涉及知识点 1.图像视图(ImageView) 2.按钮(Butto ...

  9. Qt中利用定时器QTimer实时显示当前日期和时间

    Qt中利用定时器QTimer实时显示当前日期和时间 时显示当前日期和时间.下面说明方法: 1. 在工程中声明一个全局QTimer对象 QTimer *timer; 2. 在构造函数中定义QTimer, ...

最新文章

  1. 力所能及的做些自己喜欢和有趣的事
  2. python dataframe 分位数_Python pandas.DataFrame.quantile函数方法的使用
  3. 智源创新中心——与你同行,用AI改变世界
  4. SAP RETAIL 商品主数据里的X-DChain Status字段
  5. quick-cocos2d-x教程12:实现文本和password输入界面
  6. npm 卸载_完全免费!GitHub发布软件包管理服务:NPM瑟瑟发抖
  7. 题目1164:旋转矩阵
  8. 【数理知识】《积分变换与场论》王振老师-目录
  9. matlab保存变量的值,怎么不能保存之前的变量值?求解
  10. python新旧特性过渡_网站改版时的一种新旧版过渡方案
  11. MySQL Cookbook 学习笔记-02
  12. PySpider问题记录http599
  13. Keepalived 安装配置
  14. (三)Mybatis类型转换器,接口传参类型,一对一,一对多查询resultMap配置
  15. 这不是海市蜃楼,这是平地雾
  16. PAT 乙级A1025 适合当算法入门练习题做
  17. Linux编写脚本nsum求和,shell脚本学习与总结
  18. Camera2 YUV_420_888转NV21
  19. STM32F407三重ADC配置
  20. ERROR 1010 (HY000): Error dropping database (can't rmdir './library', errno:

热门文章

  1. 不卖安装盘,三种方法升级至正版Win8
  2. 设计模式:策略设计模式
  3. 网络相关的常识、基本概念
  4. 秒开路由sam1_秒开游戏
  5. linux sd卡 速度测试,你的sd卡到底有多快? 256G SD 卡实际速度测试
  6. 从零开始学python数据分析与挖掘
  7. Pokemon Go玩家或成为下一个网络攻击对象 赛门铁克揭示潜在安全威胁
  8. 费孝通《乡土中国》阅读笔记—— 差序格局
  9. 抖音web端私信websocket-protobuf 浅学
  10. 区块链金融格局再生变:谁也没想到韭菜财经会成为一匹黑马