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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

51定時(shí)器問題,初值含參

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:137261 發(fā)表于 2016-11-11 15:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. void InitTimer0()
  2. {
  3.     TMOD = 0x01;
  4.     TH0 = (65536-sum)/256;
  5.     TL0 = (65536-sum)%256;
  6.     EA = 1;
  7.     ET0 = 0;
  8.     TR0 = 1;
  9. }
  10. void Timer0Interrupt() interrupt 1
  11. {
  12.     TH0 = (65536-sum)/256;
  13.     TL0 = (65536-sum)%256;
  14. }
復(fù)制代碼

我想通過主函數(shù)中的計(jì)算得出sum值,然后通過sum值的改變,來實(shí)現(xiàn)定時(shí)器的定時(shí)時(shí)間的改變。請(qǐng)問大神們,為什么我這樣子做并不能產(chǎn)生我需要的值呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

來自 2#
ID:137261 發(fā)表于 2016-11-11 15:21 | 只看該作者
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "stdio.h"
  4. typedef unsigned char uchar;
  5. typedef unsigned int uint;
  6. typedef int bool;
  7. #define false 0
  8. #define true 1
  9. sfr WDT_CONTR=0xe1;    //看門狗寄存器
  10. /***************************************************************
  11. 功能名稱:變量定義
  12. *****************************************************************/
  13. uchar count=0;  //計(jì)數(shù)變量,脈沖標(biāo)識(shí)
  14. uchar lf,ud,zo; //lf左右變量,ud上下變量,zo縮放變量
  15. uchar ex=20;//用于定位燈
  16. uint cnt;//用于復(fù)位計(jì)數(shù)
  17. float sa=7.5;//步進(jìn)角
  18. float sm=1;//細(xì)分倍數(shù)
  19. float ms=26.46;//電機(jī)轉(zhuǎn)速 r/s
  20. float t=4;//翻轉(zhuǎn)倍數(shù)
  21. float sum1;//浮點(diǎn)型定時(shí)器初值
  22. uchar sum;//定時(shí)器初值
  23. /***************************************************************
  24. 功能名稱:引腳定義
  25. ***************************************************************/

  26. sbit cw_lf=P2^2;//左右電機(jī)方向
  27. sbit clk_lf=P2^3 ;//左右電機(jī)脈沖
  28. sbit cw_ud=P2^4;//上下電機(jī)方向
  29. sbit clk_ud=P2^5 ;//上下電機(jī)脈沖
  30. sbit cw_zo=P2^6;//縮放電機(jī)方向
  31. sbit clk_zo=P2^7 ;//縮放電機(jī)脈沖                                                       

  32.                                                                                  

  33.                                                      
  34. sbit _left=P0^0;     //左右電機(jī)左限位
  35. sbit _right=P0^1;     //左右電機(jī)右限位
  36. sbit _up=P0^2;   //上下電機(jī)上限位
  37. sbit _down=P0^3;     //上下電機(jī)下限位
  38. sbit _small=P0^4;   //縮放電機(jī)升限位
  39. sbit _big=P0^5;   //縮放電機(jī)降限位
  40. sbit _reset=P1^6;          //復(fù)位
  41. sbit control=P1^7; //定位燈控制                                                  

  42.                
  43. sbit en_lf=P3^0;    //左右電機(jī)始能
  44. sbit en_ud=P3^1;  //上下電機(jī)始能
  45. sbit en_zo=P2^0;  //縮放電機(jī)始能
  46. sbit LED=P2^1;     //定位燈
  47. sbit BZ=P3^4;  //蜂鳴器報(bào)警
  48. sbit scl=P3^6; //時(shí)鐘線
  49. sbit sda=P3^7;  //數(shù)據(jù)線


  50. /***************************************************************
  51. 功能名稱:初始化引腳函數(shù)
  52. 函數(shù)名稱:init
  53. 輸入:
  54. 輸出:
  55. 作者:
  56. 備注:
  57. ***************************************************************/
  58. void  init()
  59. {
  60.     en_ud=0;//上下模塊使能
  61.     en_zo=0;//縮放模塊使能
  62.     en_lf=0;         //左右模塊使能
  63.                 LED=1;                //定位燈使能
  64.                 BZ=1;                        //蜂鳴器初值
  65. }
  66. /***************************************************************
  67. 功能名稱:定時(shí)器100us
  68. 函數(shù)名稱:InitTimer0
  69. 輸入:
  70. 輸出:clk_lf,clk_ud,clk_zo,cnt
  71. 作者:
  72. 備注:
  73. ***************************************************************/
  74. void InitTimer0()
  75. {
  76.     TMOD = 0x01;
  77.     TH0 = (65536-100)/256;
  78.     TL0 = (65536-100)%256;
  79.     EA = 1;//總中斷打開
  80.     ET0 = 0;//定時(shí)器中斷打開
  81.     TR0 = 1;//定時(shí)器開關(guān)打開
  82. }
  83. void Timer0Interrupt() interrupt 1
  84. {
  85.     TH0 = (65536-sum)/256;
  86.     TL0 = (65536-sum)%256;
  87.                 lf++;//左右
  88.                 ud++;//上下
  89.                 zo++;//縮放       
  90.                 cnt++;//復(fù)位用自增長變量
  91.                 if(count==1||count==4)
  92.                 {
  93.                 //左右脈沖頻率
  94.                         if(lf==4)
  95.                         {clk_lf=1;}
  96.                         else if(lf>=8)
  97.                         {
  98.                                 clk_lf=0;
  99.                                 lf=1;
  100.                         }       
  101.                 }
  102.                 if(count==2||count==4)//7/14
  103.                 {
  104.                         //上下脈沖頻率
  105.                         if(ud==7)
  106.                         {clk_ud=1;}
  107.                         else if(ud>=14)
  108.                         {
  109.                                 clk_ud=0;
  110.                                 ud=1;
  111.                         }
  112.                 }
  113.                 if(count==3)
  114.                 {
  115.                         //縮放脈沖頻率
  116.                         if(zo==7)
  117.                         {clk_zo=1;}
  118.                         else if(zo>=14)
  119.                         {
  120.                                 clk_zo=0;
  121.                                 zo=1;
  122.                         }
  123.                 }
  124. }

  125. /***************************************************************
  126. 功能名稱:電機(jī)控制函數(shù)
  127. 函數(shù)名稱:Control_Motor
  128. 輸入:P1,限位信號(hào)
  129. 輸出:電機(jī)運(yùn)行與停止
  130. 作者:
  131. 備注:
  132. ***************************************************************/
  133. void Control_Motor()
  134. {
  135.         if(P1==0x20&&_right==1)//左運(yùn)動(dòng)
  136.                 {
  137.                         ET0=1;//定時(shí)器0中斷開關(guān)打開
  138.                         count=1;
  139.                         en_lf=1;//左右電機(jī)使能
  140.                         cw_lf=0;//左右電機(jī)方向       
  141.                 }
  142.         else if(P1==0x10&&_left==1)//右運(yùn)動(dòng)
  143.                 {
  144.                         ET0=1;
  145.                         count=1;
  146.                         en_lf=1;
  147.                         cw_lf=1;
  148.                 }
  149.         else if(P1==0x04&&_up==1)//上運(yùn)動(dòng)
  150.         {
  151.                 ET0=1;//定時(shí)器0中斷開關(guān)打開
  152.                 en_ud=1;//上下電機(jī)使能
  153.                 cw_ud=0;//上下電機(jī)方向
  154.                 count=2;
  155.         }
  156.         else if(P1==0x08&&_down==1)//下運(yùn)動(dòng)
  157.         {
  158.                 ET0=1;
  159.                 en_ud=1;
  160.                 cw_ud=1;
  161.                 count=2;
  162.         }
  163.         else if(P1==0x01&&_small==1)      //縮放升,縮小                        

  164.                                                
  165.         {
  166.                 ET0=1;//定時(shí)器0中斷開關(guān)打開
  167.                 en_zo=1;//縮放使能
  168.                 cw_zo=0;//縮放方向
  169.                 count=3;
  170.         }
  171.         else if(P1==0x02&&_big==1)     //縮放降,放大                            

  172.                                                
  173.         {
  174.                 ET0=1;               
  175.                 en_zo=1;
  176.                 cw_zo=1;
  177.                 count=3;
  178.         }
  179.         else if(P1==0x18&&_left==1&&_down==1)//左上
  180.         {
  181.                 ET0=1;//定時(shí)器0中斷開關(guān)打開
  182.                 count=4;
  183.                 en_lf=1;//左右電機(jī)使能
  184.                 cw_lf=1;//左右電機(jī)方向
  185.                 en_ud=1;//上下電機(jī)使能
  186.                 cw_ud=1;//上下電機(jī)方向       
  187.         }
  188.         else if(P1==0x28&&_right==1&&_down==1) //右上
  189.         {
  190.                 ET0=1;//定時(shí)器0中斷開關(guān)打開
  191.                 count=4;
  192.                 en_lf=1;//左右電機(jī)使能
  193.                 cw_lf=0;//左右電機(jī)方向
  194.                 en_ud=1;//上下電機(jī)使能
  195.                 cw_ud=1;//上下電機(jī)方向               
  196.         }
  197.         else if(P1==0x14&&_left==1&&_up==1) //左下
  198.         {
  199.                 ET0=1;//定時(shí)器0中斷開關(guān)打開
  200.                 count=4;
  201.                 en_lf=1;//左右電機(jī)使能
  202.                 cw_lf=1;//左右電機(jī)方向
  203.                 en_ud=1;//上下電機(jī)使能
  204.                 cw_ud=0;//上下電機(jī)方向
  205.         }
  206.         else if(P1==0x24&&_right==1&&_up==1)//右下
  207.         {
  208.                 ET0=1;//定時(shí)器0中斷開關(guān)打開
  209.                 count=4;
  210.                 en_lf=1;//左右電機(jī)使能
  211.                 cw_lf=0;//左右電機(jī)方向
  212.                 en_ud=1;//上下電機(jī)使能
  213.                 cw_ud=0;//上下電機(jī)方向
  214.         }
  215.         else
  216.                 {
  217.                         en_lf=0;en_ud=0;en_zo=0;ET0=0;count=0;
  218.                 }
  219. }
  220. /***************************************************************
  221. 功能名稱:電機(jī)模塊控制
  222. 函數(shù)名稱:
  223. 輸入:flag
  224. 輸出:蜂鳴器以及電機(jī)控制
  225. 作者:
  226. 備注:
  227. ***************************************************************/               
  228. main()
  229. {
  230.         init();              //調(diào)用函數(shù)
  231.         sum1=12500/9*sa/sm/ms/t;
  232.         sum=sum1;
  233.         InitTimer0();        //調(diào)用定時(shí)中斷函數(shù)
  234.         P1=0xFF;
  235.         while(1)
  236.         {
  237.                 Control_Motor();
  238.         }
  239. }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

板凳
ID:7485 發(fā)表于 2016-11-11 20:12 | 只看該作者
中斷函數(shù)不能輸入?yún)?shù),也不能返回參數(shù)。
回復(fù)

使用道具 舉報(bào)

地板
ID:147378 發(fā)表于 2016-11-11 20:51 | 只看該作者
加上EA=1;試一下
回復(fù)

使用道具 舉報(bào)

5#
ID:70330 發(fā)表于 2016-11-12 09:45 | 只看該作者
在void InitTimer0()里去掉    TH0 = (65536-sum)/256;
                                       TL0 = (65536-sum)%256;這兩句,在中斷處理函數(shù)里有就行了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕亚洲精品 | 久草在线 | 中文字幕一区二区三区乱码在线 | 日本久久精品视频 | 91视视频在线观看入口直接观看 | 亚洲一区二区三区四区五区午夜 | 中国一级特黄毛片大片 | 久久免费视频在线 | 一区二区三区在线免费观看 | 欧美日产国产成人免费图片 | 国产免费一区二区三区 | 人人鲁人人莫人人爱精品 | 亚洲精品电影在线 | 欧美一区二区三区在线 | 日韩在线国产 | 久久久久亚洲精品 | 日韩精品一区二区三区四区视频 | 久久久www成人免费无遮挡大片 | 亚洲欧美激情国产综合久久久 | 久久久久久亚洲精品 | 国产一区二区三区www | 999久久久免费精品国产 | 日日夜夜天天 | 九九导航| 久久久人成影片一区二区三区 | 欧美成人精品在线观看 | 国产成都精品91一区二区三 | 国产小视频在线 | 国产精品免费一区二区三区四区 | 成人三级av | 成人在线亚洲 | 天天爽天天操 | 色影视 | 欧美一区二区三区免费电影 | www.黄网 | 亚洲九色 | 丁香一区二区 | 精品一区二区三区免费视频 | 国产一区二区在线播放 | 亚洲一区 中文字幕 | 久久国产精品视频 |