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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)與PC上位機(jī)串行口通信調(diào)不通

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
#include<reg52.h>
#define  uchar  unsigned  char
#define  uint  unsigned  int
#define  zxmaddr  P0
#define  zwmaddr  P2
unsigned  char  flag,a,i;
uchar  code  table[]="The  date  is";/*共陰極數(shù)碼管字形碼,共陽(yáng)極數(shù)碼管取反即可*/

uchar  code  zixing[]={  0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5E,0x79,0x71};/*共陰極數(shù)碼管字形碼,共陽(yáng)極數(shù)碼管取反即可*/
uchar  code  ziwei[]={  0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void  init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void  disp(void)
{
zwmaddr=~ziwei[7];
zxmaddr=~zixing[a&0x0f];
}
void  send_char(unsigned  char  txd)
{
SBUF=txd;
while(!TI);
TI=0;
}
void  main()
{
init();
while(1)
{
disp();
if(flag==1)
{
ES=0;
send_char(a);
ES=1;
flag=0;
}
}
}
void  ser()  interrupt  4
{
RI=0;
a=SBUF;
flag=1;
}



這個(gè)程序?qū)@個(gè)圖為什么不行呢?求指教

QQ截圖20171106155922.png (150.88 KB, 下載次數(shù): 39)

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

使用道具 舉報(bào)

6#
ID:243437 發(fā)表于 2017-11-22 15:11 | 只看該作者
wulin 發(fā)表于 2017-11-7 08:47
程序毛病不是語(yǔ)法問(wèn)題,是語(yǔ)句次序問(wèn)題。flag=0;要放在ES=0;與ES=1;之間,否在會(huì)丟幀。因?yàn)橹袛嘁坏┐蜷_(kāi), ...

謝謝
回復(fù)

使用道具 舉報(bào)

5#
ID:243437 發(fā)表于 2017-11-22 15:10 | 只看該作者
zl2168 發(fā)表于 2017-11-6 21:14
介紹你一個(gè)虛擬仿真案例
單片機(jī)與PC機(jī)虛擬串行通信
先Proteus仿真一下,確認(rèn)有效。以上摘自張志良編著《8 ...

謝謝
回復(fù)

使用道具 舉報(bào)

地板
ID:243437 發(fā)表于 2017-11-22 14:43 | 只看該作者
wulin 發(fā)表于 2017-11-7 08:47
程序毛病不是語(yǔ)法問(wèn)題,是語(yǔ)句次序問(wèn)題。flag=0;要放在ES=0;與ES=1;之間,否在會(huì)丟幀。因?yàn)橹袛嘁坏┐蜷_(kāi), ...

謝謝
回復(fù)

使用道具 舉報(bào)

板凳
ID:243437 發(fā)表于 2017-11-22 14:43 | 只看該作者
zl2168 發(fā)表于 2017-11-6 21:14
介紹你一個(gè)虛擬仿真案例
單片機(jī)與PC機(jī)虛擬串行通信
先Proteus仿真一下,確認(rèn)有效。以上摘自張志良編著《8 ...

謝謝
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2017-11-7 08:47 | 只看該作者
程序毛病不是語(yǔ)法問(wèn)題,是語(yǔ)句次序問(wèn)題。flag=0;要放在ES=0;與ES=1;之間,否在會(huì)丟幀。因?yàn)橹袛嘁坏┐蜷_(kāi),很可能不是執(zhí)行flag=0;,而是先響應(yīng)中斷,再返回執(zhí)行flag=0;,這樣就丟了一幀。改后如下:
void  main()
{
        init();
        while(1)
        {
                disp();
                if(flag==1)
                {
                        ES=0;
                        send_char(a);
                        flag=0;
                        ES=1;
                }
        }
}
回復(fù)

使用道具 舉報(bào)

樓主
ID:111634 發(fā)表于 2017-11-6 21:14 | 只看該作者
本帖最后由 zl2168 于 2017-11-6 21:15 編輯

介紹你一個(gè)虛擬仿真案例
單片機(jī)與PC機(jī)虛擬串行通信
實(shí)驗(yàn)16 與PC機(jī)虛擬串行通信.rar (151.41 KB, 下載次數(shù): 14)

Proteus仿真一下,確認(rèn)有效。以上摘自張志良編著《80C51單片機(jī)實(shí)用教程》ISBN 978-7-04-044532-9,高教社出版。     書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書(shū)上看了。到圖書(shū)館借,或到新華書(shū)店翻閱,或到網(wǎng)上書(shū)店打折購(gòu)買(mǎi)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表