欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 這是一個用步進電機做的點光源跟蹤系統,在中斷函數處出問題了。請大佬幫忙看看,謝謝 [打印本頁]

作者: princehao    時間: 2020-11-30 08:54
標題: 這是一個用步進電機做的點光源跟蹤系統,在中斷函數處出問題了。請大佬幫忙看看,謝謝
這是一個用步進電機做的點光源跟蹤系統,同時要在數碼管顯示步進電機的旋轉角度。在中斷函數處出問題了。

  1. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器

  2. typedef unsigned int u16;          //對數據類型進行聲明定義
  3. typedef unsigned char u8;

  4. sbit LSA=P2^2;
  5. sbit LSB=P2^3;
  6. sbit LSC=P2^4;
  7. sbit A1=P1^0;
  8. sbit B2=P1^1;
  9. sbit C3=P1^2;
  10. sbit D4=P1^3;
  11. sbit leftright=P2^1;
  12. #define A_ON {A1=1;B2=0;C3=0;D4=0;}
  13. #define B_ON {A1=0;B2=1;C3=0;D4=0;}
  14. #define C_ON {A1=0;B2=0;C3=1;D4=0;}
  15. #define D_ON {A1=0;B2=0;C3=0;D4=1;}
  16. #define AB_ON {A1=1;B2=1;C3=0;D4=0;}
  17. #define BC_ON {A1=0;B2=1;C3=1;D4=0;}
  18. #define CD_ON {A1=0;B2=0;C3=1;D4=1;}
  19. #define DA_ON {A1=1;B2=0;C3=0;D4=1;}
  20. #define ABCD_OFF {A1=0;B2=0;C3=0;D4=0;}

  21. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  22.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

  23. u8 sec,min;
  24. u8 DisplayData[8];
  25. /*******************************************************************************
  26. * 函 數 名         : delay
  27. * 函數功能                   : 延時函數,i=1時,大約延時10us
  28. *******************************************************************************/
  29. void delay(u16 i)
  30. {
  31.         while(i--);        
  32. }
  33. void delay1(unsigned int i)        //步進電機延時用
  34. {
  35. while(--i);
  36. }
  37. /*******************************************************************************
  38. * 函 數 名         : Timer0Init
  39. * 函數功能                   : 定時器0初始化
  40. * 輸    入         : 無
  41. * 輸    出         : 無
  42. *******************************************************************************/
  43. void Timer0Init()
  44. {
  45.         TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。

  46.         TH0=0Xd8;        //給定時器賦初值,定時10ms
  47.         TL0=0Xf0;        
  48.         ET0=1;//打開定時器0中斷允許
  49.         EA=1;//打開總中斷
  50.         TR0=1;//打開定時器                        
  51. }


  52. /*******************************************************************************
  53. * 函 數 名         : DigDisplay
  54. * 函數功能                   : 數碼管動態掃描函數,循環掃描8個數碼管顯示
  55. *******************************************************************************/
  56. void DigDisplay()
  57. {
  58.         u8 i;
  59.         for(i=0;i<8;i++)
  60.         {
  61.                 switch(i)         //位選,選擇點亮的數碼管,
  62.                 {
  63.                         case(0):
  64.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位
  65.                         case(1):
  66.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  67.                         case(2):
  68.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位        
  69.                 }
  70.                 P0=DisplayData[i];//發送段碼
  71.                 delay(100); //間隔一段時間掃描        
  72.                 P0=0x00;//消隱
  73.         }
  74. }

  75. void datapros()
  76. {
  77.         DisplayData[0]=smgduan[min/100];
  78.         DisplayData[1]=smgduan[(min/10)%10];
  79.         DisplayData[2]=smgduan[min%10];        

  80. }
  81. void leftright1(char a) //右轉
  82. {
  83. unsigned char i;
  84. for(i=0;i<a;i++)
  85. {
  86. A_ON
  87. delay1(1500);
  88. sec--;
  89. B_ON
  90. delay1(1500);
  91. sec--;
  92. C_ON
  93. delay1(1500);
  94. sec--;
  95. D_ON
  96. delay1(1500);
  97. sec--;
  98. }
  99. }
  100. void leftright2(char a) //左轉
  101. {
  102. unsigned char i;
  103. for(i=0;i<a;i++)
  104. {
  105. D_ON
  106. delay1(1500);
  107. sec++;
  108. C_ON
  109. delay1(1500);
  110. sec++;
  111. B_ON
  112. delay1(1500);
  113. sec++;
  114. A_ON
  115. delay1(1500);
  116. sec++;
  117. }
  118. }
  119. /*******************************************************************************
  120. * 函 數 名       : main
  121. * 函數功能                 : 主函數
  122. * 輸    入       : 無
  123. * 輸    出             : 無
  124. *******************************************************************************/
  125. void main()
  126. {        
  127.         Timer0Init();  //定時器0初始化
  128.                     leftright=1;
  129.         while(1)
  130.         {
  131. if(leftright==1)
  132. {
  133. leftright2(1);
  134. }
  135. if(leftright==0)
  136. {
  137. leftright1(1);
  138. }
  139.                 datapros();
  140.                 DigDisplay();                        
  141. }

  142. /*******************************************************************************
  143. * 函 數 名         : void Timer0() interrupt 1
  144. * 函數功能                   : 定時器0中斷函數
  145. * 輸    入         : 無
  146. * 輸    出         : 無
  147. *******************************************************************************/
  148. void Timer0() interrupt 1(這里出錯了)
  149. {
  150.         TH0=0Xd8;        //給定時器賦初值,定時10ms
  151.         TL0=0Xf0;
  152.         if(sec>=11)  //
  153.         {
  154.                 min++;
  155.                 if(sec<0)
  156.                 {
  157.                         min=0;
  158.                         if(min>360)
  159.                         {
  160.                                 min=0;
  161.                         }
  162.                 }        
  163.         }        
  164. }
復制代碼

軟件顯示Build target 'Target 1'
compiling main.c...
MAIN.C(169): error C141: syntax error near 'void'
Target not created在最后一個中斷函數處

作者: cccc888    時間: 2020-11-30 11:08
c141 記號錯誤,
主函數最后加上一個花括號‘}’就可以編譯。
作者: 器車人    時間: 2020-11-30 11:14
沙發正解
作者: princehao    時間: 2020-11-30 11:46
cccc888 發表于 2020-11-30 11:08
c141 記號錯誤,
主函數最后加上一個花括號‘}’就可以編譯。

謝謝,可以了
作者: zeyu001    時間: 2020-11-30 11:53
c141記號有問題 主函數最后少了一個} 加了應該就可以了




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1