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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關于單片機的I/O口輸出問題

查看數: 2481 | 評論數: 11 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2019-5-25 10:58

正文摘要:

在keil中生成HEX文件后,用proteus仿真時, P1=0xfe;可以正常輸出; 而 j=0; if(j==0) {    P1=0xfe; } 卻不能正常輸出????

回復

ID:530034 發表于 2019-5-26 18:16
51單片機,我用自制的試驗板,搭好外圍元件,插上仿真頭,硬件仿真,一般寫十幾行代碼,我就要仿真通過,無非就是設置斷點、單步執行、全速執行,只要有錯誤,很快就發現,AVR單片機用自制的JTAG仿真器仿真,雖然難用一些,也總比沒有要好,沒有硬件仿真器
ID:383215 發表于 2019-5-26 00:23
不管是什么單片機,編程查錯效率最高的是硬件仿真,我從來沒有用過proteus,像51單片機,我用自制的試驗板,搭好外圍元件,插上仿真頭,硬件仿真,一般寫十幾行代碼,我就要仿真通過,無非就是設置斷點、單步執行、全速執行,只要有錯誤,很快就發現,AVR單片機用自制的JTAG仿真器仿真,雖然難用一些,也總比沒有要好,沒有硬件仿真器,我寧愿不編程序,查錯效率實在是太低了。
ID:155507 發表于 2019-5-25 20:42
覺得是你P1=a[n]; 這里出了問題了吧
P1=a[n];這里的話數據只顯示了一瞬間就被P0=c[x-1];取代
這兩行之間插入一個延時就可以了。

if(j==0)
                {
                        P1=a[n];
                        delay5ms(x);
                }
                P0=c[x-1];
                delay5ms(x);

ID:383215 發表于 2019-5-25 17:40
既然j=0,那么肯定j==0,被C編譯器優化掉不執行這條語句,這是廢話語句,C編譯器不是傻瓜。你硬要執行,把優化等級降到最低,或者用 volatile定義j。
ID:547037 發表于 2019-5-25 16:58
可能是單片機的驅動壞了
ID:10947 發表于 2019-5-25 16:33
可能j==0這個條件不符合?
ID:393193 發表于 2019-5-25 16:29
zhanghyg 發表于 2019-5-25 15:17
這要結合完整程序來看

這是源程序:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code KEY_TABLE[]={0x11,0x21,0x12,0x22};
uchar code a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code b[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar code c[]={0xfe,0xfd,0xfb,0xf7,0xef};
       
void delay5ms(uint x)
{
        uchar t,ms;
        ms=25*x;
        while(ms--)
                for(t=0;t<120;t++);
}

void delays()
{
        uint s=10000;while(s--);
}

void main()
{
        uchar n,x,temp,key,num,i,j;
        n=0;
        x=5;
        j=0;
        for(;;)
        {
                if(j==0)
                {
                        P1=a[n];
                }
                P0=c[x-1];
                delay5ms(x);
                n=n+1;
                if(n==8)
                        n=0;
                P3=0xf0;
                if(P3!=0xf0)
                {
                        delays();P3=0xf0;
                        if(P3!=0xf0)
                        {
                                temp=P3;
                                P3=0x0f;
                                key=temp|P3;
                                key=0xff-key;
                                for(i=0;i<4;i++)
                                {
                                        if(key==KEY_TABLE)
                                        {
                                                num=i;
                                break;
                                        }
                                }
                                if(num==0)
                                        j=0;
                                if(num==1)
                                        j=n;
                                if(num==2)
                                        x=x-1;
                                if(num==3)
                                        x=x+1;
                        }
                }
        }
}
為什么這時的P1不能正常輸出???
ID:541189 發表于 2019-5-25 16:19
f是不是溢出了
ID:511890 發表于 2019-5-25 15:39
有可能是變量類型問題。。你試試把變量改成int型。或者改成:j=0x00;if(0x00==j){ P1=0xfe;}。當然,有用到P1,include單片機頭文件。
ID:330198 發表于 2019-5-25 15:17
這要結合完整程序來看

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品九九九 | 国产精品精品视频一区二区三区 | 亚洲国产免费 | 成人一区二区三区在线观看 | 91精品国产色综合久久 | 999免费视频 | 亚洲国产成人久久综合一区,久久久国产99 | 91在线视频在线观看 | av手机在线播放 | 91av免费看 | 成人久久久 | 性生生活大片免费看视频 | 日韩乱码av | 黄色网毛片| 伊人在线 | 婷婷在线视频 | 国产专区免费 | 麻豆久久久9性大片 | 欧美福利影院 | 91视频导航 | 日韩午夜场 | 伊人超碰 | 日本不卡一区二区三区在线观看 | 在线观看av网站永久 | 国产精品亚洲第一 | 日本a∨视频 | 91精品国产91久久综合桃花 | 日本精品视频在线观看 | 亚洲日韩视频 | 日韩一区不卡 | 亚洲国产成人av | 亚洲综合在线视频 | www.9191.com | 国产精品久久久久久久久久不蜜臀 | 欧美午夜视频 | www精品美女久久久tv | 国产精品久久久久久久久久久久冷 | 日本久草 | 国产精品久久久久久久免费大片 | 欧美日韩高清 | 91综合网 |