将单片机接收的信号的低电平,2倍频后发出去(有少许误差,需要适当减少时间长度)。

//测量负脉冲宽度 并2倍频
#include<reg51.h>   //包含51单片机寄存器定义的头文件
sbit u=P3^2;    //将u位定义为P3.2
sbit pwm=P3^7;
unsigned int k1,k2;
/*******************************************
函数功能:主函数
******************************************/    
void main(void)
{
   TMOD=0x11;  //TMOD=0001 0001B,使用定时器T1 T0的模式1
   EA=1;   //开放总中断
   EX0=1;  //允许使用外中断
   IT0=1;  //选择负跳变来触发外中断
    ET0=1;  //允许定时器T0中断
    ET1=1;  //允许定时器T1中断
    TH0=0;  //定时器T0赋初值0
    TL0=0;   //定时器T0赋初值0
    TR0=0;   //先关闭T0
    TH1=0;  //定时器T1赋初值0
    TL1=0;   //定时器T1赋初值0
    TR1=1;   //先开启T1
    IP=0x08;//T1优先级大于T0
    while(1)  
    ; //无限循环, 不停检测输入负脉冲宽度

}
/**************************************************************
函数功能:外中断0的中断服务程序
**************************************************************/
void int0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
   TR0=1;   //外中断一到来,即启动T0计时
    TL0=0;  //从0开始计时
    TH0=0;  //从0开始计时
    while(u==0)  //低电平时,等待T0计时
       ;
//        P0=TL0; //将结果送P0 P1口显示
//        P1=TH0;
   k1=TH0*256+TL0;
        TR0=0;  //关闭T0
 }
/**************************************************************
函数功能:定时器T1的中断服务程序
**************************************************************/
void Time1(void) interrupt 3 using 0 //"interrupt"声明函数为中断服务函数
{
   TF1=0;//清除中断标志位
   k2=k1/2;//2倍频
       TH1=255-k2/256;   //定时器T1的高8位赋初值
    TL1=255-k2%256;  //定时器T1的低8位赋初值
      pwm=~pwm;  //将pwm引脚输出电平取反,产生方波
   TR1=1;                 //启动定时器T1

}

STC51单片机16——将输入信号2倍频相关推荐

  1. 奥克斯空调红外遥控信号编码协议的分析,STC51单片机读红外程序

    2022.9 网上根本找不到资料,没人免费发布,有发布也是要钱的.哎.自己研究吧. 刚买的奥克斯清芯净空调,遥控器型号YKR-T/101,这样子的,手感不错: 用USB示波器抓了波形看了一下,和标准的 ...

  2. STC51单片机23——T2定时器的使用

    /** TF2 定时器2 溢出标志.定时器2 溢出时置位,必须由软件清除. 当RCLK或TCLK=1 时,TF2 将不会置位.TR2 定时器2 启动/ 停止控制位. 置1 时启动定时器.C/T2 定时 ...

  3. 创意发明: 基于STC51单片机超声波测距(精简设计只需三个元件)

    基于STC51单片机超声波测距精简设计只需三个元件(测距模块暂且算做是一个元件吧) 1.所需元件:STC单片机+超声波模块+4位共阳数码管 2.原理:单片机向测距模块trig脚发送20us的高电平触发 ...

  4. STC51单片机学习笔记8——stc12c56 串口显示AD(多路ad)

    stc12c56 串口显示AD(多路ad). AD中断设置 AUXR: ADC_CONTR: //#define ADC_POWER 0x80后面不能加分号,不然就会错.其他定义必须加分号!!! // ...

  5. STC51单片机学习笔记4——stc12c56 串口

    stc12c56 串口(没有用独立波特率发生器,用T1不分频.中断式接受与发送) //烧写程序时,一定要选用外部晶振(烧写软件默认为内部晶振(5M~6M)) //烧写时,有时候写不进去,尝试断开地线, ...

  6. stc51单片机入门 c语言,STC51单片机入门 (C语言)

    51单片机发展主要历程:AT89C51系列--STC89C52系列--STC90系列--STC11系列--STC12系列--STC15F系列--STC15W系列(最新主流),由于STC12系列功能已经 ...

  7. stc51单片机串口接收多字节数据

    stc51单片机串口接收多字节数据 简介 51单片机有2个定时器,一个做串口波特率,一个做数据截止帧延时检测,硬件平台测试使用的是stc8的单片机,但是可以往51移植 代码 #include &quo ...

  8. 【STC开源项目】STC51单片机LRC万用表表制作程序+PCB文件

    [STC开源项目]STC51单片机LRC万用表表制作程序+PCB文件 申明:本项目来源于51黑单片机论坛:http://www.51hei.com/bbs/dpj-175080-1.html 本篇文章 ...

  9. STC51单片机实现蓝牙无线下载程序

    STC51单片机一般是通过串口线下载程序到MCU.但是,有时候单片机放在作品上,串口线不够长,不方便下载,或者频繁拔插单片机,也不方便. 本方法,通过笔记本蓝牙,蓝牙串口模块HC-05,即可实现STC ...

  10. STC51单片机实现IAP远程升级过程分享

    STC51单片机实现IAP远程升级过程分享 1.STC内部ISP更新机制 2.了解51单片机IAP分区 3.IAP分区的调用流程与IAP部分源码: 4.IAP步骤总结 5.源码下载 关于STC单片机I ...

最新文章

  1. java-2018-01-17计划
  2. 3、ShardingSphere 之 Sharding-JDBC 实现水平分库
  3. 练习、C# 结构体、冒泡排序
  4. powerdesigner-建立数据库模型及全局脚本
  5. 基于socketserver实现并发的socket编程
  6. Count Primes
  7. FTP文件上传Java代码实操
  8. WEB前端常用的设计模式总结
  9. 盘点2014年邮件行业大事件
  10. C语言版本STFT/ISTFT
  11. OVM-V1.5 发布,新增对 VMware ESXI 节点的支持
  12. 0开始学py爬虫(学习笔记)(Scrapy框架)(爬取职友集招聘信息)
  13. 正在存储windows支持软件_ibm/lenovoDS3500扩展柜存储管理软件-北京瑞腾世纪科技有限公司...
  14. c语言信封比大小,从C打印信封#
  15. The current epoch, 79 is less than the accepted epoch, 5b
  16. 时间序列的分析及滚动预测代码
  17. ASCII栅格的显示
  18. 这段Rap火了!「中本聪VS汉密尔顿」谁有道理?(附视频)
  19. 浅入浅出代理模式与Spring事务管理
  20. vb6反编译详解_[原创]VB6反编译详解(一)

热门文章

  1. R语言使用rnorm函数生成正太分布数据、使用stem函数可视化茎叶图、茎叶图很直观的表现出数据的分布情况
  2. c# 枚举的定义,枚举的用法,获取枚举值
  3. 要运行python程序要安装什么_求你要我(2)
  4. 趁年轻,多尝试一些富有挑战的工作吧
  5. mmdetection在bbox head中获取epoch值
  6. 还在为英语学习发愁吗?身为程序员的你可能需要这样一份“宝典”(上)
  7. echo和narcissus寓意_希腊神话故事(一)Echo 和 Narcissus
  8. tcp/ip协议的三次握手4次断开
  9. 老徐WEB:js入门学习 - 认识javascript
  10. CS5216 Capstone DP to hdmi 1080p转换器或者转接线设计原理|CS5216 DP转HDMI转换电路原理图