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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)串口二波特率250000接收,轉(zhuǎn)串口-9600到電腦串口助手

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
串口二波特率250000接收,轉(zhuǎn)串口一9600到電腦串口助,使用STC8H1K08單片機(jī),IRC時(shí)鐘30MHz。由于存儲(chǔ)空間有限,串口緩存是20字節(jié)。15.6ms 以內(nèi)的數(shù)據(jù)判斷為一包,超過15.6毫秒的數(shù)據(jù),判斷為下一包數(shù)據(jù),下次再打印到串口助手。


單片機(jī)源程序如下:
  1. #include "all.h"

  2. u8 xdata Uart_2R_1T_Buffer[Down_MAX];//串口緩存數(shù)組,串口2接收,串口1發(fā)送

  3. void Timer0_Init()
  4. {
  5.         AUXR &= 0x7F;                                                //定時(shí)器時(shí)鐘12T模式
  6.         TMOD &= 0xF0;                                                //設(shè)置定時(shí)器模式
  7.         TMOD |= 0x02;                                                //設(shè)置定時(shí)器模式
  8.         TL0 = 0x83;                                                        //設(shè)置定時(shí)初始值
  9.         TH0 = 0x83;                                                        //設(shè)置定時(shí)重載值
  10.         TF0 = 0;                                                        //清除TF0標(biāo)志
  11.         TR0 = 1;                                                        //定時(shí)器0開始計(jì)時(shí)
  12.         ET0=1;
  13.         EA=1;                                                                //中斷總開關(guān)必須閉合導(dǎo)通
  14. }

  15. //*********************************《人人學(xué)會(huì)單片機(jī)》視頻教程,祁緒電子2021-10
  16. //時(shí)間管理函數(shù),用于數(shù)據(jù)包區(qū)分頭尾,可以用定時(shí)器中斷代替本函數(shù)。
  17. //*********************************《人人學(xué)會(huì)單片機(jī)》視頻教程,祁緒電子2021-10
  18. void Timer0_Rountine(void) interrupt 1
  19. {
  20.         static u8 idata count1;
  21.         count1++;
  22.         if(count1>20)                                                //調(diào)整count值,使Uart_Timer每大約每1ms增加1。
  23.         {        
  24.                 count1=0;               
  25.                 Uart_Timer++;                                        //需要確保大約每1ms增加1
  26.                 if(Uart_Timer==15)                                //用于識(shí)別幀間隔,50ms定時(shí)
  27.                 {
  28.                         Uart1_Flag=1;                                //標(biāo)志位允許發(fā)送下一次發(fā)送
  29.                         Uart1_Up_Data_Drive();                //調(diào)用串口發(fā)送函數(shù)(但不是每次都發(fā)送數(shù)據(jù))
  30.                 }
  31.                 if(Uart_Timer==50)                                //用于識(shí)別幀間隔,50ms定時(shí)
  32.                 {
  33.                         Down_Count=0;                                //一幀數(shù)據(jù)包字節(jié)的位置歸0,表示首字節(jié)
  34.                 }
  35.                 if(Uart_Timer>50)                                //用于識(shí)別幀間隔,50ms定時(shí)
  36.                 {
  37.                         Uart_Timer=51;                                //超時(shí)等待,防止大于255歸0
  38.                 }
  39.         }
  40.         Uart1_Up_Data_Drive();                                //調(diào)用串口發(fā)送函數(shù)(但不是每次都發(fā)送數(shù)據(jù))
  41. }

  42. void main()
  43. {
  44.         P1M0=0;P1M1=0;
  45.         Timer0_Init();
  46.         Uart1_Init();
  47.         Uart2_Init();
  48.         while(1)
  49.         {
  50.                
  51.         }
  52. }
復(fù)制代碼
  1. #include "all.h"                                                                                         //從工程目錄下》c_and_h文件夾查找all文件
  2. bit Uart1_Flag=1;

  3. void Uart1_Init()
  4. {
  5.         SCON = 0x50;                //8位數(shù)據(jù),可變波特率
  6.         AUXR &= 0xBF;                //定時(shí)器時(shí)鐘12T模式
  7.         AUXR &= 0xFE;                //串口1選擇定時(shí)器1為波特率發(fā)生器
  8.         TMOD &= 0x0F;                //設(shè)置定時(shí)器模式
  9.         TL1 = 0xBF;                //設(shè)置定時(shí)初始值
  10.         TH1 = 0xFF;                //設(shè)置定時(shí)初始值
  11.         ET1 = 0;                //禁止定時(shí)器%d中斷
  12.         TR1 = 1;                //定時(shí)器1開始計(jì)時(shí)
  13.         
  14.         ES=1;                                                                                                        //允許 串口1 向CPU申請(qǐng)中斷
  15.                                                                                                                         //總中斷控制開關(guān)閉合EA=1;
  16. }//*/


  17. void Uart1_Up_Data_Drive()
  18. {
  19.         static u8 xdata count=0;
  20.         if(Uart1_Flag)                                                //標(biāo)志允許,發(fā)送一個(gè)字節(jié)
  21.         {
  22.                 Uart1_Flag=0;                                        //標(biāo)志位翻轉(zhuǎn),只允許發(fā)送一個(gè)字節(jié),避免擁擠
  23.                 if(count<=Down_Count)
  24.                 {
  25.                         SBUF=Uart_2R_1T_Buffer[count];//每次只發(fā)送一個(gè)字節(jié)
  26.                         count++;                                        //字節(jié)編號(hào)增加。
  27.                 }
  28.                 else
  29.                 {
  30.                         Uart1_Flag=0;                                //大于最多發(fā)送數(shù)量,不發(fā)送了
  31.                         count=0;                                        //串口TI不會(huì)置1,所以不再發(fā)送
  32.                 }
  33.         }
  34. }


  35. void Uart1_Routine() interrupt 4
  36. {
  37.         if(RI)                                                                                                        //如果是接收中斷
  38.         {
  39.                 RI=0;                                                                                                //清0標(biāo)志
  40.         }
  41.         if(TI)                                                                                                        //否則應(yīng)該是發(fā)送后的中斷
  42.         {
  43.                 TI=0;                                                                                                //清發(fā)送中斷標(biāo)志
  44.                 Uart1_Flag=1;                                                                                //標(biāo)志位允許發(fā)送下一次發(fā)送
  45.                 Uart1_Up_Data_Drive();                                                                //馬上發(fā)送下一位數(shù)據(jù)
  46.         }
  47. }//*/
復(fù)制代碼
Keil5代碼下載:
STC8H單片機(jī)串口2轉(zhuǎn)串口1.zip (44.81 KB, 下載次數(shù): 15)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:884042 發(fā)表于 2022-7-29 21:55 | 只看該作者
您好,請(qǐng)問可以做一個(gè)STC單片機(jī)sram擴(kuò)展的教程嗎?STC單片機(jī)內(nèi)部的sram太少了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久亚洲精品 | 中文字幕av亚洲精品一部二部 | 99在线观看视频 | 欧美a在线 | 91精品国产777在线观看 | 久久99精品久久久久久 | 日韩一区二区三区在线观看 | 国产成人精品一区二区三区四区 | 精品综合久久久 | 国产四区| 久久综合久色欧美综合狠狠 | 日韩av在线免费 | 一区二区三区视频在线 | 亚洲精品久| 青青久在线视频 | 久在线视频 | 亚洲免费网| 成人区精品 | 亚洲精品日韩在线 | 成人在线一区二区 | 国产精品综合色区在线观看 | 成人免费在线视频 | 中文字幕在线免费观看 | 欧美一级在线观看 | 国户精品久久久久久久久久久不卡 | 欧美a级成人淫片免费看 | 久久精品99国产精品 | 成人一区在线观看 | 国产精品嫩草影院精东 | 91在线看 | 国产精品久久久久久久久久久久 | 久久www免费视频 | 高清国产午夜精品久久久久久 | 亚洲成人网在线 | 亚洲国产情侣自拍 | 久久蜜桃av | 亚洲精品综合 | 91在线精品秘密一区二区 | 精品自拍视频在线观看 | 亚洲黄色片免费观看 | 日韩av中文 |