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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2199|回復(fù): 6
收起左側(cè)

51單片機(jī)通過(guò)串口實(shí)現(xiàn)雙機(jī)通信的問(wèn)題

[復(fù)制鏈接]
ID:650067 發(fā)表于 2020-3-29 22:17 | 顯示全部樓層 |閱讀模式
我用主機(jī)的點(diǎn)陣弄了個(gè)9-0秒的倒計(jì)時(shí),從機(jī)給主機(jī)發(fā)送按鍵值(主機(jī)倒計(jì)時(shí)是用定時(shí)器0,串口用了定時(shí)器一,串口的通信是ok的)。
我要實(shí)現(xiàn)的功能是:從機(jī)掃描按下按鍵,主機(jī)開始顯示倒計(jì)時(shí)。
我現(xiàn)在的問(wèn)題是:
我的點(diǎn)陣只能顯示9(不會(huì)變成8),我顯示是放在串口中斷里面,定時(shí)器0只用來(lái)計(jì)時(shí)(50ms一次溢出),串口波特率4800
請(qǐng)問(wèn):1.顯示的函數(shù)應(yīng)該在哪個(gè)地方,中斷還是while循環(huán)
          2.中斷的優(yōu)先級(jí)需不需要改
請(qǐng)大神們幫幫忙。
看看哪里需要修改。

這是單片機(jī)代碼

  1. u8 Time=0,second=0;
  2. u8 Val=0;

  3. void zhongduan_Init(void)
  4. {
  5.         TMOD = 0x21; //開啟定時(shí)器0、1
  6.           TH0 = 0x3C;         //設(shè)置初始值,定時(shí)50ms
  7.           TL0 = 0xB0;
  8.         TH1=0xF3;         //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800
  9.         TL1=0xF3;
  10.           ET0 = 1;  //打開定時(shí)器0中斷
  11.           TR0 = 0;  //不啟動(dòng)定時(shí)器0
  12.         TR1=1;          //打開定時(shí)器1
  13.         SM0=0;//設(shè)置串口工作方式
  14.         SM1=1;
  15.         REN=1;        //打開串口接收中斷
  16.         IP=0x10;
  17.         EA=1;          //打開總中斷
  18.         ES=1;//打開串口中斷
  19.         
  20. }
  21. void main()
  22. {        
  23.         zhongduan_Init();
  24.         while(1)
  25.         {
  26.         }
  27.         
  28. }
  29. void Timer0() interrupt 1                //中斷服務(wù)函數(shù)
  30. {
  31.     TH0 = 0x3C;        
  32.     TL0 = 0xB0;
  33.         Time++;
  34.         if(Time==20)
  35.         {
  36.                 Time=0;
  37.                 second++;        //一秒時(shí)間
  38.                 //if(second>=1)convert();        //心形移位
  39.         }
  40. }
  41. void Usart() interrupt 4
  42. {
  43.         Val=SBUF;
  44.          switch(Val)
  45.         {
  46.                 case 1:
  47.                         display(Val);//顯示
  48.                         break;
  49.         }
  50.         RI=0;
  51. }
  52. [\code]
  53. [code=c]
  54. void display(u8 DATa)//點(diǎn)陣顯示函數(shù)
  55. {        
  56.         u8 j;
  57.         P0=0x7f;
  58.         
  59.         switch(DATa)
  60.         {
  61.                 case 0:                                                //初始畫面
  62.                                 for(j=0;j<8;j++)
  63.                                 {
  64.                                         P0=bubian[j];
  65.                                         Senddata(ten[j]);
  66.                                         delay(10);
  67.                                         Senddata(0x00);//消隱
  68.                                 }
  69.                                 break;
  70.                 case 1:        
  71.                                 show_1();
  72.                                 break;
  73.         }
  74. }
  75. void show_1(void)//倒計(jì)時(shí)顯示
  76. {
  77.         u8 j;
  78.         TR0=1;//開啟定時(shí)器
  79.         
  80.         while(second<10)//時(shí)間一到回到初始頁(yè)面
  81.         {
  82.                 for(j=0;j<8;j++)
  83.                 {
  84.                         P0=bubian[j];
  85.                         Senddata(count[second][j]);
  86.                         delay(5);
  87.                         Senddata(0x00);//消隱
  88.                 }
  89.         }               
  90. }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2020-3-30 08:35 | 顯示全部樓層
顯示函數(shù)還是放在主函數(shù)里好。要顯示的內(nèi)容通過(guò)變量傳遞標(biāo)記即可。串口中斷服務(wù)函數(shù)只需要傳遞顯示標(biāo)記。
回復(fù)

使用道具 舉報(bào)

ID:650067 發(fā)表于 2020-3-30 13:54 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2020-3-30 08:35
顯示函數(shù)還是放在主函數(shù)里好。要顯示的內(nèi)容通過(guò)變量傳遞標(biāo)記即可。串口中斷服務(wù)函數(shù)只需要傳遞顯示標(biāo)記。

好的,謝謝您,但是我現(xiàn)在顯示函數(shù)放在主循環(huán)里面,又有其他問(wèn)題了。
我從機(jī)有幾個(gè)按鍵,按鍵一是開啟點(diǎn)陣倒計(jì)時(shí),按鍵二是顯示幾個(gè)logo,我預(yù)想的效果是顯示完一個(gè)按鍵的東西后回到初始界面,可是這個(gè)串口老是發(fā)東西過(guò)來(lái)(已經(jīng)沒(méi)按按鍵了),導(dǎo)致剛回到初始界面就又開始倒計(jì)時(shí)了,如此反復(fù),請(qǐng)問(wèn)怎么解決比較妥當(dāng)
這是main函數(shù):
void main()
{       
        u8 flag=0;
        zhongduan_Init();
        while(1)
        {
                if(flag==0)
                {
                        switch(Val)
                        {
                                case 1:show_1();flag=1;break;
                                case 2:show_2();flag=1;break;               
                                case 3:show_3();flag=1;break;       
                                case 4:show_4();flag=1;break;       
                                default:show_5();flag=1;break;        //初始畫面
                        }
                }
                if(flag==1)
                {
                        Val=0;
                        flag=0;
                }
        }
       
}
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2020-3-31 08:38 | 顯示全部樓層
nimab 發(fā)表于 2020-3-30 13:54
好的,謝謝您,但是我現(xiàn)在顯示函數(shù)放在主循環(huán)里面,又有其他問(wèn)題了。
我從機(jī)有幾個(gè)按鍵,按鍵一是開啟點(diǎn) ...

我猜是:你的按鍵程序中,沒(méi)有消抖啊,所以就會(huì)有由于抖動(dòng)而產(chǎn)生的好幾個(gè)“按鍵”。機(jī)械按鍵,必須要消抖。
這不是你的完整程序,我只能猜了
回復(fù)

使用道具 舉報(bào)

ID:650067 發(fā)表于 2020-4-1 09:25 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2020-3-31 08:38
我猜是:你的按鍵程序中,沒(méi)有消抖啊,所以就會(huì)有由于抖動(dòng)而產(chǎn)生的好幾個(gè)“按鍵”。機(jī)械按鍵,必須要消抖 ...

你好,我是用Proteus仿真的,而且有消抖
回復(fù)

使用道具 舉報(bào)

ID:650067 發(fā)表于 2020-4-1 09:29 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2020-3-31 08:38
我猜是:你的按鍵程序中,沒(méi)有消抖啊,所以就會(huì)有由于抖動(dòng)而產(chǎn)生的好幾個(gè)“按鍵”。機(jī)械按鍵,必須要消抖 ...

能不能幫我調(diào)試一下,謝謝了

project_3.zip

157.11 KB, 下載次數(shù): 8

回復(fù)

使用道具 舉報(bào)

ID:650067 發(fā)表于 2020-4-1 17:48 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2020-3-31 08:38
我猜是:你的按鍵程序中,沒(méi)有消抖啊,所以就會(huì)有由于抖動(dòng)而產(chǎn)生的好幾個(gè)“按鍵”。機(jī)械按鍵,必須要消抖 ...

我那個(gè)從機(jī)按鍵按下的時(shí)候,要等一會(huì)才有畫面,正常嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧日韩在线观看 | 九九热精品视频 | 99reav| 成人性视频免费网站 | 欧美在线视频免费 | 小早川怜子xxxxaⅴ在线 | 97超碰在线播放 | 国产精品久久久久久模特 | 亚洲一区在线免费观看 | h视频在线观看免费 | 午夜一区 | 国产精品亚洲一区 | 亚洲五码在线 | 日韩一区二区久久 | 国产日产精品一区二区三区四区 | 午夜视频在线观看网址 | 国产精品久久久久婷婷二区次 | 中国一级大黄大片 | 国产盗摄视频 | 久久久青草婷婷精品综合日韩 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 夜夜夜久久 | 午夜免费网站 | 色必久久 | 久久久久免费观看 | 亚洲理论在线观看电影 | 在线中文字幕亚洲 | 911精品美国片911久久久 | 午夜在线观看免费 | 日韩欧美三区 | 宅男伊人| 99r在线 | 亚洲高清在线免费观看 | 亚洲在线中文字幕 | 久久九精品 | 91天堂 | 久久精品小视频 | 中文字幕在线一区二区三区 | 久久不射网 | 久久免费国产 | 亚洲国产精品人人爽夜夜爽 |