------------------------------------------凑热闹的分割线------------------------------------------------

/*点亮led0(P1^0)和led7(P1^7) 其中led0以5v电压正常点亮
 led1利用pwm和按键实现可调亮度*/
#include<reg52.h>
#define ui unsigned int
#define uc unsigned char
sbit led0=P1^0;
sbit led1=P1^7;
sbit up=P3^0;
sbit down=P3^1;
ui n=0;    //定义了每个周期有几小段
uc pwm=20; //定义了占空比(pwm越大 低电平占比越大) 数据类型范围0~256
void delay();
void init_timr0();
void scan();
void main()
{init_timr0(); //初始化定时器led0=0; //正常点亮一个led 用于比较scan();
}
/*主函数*/
void init_timr0()
{TMOD=0x02; //设置定时0 工作方式2TH0=TL0=210; //周期中每段时间50usEA=1;ET0=1;TR0=1;
}
/*延时函数*/
void delay()
{uc x,y;for(x=10;x>0;x--)for(y=120;y>0;y--);
}
/*循环扫描检测是否要变亮或变暗*/
void scan()
{while(1){if(!up)    //按下灯变亮(){delay();  //防抖if(!up)if(pwm<=250)     //限制了pwm的范围不能大于255 否则溢出后变为最小pwm++;}delay(); //使按键调速更慢些if(!down){delay();if(!down)if(pwm>0)     //限制了pwm的范围不能小于0 否则跳变到最大pwm--;}delay(); }
}
/*中断服务程序*/
void timer0()interrupt 1
{n++;if(n==250) //设置周期有250段 则 周期=n*定时器溢出时间{n=0;led1=0; // 0-pwm的时间内P1^7输出低电平}if(n==pwm)led1=1; // pwm-250的时间内P1^7输出高电平
}

------------------------------------------搞事情的分割线------------------------------------------------
折腾了好久,PWM这块总算是有点明白了。接下来打算用一个定时器实现两路PWM波输出。继续加油!

【定时器/中断/PWM】利用一个定时器实现一路PWM波的输出---点亮LED相关推荐

  1. 定时器中断程序 c语言,定时器中断函数的使用

    1.定时器与延时的区别 大家可能会觉得我们用延时函数照样可以实现上一讲代码的实验现象,但是定时器与延时的概念不同,延时函数需要占用CPU的使用权,正在延时的时候其他任务没有CPU的使用权就会拖慢执行效 ...

  2. Android设置多个定时器时只有最后一个定时器有效的问题

    AlarmManager的常用方法有三个: (1)set(int type,long startTime,PendingIntent pi):         该方法用于设置一次性闹钟,第一个参数表示 ...

  3. STM32F103利用定时器编程实现输出一路PWM波形

    目录 一.PWM简介 二.STM32F1 PWM介绍 三.PWM输出配置步骤 四.实现代码 五.实现效果 六.参考资料 一.PWM简介 PWM是 Pulse Width Modulation 的缩写, ...

  4. STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)

    目录 定时器 8个定时器 定时器功能 定时器中断 常用通用定时器的寄存器 定时器中断实验目的: 定时器库函数及步骤 实验程序讲解 PWM 简介 STM32 PWM工作过程 PWM模式1 与 PWM模式 ...

  5. STM32 CubeMx(二)定时器中断和PWM呼吸灯

    STM32 CubeMx(一)时钟树配置与GPIO输入输出 文章目录 1.定时器 1.1 定时器概念 1.2 定时器分类 1.3 定时器功能 1.4 配置过程和编写代码 1.5 代码分享 2.PWM产 ...

  6. STM32L475裸机例程学习 定时器中断和PWM输出实验

    定时器中断和PWM输出实验 所以阿-笔记的重要性哇!之前看过的内容在做后面的内容涉及到了发现没有笔记,看的时间太久远,竟然全部忘记了,真是个悲伤的故事:( 那就重来吧.由于这两个实验都跟TIM定时器关 ...

  7. 【数码管/定时器/中断】一个定时器控制数码管显示

    两种方式实现 /*用定时器以间隔500MS在6位数码管上 依次显示0.1.2.3-.C.D.E.F,重复.*/ /*轮流在每一位数码管上显示*/ --------------------------- ...

  8. 一个按键控制LED闪烁与关闭(定时器中断)

    来源: 单片机简单程序_zhjysx的博客-CSDN博客https://blog.csdn.net/zhjysx/category_11558658.html 作用:用一个开关切换LED闪烁模式以及关 ...

  9. tsm2812通用定时器中断_基于TMS320F2812的双通道高精度伺服系统

    摘 要:设计了一套双通道高精度伺服系统.系统以TMS320F2812为控制核心,采用旋转变压器作为位置检测单元,伺服电机为无槽无刷直流电动机,运用电压空间矢量调制技术实现控制算法.实验结果表明,系统运 ...

最新文章

  1. 【ZJOI2008】树的统计(树链剖分)
  2. 快速人体姿态估计--Pose Proposal Networks
  3. JS监听手机物理返回键,返回到指定页面
  4. Android Studio开发概要记录
  5. php删除多表数据,mysql – 从多个表中删除数据
  6. 【转】 vi常用操作
  7. 青海大学计算机专业在全国排名,青海大学专业排名
  8. Python精选库大全,建议收藏留用!
  9. Windows下C++将各种资源文件引入exe文件(即无需携带很多res资源包)
  10. mysql error innodb_MySQL无法启动: InnoDB Error:unable to create temporary file
  11. 手动实现读写锁(线程级)
  12. Linux下安装mysql(yum、二进制包、源码包)
  13. 天堂2地点坐标(SQL语句,可直接导入数据库)
  14. uni-app 连接蓝牙打印机
  15. 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换的方法
  16. ubuntu mysql的my.cnf_Ubuntu下面MySQL的参数文件my.cnf浅析
  17. 实战:第十五章:摸爬滚打这些年的心路历程
  18. 基于matlab的SMO实现
  19. 【php】注册系统和使用Xajax即时验证用户名是否被占用
  20. 数据可视化--Superset使用示例

热门文章

  1. 事物注解方式: @Transactional
  2. Ubuntu连网的问题
  3. John's trip(POJ1041+欧拉回路+打印路径)
  4. 如何变得有价值,需要突破问题,提高解决各种问题的能力?
  5. jmeter的分布式部署
  6. android UI进阶之仿iphone的tab效果(二)
  7. 软件工程的本质,一点个人理解
  8. 实现跨域访问---同源策略 、常见跨域方法
  9. [Vue.js]实战 -- 电商项目(七)
  10. C++ 虚函数重载多态