久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1652|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

求助:幫助調(diào)試一個(gè)單片機(jī)紅外發(fā)射程序

 關(guān)閉 [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
以前沒有弄過紅外發(fā)射,這兩天惡補(bǔ)了一下,寫了一個(gè)程序調(diào)試中出現(xiàn)了問題,先把程序貼出來:

/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

//==== 紅外遙控器發(fā)射程序 ====//

  At89s52,   晶振12,

  38KHz,    1/38=26.3μS   
  方波高低各50%,也就是:中斷2次: 26.3/2=13.15μS =13μS

  幾個(gè)時(shí)序需要的中斷次數(shù)的計(jì)算:
                     9ms/13μS = 692(次實(shí)現(xiàn))
                   4.5ms/13   = 346
                                  0.56ms/13   = 43
                                  1.69ms/13   = 130

  定時(shí)器初值計(jì)算:
                          初值 = 65536 - (f(晶振) * (y)需定時(shí)數(shù))/ 12(分頻)
            本例:f=12    y=13μS
                        計(jì)算:初值 = 65536-13 = 65523 = fff3

  紅外傳輸發(fā)射協(xié)議:
                          引導(dǎo)碼+16位用戶數(shù)據(jù)碼+8位設(shè)備碼+8位識別反碼

            引導(dǎo)碼: 9ms高電平 + 4.5ms低電平
                        
                        用戶碼和設(shè)備碼中:
                              “1”: 0.56ms高電平 + 1.69ms低電平
                                  “0”: 0.56ms低電平 + 0.56ms低電平


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */

  1. #include "reg52.h"

  2. #define uint16 unsigned int
  3. #define uchar unsigned char

  4. sbit ir_Tr                        =P1^0;                                 //Transmit 發(fā)射                //控制發(fā)射管的 i/o,           
  5. #define ir_Tr_on                ir_Tr  = 0                //ir=0;低電平啟動發(fā)射
  6. #define ir_Tr_off                ir_Tr  = 1

  7. sbit ir_Re                        =P1^1;                                //Receive  接收    //接收管輸出的i/o
  8. #define ir_Re_True                ir_Re == 1                //接收到信號
  9. #define ir_Re_Fales                ir_Re == 0

  10. sbit led                        = P1^3;                                //接收到信號的指示燈
  11. #define led_on                        led = 0
  12. #define led_off                        led = 1


  13. bit ir_Tr_on_flag=0;                                        //發(fā)射標(biāo)志

  14. uchar irsys[4]={0,1,0x12,~0x12};                //16位用戶碼+設(shè)備碼+設(shè)備反碼(這里的數(shù)值是隨意的)
  15. uint16 count, set_count;                                //13μs中斷計(jì)數(shù), 和為得到特定時(shí)序的中斷次數(shù)


  16. //---- 定時(shí)器初始化 ------
  17. void Timer_init()           
  18. {                          
  19.     TMOD=0x11;              //定時(shí)器 0、1:均工作在方式 1;

  20.     TH0=0xfc;               //定時(shí)器 0 :系統(tǒng)1ms 時(shí)標(biāo),晶振=12。 =11.0592時(shí):0xfc66
  21.     TL0=0x18;
  22.     ET0=1;                  //允許 0 中斷
  23.     TR0=1;                  //開中斷 0, 本定時(shí)器常開!!
  24.         
  25.         TH1=0xff;                                //定時(shí)器1為紅外專用:定時(shí)13μs
  26.         TL1=0xf3;
  27.         ET1=1;
  28.         TR1=0;                                        //紅外需要時(shí)打開!!              

  29.         PT1=1;                                        //定時(shí)器1中斷優(yōu)先

  30.     EA=1;                            //開總中斷
  31. }

  32. //---- (定時(shí)器0)中斷:計(jì)時(shí)器 ----
  33. uint16 ms_time=0;                     //ms級計(jì)時(shí)
  34. uchar         s_time=0;                    //秒級計(jì)時(shí)
  35. uint16 msForIr=0;                        //紅外定時(shí)啟動、ms級

  36. void Timer0() interrupt 1              
  37. {
  38.     TH0=0xfc;               //1ms 定時(shí),初值
  39.     TL0=0x18;

  40.         msForIr++;                                
  41.         if(msForIr>=200)                //定時(shí)發(fā)射一次
  42.         {
  43.                 msForIr=0;                        
  44.                 ir_Tr_on;                        //啟動
  45.                 ir_Tr_on_flag=1;        //啟用標(biāo)志
  46.         }

  47.     ms_time++;                        
  48.     if(ms_time==1000)               
  49.         {
  50.                 ms_time=0;
  51.                 s_time++;                         //秒級計(jì)時(shí)
  52. //                SecondFor1820++;

  53.                 if(s_time==60)               
  54.                 {
  55.                         s_time=0;               
  56. //                        MinuteForPump++;        //泵啟動計(jì)時(shí)
  57.                 }
  58.         }
  59. }

  60. //---- (定時(shí)器1)中斷:38KHz紅外專用 -----
  61. void Timer1() interrupt 3              
  62. {
  63.     TH1=0xff;               //13μs 定時(shí) 初值
  64.     TL1=0xf3;

  65.         count++;                                //中斷次數(shù)                                

  66.         ir_Tr=~ir_Tr;                        //方波高、低波換向
  67. }


  68. //----- 發(fā)射計(jì)時(shí) -----
  69. void ir_On()
  70. {
  71.         count=0;                           
  72.         TR1=1;
  73.         while(count<set_count);         //         1
  74.         TR1=0;
  75. }

  76. //----- 發(fā)送一個(gè)字節(jié)(8位)--------
  77. void ir_sendbyte(uchar n)                        
  78. {
  79.         uchar i;
  80.         for(i=0;i<8;i++)
  81.         {
  82.                 if(n & 0x01)                                //發(fā)射高電平         
  83.                 {
  84.                         set_count = 130;               
  85.                 }
  86.                 else                                                //發(fā)射低電平
  87.                 {
  88.                         set_count=43;
  89.                 }

  90.                 ir_On();

  91.                 n>>=1;                                                //從低位開始發(fā)送
  92.         }
  93. }

  94. //---- 發(fā)送數(shù)據(jù) --------
  95. void ir_Send()                                                
  96. {
  97.         uchar i;
  98.         
  99.         set_count=692;                                        //9ms高電平引導(dǎo)   
  100.         ir_On();

  101.         set_count=346;                                        //4.5ms低電平引導(dǎo)   
  102.         ir_On();

  103.         for(i=0;i<4;i++)                                //連續(xù)發(fā)射16位用戶碼和設(shè)備碼及它的反碼
  104.         {
  105.                 ir_sendbyte(irsys[i]);
  106.         }
  107. }

  108. //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

  109. void main()
  110. {
  111.         Timer_init();

  112.         while(1)
  113.         {
  114.                 if(ir_Tr_on_flag)                        //發(fā)射
  115.                 {
  116.                         ir_Send();
  117.                         ir_Tr_on_flag=0;
  118.                         ir_Tr_off;               
  119.                 }

  120.         if(ir_Re_True)                                //接收
  121.         {
  122.                         led_on;
  123.         }
  124.         else
  125.         {
  126.                         led_off;
  127.         }
  128.         }
  129. }


  130. //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
復(fù)制代碼



問題是:
紅外發(fā)射專用計(jì)時(shí)器(定時(shí)器1)出現(xiàn)如下情況,看圖:

=================================




==================================


===============================
上圖的定時(shí)器值是FF,FA;再一個(gè)單步就是下圖的00 04 了,再一單步就重裝初值。
這個(gè)定時(shí)器初值是TH1=0XFF,  TL1=0XF3,  定時(shí)13μs,重裝初值時(shí)TH1是不應(yīng)該變的,
由于這一變,定時(shí)值變?yōu)榱?2μs,多出了9μs,
實(shí)際定時(shí)值是通過上圖所示的sec算出的,定時(shí)器1工作方式1,換成工作方式0也不行,
弄一天 了,找不出原因了,望高手們出手相幫,先謝謝了!!

截圖06.JPG (27.72 KB, 下載次數(shù): 63)

截圖06.JPG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:134430 發(fā)表于 2020-7-24 23:41 | 只看該作者
補(bǔ)充一下,問題是在程序運(yùn)行到 void ir_on() 時(shí)出現(xiàn)

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产一区二区三区 | 无码一区二区三区视频 | 成人免费网视频 | 亚洲国产精品一区 | 米奇成人网 | 久久精品亚洲欧美日韩久久 | 欧美日韩在线观看一区 | 中国美女一级黄色片 | 国产日韩精品久久 | 亚洲国产精品99久久久久久久久 | 美女天天操 | 久久伊| 午夜国产在线 | 久艹av | aaaa网站 | 精品国产一区二区三区久久久蜜月 | 久草免费视 | 亚洲免费网站 | 欧美一区二区三区四区五区无卡码 | 国产98色在线 | 日韩 | 国产精品毛片一区二区在线看 | 国产精品欧美一区二区三区不卡 | 国产精品久久久久久久久久免费看 | 日韩欧美在线视频 | 久久伊 | 激情一区二区三区 | 99精品国产在热久久 | 日韩色视频 | av在线成人 | 久久精品国产一区二区 | 国产精品久久久久久av公交车 | 欧美一区二区在线 | 成人高清在线视频 | 中文字幕第三页 | 免费簧片视频 | 91在线视频播放 | 国产日韩一区二区三区 | 夜夜夜久久久 | 91麻豆精品国产91久久久久久 | 国产激情网站 | 在线看片福利 |