cs沙龙国际网上娱乐场: [参考设计] 几种方波方法及脉冲计数

永利游戏开户直营
15|5
楼主
if(DeviceFlag == 0x55)
  {
   amount++;
     switch(amount%2)
     {
        case 1: Command_Out =1; break;
        case 0: Command_Out =0; break;
     }
     if(amount==8)//16*8=128ms
     {  
        amount=0;
        DeviceStatus = TurnOn;
        DeviceFlag = 0xFF;
     }
}
//发出波形的方式很多种,

沙发
 楼主 | 2019-11-8 15:07 | 只看该作者
1、可用两个定时器,cs沙龙国际网上娱乐场:第一用作定时占空比,并且执行一次就关闭,由另外一个定时器开启,另外一个定时器作为定时周期。

  1. //----------发送命令变量----------------------------
  2. static unsigned int  current;                  //延时计数器
  3. static unsigned char irdata_silent[]={0,1,0,1,2,0,1,0,1,2,0,1,0,1,2};   //kaiji指令
  4. static unsigned char irdata_TurnOn[]={1,0,1,0,2,1,0,1,0,2,1,0,1,0,2};//guanji zhiling
  5. /***************************************************************
  6. *总体格式:静默指令(共三帧指令):0101 S 0101 S 0101 S(左移) ASASAS
  7. * 开启指令(共三帧指令):1010 S 1010 S 1010 S(左移) 5S5S5S
  8. *左移:0101,0x05,开;1010,0x0A,关;“S”代码(STOP):1mS高电平+9mS低电平
  9. ***************************************************************/
  10. void SendCommand(unsigned char data)
  11. {
  12.     p_irdate = data;
  13.     switch(p_irdate)
  14.     {
  15.        case 0:     Timer01_Init();   //1ms
  16.                    Timer35_Init();   //5ms
  17.                    break;
  18.        case 1:     Timer04_Init();   //4ms            
  19.                       Timer35_Init();   //5ms
  20.                    break;
  21.       case 2:     Timer01_Init();   //1ms
  22.                   Timer310_Init();  //10ms
  23.                   break;
  24.     }
  25.     T0CONbits.TMR0ON = 1;
  26.     T3CONbits.TMR3ON = 1;
  27.     Command_Out = 1;
  28. }
  29. /*******************************
  30. *中断处理函数
  31. *******************************/
  32. #pragma code high_vector=0x08
  33. void interrupt_at_high_vector(void)
  34. {
  35.     _asm goto high_isr _endasm
  36. }
  37. #pragma code

  38. #pragma code low_vector=0x18
  39. void interrupt_at_low_vector(void)
  40. {
  41.     _asm goto low_isr _endasm
  42. }
  43. #pragma code

  44. #pragma interrupt high_isr
  45. void high_isr(void)  //TMR0
  46. {
  47.     if(INTCONbits.TMR0IF==1)      
  48.       {
  49.            INTCONbits.TMR0IF=0;
  50.            Command_Out = !Command_Out;
  51.            mLED_1_Off();
  52.            T0CONbits.TMR0ON = 0;
  53.     }
  54.    
  55. }

  56. #pragma interruptlow low_isr
  57. void low_isr(void)      
  58. {   
  59.     if(PIR2bits.TMR3IF==1)   
  60.       {
  61.            PIR2bits.TMR3IF=0;
  62.            Command_Out = 1;
  63.            mLED_1_On();
  64.            current++;
  65.            if(current<15)
  66.           {
  67.                SendCommand(irdata_silent[current]);
  68.            }
  69.            else
  70.           {   
  71.                           current =0;
  72.                           SendCommand(irdata_silent[current]);//      
  73.              }
  74.           //T3CONbits.TMR3ON = 0;
  75.          //T0CONbits.TMR0ON = 1;
  76.     }
  77. }
复制代码
板凳
 楼主 | 2019-11-8 15:07 | 只看该作者
另外一种是用一个定时器,根据时间分段。
地板
 楼主 | 2019-11-8 15:07 | 只看该作者
PIC18FXXXXX系列单片机的TMR0寄存器的读写编程技巧

TMR0工作原理:Timer0即可用作定时器亦可用作计数器;具体的模式由T0CS位(T0CON<5>)选择。在定时器模式下(T0CS=0),除非选择了不同的预分频值,否则,默认情况下在每个时钟周期该模块的计时都会递增。如果写入TMR0寄存器,那么在随后的两个指令周期内,计时将不再递增。用户可通过将校正后的值写入TMR0寄存器来解决上述问题。通过将T0CS位置1选择计数器模式。在计数器模式下,Timer0可在RA4/T0CKI引脚信号的每个上升沿或下降沿递增。触发递增的边沿Timer0时钟源边沿选择位T0SE(T0CON<4>)决定。清零此位选择上升沿递增。
5
 楼主 | 2019-11-8 15:08 | 只看该作者
TMR0的16位读写过程:TMR0H并不是16位模式下Timer0的高字节,而是Timer0高字节的缓冲寄存器,且不可以被直接读写。在读TMR0L时使用Timer0高字节的内容更新TMR0H.这样可以一次读取Timer0 的高16位,而无需验证读到的高字节和低字节的有效性(在高、低字节分两次连续读取的情况下,由于可能存在进位,因此需要验证读到字节的有效性)。同样,写入Timer0的高字节也是通过TMR0H缓冲寄存器来操作的。在写入TMR0L的同时,使用TMR0H的内容更新Timer0的高字节。这样一次就可以完成Timer0全部16位的更新。
6
 楼主 | 2019-11-8 15:08 | 只看该作者
TMR0的16位读写编程技巧(SP9608-PIC单片机增强型开发板)验证TMR0作为外部计数的程序段:

初始化:

  T0CON=0X3F;将TMR0设置为16位的外部RA4/T0CKI计数功能

      TMR0H=0;

      TMR0L=0;

  T0CONbit.TMR0ON=1;启动TMR0工作

读取TMR0寄存器中的内容,并合成到一个整形变量

      Temp=TMR0L;

      Temp=TMR0H;

      Temp<<==8;

      Temp|=TMR0L;   
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

永利游戏开户直营 快速回复 返回顶部 返回列表
澳门赌场逛街 永利游戏开户直营 网上售彩 首批名单 澳门赌场上海时时乐走势图 女神国际重庆时时彩开奖时刻表
金马国际VR金星1.5分彩彩票官网 宝盈国际娱乐城网上娱乐场 澳门永利网上娱乐场登入 星际快3官方网 申博太阳城官方现金直营网澳门赌场
澳博网址网上娱乐场 澳门口岸到珠海网上娱乐场 汇丰幸运农场时时彩软件 参团澳门游网上娱乐场 申博太阳城VR彩票彩票官网
pt21点 宝马线上娱乐官网游戏 www.msc16.com 金马国际VR彩票百家乐走势 大发888天津快乐十分彩票官网