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

標題: 為什么STC12C5A雕刻機固件和上位機連不上 求幫助 [打印本頁]

作者: 啊哈哈哈啊哈    時間: 2020-2-6 21:25
標題: 為什么STC12C5A雕刻機固件和上位機連不上 求幫助
本帖最后由 啊哈哈哈啊哈 于 2020-2-7 10:43 編輯

為什么STC12C5A雕刻機固件和上位機連不上,剛從網上下了個智成雕刻機上位機和固件下進去了,就是連不上,有沒有高手幫忙看看程序有問題嗎?

21ic下載_基于51單片機的三軸雕刻機上位機 使用說明 keil源碼.rar

3.86 MB, 下載次數: 20, 下載積分: 黑幣 -5


作者: 啊哈哈哈啊哈    時間: 2020-2-7 10:44
  #include <STC12C5A60S2.H> #define uchar unsigned char #define uint unsigned int #define FOSC 12000000L      //System frequenc #define BAUD 2400           //UART baudrate sbit dirx=P1^0;        //方向 sbit stepx=P1^1;       //脈沖 sbit diry=P1^2;        //方向 sbit stepy=P1^3;       //脈沖 sbit hongwai=P1^4;       //紅外管 uint x=0; uint y=0; bit ruoguang=1;           //弱光定位 uchar shuju[5];//頭,功能碼,顏色,附加參數,lrc uchar lrc(uchar *shu,chang)                  //lrc校驗 {         uchar ii=0,ff=0;         for(ii=0;ii<chang;ii++)         {                 ff=ff+shu[ii];         }         ff=~ff+1;         return ff; }  void yanshi(uint a)                                //短時間延時 {                 while(a--);         } void yanshi2(uint a)                        //長時間延時 {                 uchar j=100;         while(a--)         {                 j=100;                 while(j--);         }                  } void UartInit(void)                //2400bps@12.000MHz {     SCON = 0x50;            //8-bit variable UART       TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode     TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule     TR1 = 1;                //Timer1 start run     ES = 0;                 //Enable UART interrupt     EA = 0;                 //Open master interrupt switch } void go(bit l)//1為X,0為Y.每調用一次相應的軸走一個像素,對應步進電機走8個脈沖 {         uchar i=0;         if(l)         {                 for(i=0;i<8;i++)                 {stepx=1;yanshi(1000);stepx=0;yanshi(1000);}//一個像素走8步         }         else         {                 for(i=0;i<8;i++)                 {stepy=1;yanshi(1000);stepy=0;yanshi(1000);        }         } } void zhixing()                        //對上位機發來的數據進行處理 {         uint j=0;         switch(shuju[1])         {                 case 1:                         //x軸減1                         dirx=0;go(1);                 break;                 case 2:                         //x軸加1                         dirx=1;go(1);                 break;                 case 3:                         //Y軸減1                         diry=1;go(0);                 break;                 case 4:                         //Y軸加1                         diry=0;go(0);                 break;                 case 5:                         //復位系統的x,y坐標,上位機和下位機都復位到0,0.                         x=0;y=0;                 break;                 case 6:                         //點燈亮燈                         j=shuju[2];                         j=j<<8;                         j=j|shuju[3];                                  hongwai=1;                         yanshi2(j);                         hongwai=0;                 break;                 case 7:                          //打開弱光定位,這個很實用哦                         ruoguang=1;                 break;                 case 8:                          //關閉弱光定位,這個很實用哦                         ruoguang=0;                 break;         }         shuju[0]=0;                 //每次執行完,清空接受數組         shuju[1]=0;         shuju[2]=0;         shuju[3]=0;         shuju[4]=0; } void main() {         uchar shu=0,jishu=0;         hongwai=0;         UartInit();         while(1)                        //大循環         {                                                  while(!RI)                                          //在這個循環里,實現弱光定位                 {                                                        //原理很簡單撒,就是在紅外管                         if(ruoguang)                        //端口發出不同占空比的方波就行了。                         {                                                //單片機的大部分時間都是在這個循環里。                                 hongwai=1;                                 yanshi(34);                                 hongwai=0;                                 yanshi(30);                         }                 }                 RI=0;                 shu = SBUF;                                   //有數據過來就讀取                 if(jishu==0)                           //判斷讀數計數器為零的時候                 {                                                   //讀到的數是不是數據頭                         if(shu==0xff)                   //只有第一個數是0xff才往下面讀哦!                         {                                 shuju[0]=0xff;                                 jishu++;                         }                         else                                                           {                                 jishu=0;                   //要不是的話就重新讀。                         }                 }                 else                 {                         shuju[jishu]=shu;           //從第二個數開始就直接放在數組里                         jishu++;                           //然后計數加1.                                                          if(jishu==5)                   //判斷是否讀完4個數                         {                                         jishu=0;                   //讀完后,清零                                 if(lrc(shuju,4)==shuju[4])          //驗證數據                                 {                                         zhixing();                                 //執行命令                                         SBUF=99;                                 //返回確認碼0x63,也就是99                                         while(!TI);                                         TI=0;                                 }                         }                 }                                          } }




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